Привет, Я работаю над проектом, основанным на управлении событиями, где каждый пользователь хранит детали события с датой начала и окончания. Теперь я хочу, чтобы функция подписалась на настольное приложение (Outlook, Ical для Apple и Google Calendar), чтобы любое новое сохранение события в базе данных автоматически синхронизировалось с настольным приложением. Каков наилучший подход для достижения этой функциональности?URL-адрес подписки в PHP
0
A
ответ
0
Вот пример кода для создания одного события ческого выхода:
$eventData = array(
'title' => $event->getTitle(),
'address' => $address,
'description' => strip_tags($event->getBody()),
'stage' => $stage,
'date' => $event->getDate()
);
// Build the ics file
$ical= 'BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
CALSCALE:GREGORIAN
BEGIN:VEVENT
DTEND:' . $this->dateToCal($eventData['date']) . '
UID:' . md5($eventData['title']) . '
DTSTAMP:' . time() . '
LOCATION:' . $eventData['address'] . '
DESCRIPTION:' . $eventData['description'] . '
URL;VALUE=URI:http://go.okdo.it' . '
SUMMARY:' . $eventData['title'] . '
DTSTART:' . $this->dateToCal($eventData['date']) . '
END:VEVENT
END:VCALENDAR';
Вот функция, которая форматирует объекты даты в формат ческого:
function dateToCal($timestamp)
{
return date('Ymd\This', time()) . 'Z';
}
Перед выводом контента, вам необходимо установить соответствующие заголовки:
header('Content-type: text/calendar; charset=utf-8');
header('Content-Disposition: attachment; filename=' . $task->getTitle());
echo $ical;
Если программа для рабочего стола предоставляет веб-api - используй это. Если его можно запустить с помощью параметров - используйте 'shell_exec()'. Если нет - вам нужен «рабочий стол» для автоматизации процесса. –
В принципе, я хочу добиться такой же функциональности, как и в календаре Google, он дает вам URL-адрес, и вы можете легко импортировать его в Outlook или ICAL. –
Я никогда не использовал календарь Google , Но если ссылки с параметрами достаточно для Outlook, то сгенерируйте одну и ту же ссылку? –