Posts Tagged ‘ Zend Framework

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);