2014-01-04 2 views
0

Привет, Я работаю над проектом, основанным на управлении событиями, где каждый пользователь хранит детали события с датой начала и окончания. Теперь я хочу, чтобы функция подписалась на настольное приложение (Outlook, Ical для Apple и Google Calendar), чтобы любое новое сохранение события в базе данных автоматически синхронизировалось с настольным приложением. Каков наилучший подход для достижения этой функциональности?URL-адрес подписки в PHP

+0

Если программа для рабочего стола предоставляет веб-api - используй это. Если его можно запустить с помощью параметров - используйте 'shell_exec()'. Если нет - вам нужен «рабочий стол» для автоматизации процесса. –

+0

В принципе, я хочу добиться такой же функциональности, как и в календаре Google, он дает вам URL-адрес, и вы можете легко импортировать его в Outlook или ICAL. –

+0

Я никогда не использовал календарь Google , Но если ссылки с параметрами достаточно для Outlook, то сгенерируйте одну и ту же ссылку? –

ответ

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;