Zapis zdarzenia do wybranego kalendarza google
Google udostępnia darmową usługę kalendarzy oraz API dzięki któremu można łatwo zapisywać ważne wydarzenia, tworzyć dowolną ilość kalendarzy oraz dzielić się nimi z innym osobami.
Klasy jednego z modułów Zend Framework-a (Zend_Gdata) pozwalają w niezwykle prosty sposób dodać utworzone wydarzenie.
//logowanie
$userCal = 'myemail@gmail.com';
$passCal = 'mypassword';
$service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME;
$client = Zend_Gdata_ClientLogin::getHttpClient($userCal,$passCal,$service);
//Tworzenie wydarzenia
$gdataEvent = new Zend_Gdata_Calendar($client);
$event = $gdataEvent->newEventEntry();
$event->title = $gdataEvent->newTitle('Tytuł');
$event->where = array($gdataEvent->newWhere('Miejsce'));
$event->content = $gdataEvent->newContent('Opis wydarzenia');
$when = $gdataEvent->newWhen();
$when->startTime = '2011-05-31T18:20:30';
$when->endTime = '2011-05-31T19:20:30';
$event->when = array($when);
$gdataEvent->insertEvent($event);
Powyższy kod tworzy wydarzenia w domyślnym kalendarzu, ja jednak potrzebowałem, aby wydarzenia były zapisywane do dowolnie wybranego kalendarza na moim koncie google czego wykonanie nie jest już tak oczywiste. Metoda "insertEvent" obiektu "Zend_Gdata_Calendar" przyjmuje w swoim drugim parametrze url, który stanowi klucz do rozwiązania problemu. Do utworzenia odpowiedniego url-a należy użyć identyfikatora kalendarza, który znajdziemy w ustawieniach każdego z nich.
"Ustawienia kalendarza -> Szczegóły kalendarza (zakładka) -> Adres kalendarza"
Konstrukcja całego adresu oraz metoda zapisująca wydarzenie powinna wyglądać następująco:
$calendarId = "mqfnddswamiq29qmle6mv4edu0%40group.calendar.google.com";
//magiczny url :)
$url = 'https://www.google.com/calendar/feeds/'.$calendarId.'/private/full';
//zapis
$gdataEvent->insertEvent($event, $url);