library/Zend to your web folder require_once 'Zend/Loader.php'; Zend_Loader::loadClass('Zend_Gdata'); Zend_Loader::loadClass('Zend_Gdata_AuthSub'); Zend_Loader::loadClass('Zend_Gdata_ClientLogin'); Zend_Loader::loadClass('Zend_Gdata_Calendar'); $user = 'username@gmail.com'; $pass = 'password'; $service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME; try { $client = Zend_Gdata_ClientLogin::getHttpClient($user,$pass,$service); } catch(Exception $e) { // prevent Google username and password from being displayed // if a problem occurs echo "Could not connect to calendar."; die(); }
Update $user and $pass.
// parameters $calendar_user = '0470gkp8g7ftv8ov5nfvjplrdk%40group.calendar.google.com'; $calendar_visibility = 'private-50642f5681afbb525ed30d2b94b79b4b'; $start_date = '2010-06-01'; $end_date = '2010-06-30'; // build query $gdataCal = new Zend_Gdata_Calendar($client); $query = $gdataCal->newEventQuery(); $query->setUser($calendar_user); $query->setVisibility($calendar_visibility); $query->setSingleEvents(true); $query->setProjection('full'); $query->setOrderby('starttime'); $query->setSortOrder('ascending'); $query->setMaxResults(100); $query->setStartMin($start_date); $query->setStartMax($end_date); // execute and get results $event_list = $gdataCal->getCalendarEventFeed($query);
$calendar_user and $calendar_visibility: calendar dropdown -> Calendar settings -> Private Address -> “XML” link:http://www.google.com/calendar/feeds/$calendar_user/$calendar_visibility/basic
$start_date = $start_date . 'T00:00:00.000-07:00'; $end_date = $end_date . 'T00:00:00.000-07:00';
foreach ($event_list as $event) { // id print $event->id . '<br />'; // title print $event->title . '<br />'; // where print $event->where[0] . '<br />'; // description print $event->content . '<br />'; // when (ex: 2010-06-11T07:30:00.000-07:00) print $event->when[0]->startTime . '<br />'; print $event->when[0]->endTime . '<br />'; print '-----<br />'; }
$query->setSingleEvents(true): if set to false (default), when a single instance of a repeating event is modified, the original instance AND the modified version will be returned// from 2010-06-11T07:30:00.000-07:00 // to 2010-06-11 07:30:00 function date_google_to_sql($str) { $t = explode('T', $str); $date = $t[0]; $time = $t[1]; $time = substr($time, 0, 8); $str = $date . ' ' . $time; return $str; }
// parameters $title = "French revolution celebration"; $where = "at my place"; $description = "only mineral water"; $start_date = "2010-07-14 07:00:00"; $end_date = "2010-07-14 07:00:00"; $calendar_user = 'h9s3qp5al1m5a9440n6ah8c7qs%40group.calendar.google.com'; $tzOffset = '-07'; // timezone offset // build event $start_date = str_replace(' ', 'T', $start_date); $end_date = str_replace(' ', 'T', $end_date); $gdataCal = new Zend_Gdata_Calendar($client); $newEvent = $gdataCal->newEventEntry(); $newEvent->title = $gdataCal->newTitle($title); $newEvent->where = array($gdataCal->newWhere($where)); $newEvent->content = $gdataCal->newContent($description); $when = $gdataCal->newWhen(); $when->startTime = "{$start_date}.000{$tzOffset}:00"; $when->endTime = "{$end_date}.000{$tzOffset}:00"; $newEvent->when = array($when); // insert event $createdEvent = $gdataCal->insertEvent($newEvent, "http://www.google.com/calendar/feeds/$calendar_user/private/full"); // event id $event_id = $createdEvent->id->text;
$calendar_user: same as above// parameters $event_id = 'http://www.google.com/calendar/feeds/h9s3qp5al1m5a9440n6ah8c7qs%40group.calendar.google.com/private-3056301e77adcd8d353a6ea7bc23a4d8/full/nk8jd3jnftoe46lm0sr2da23pk'; // get event $gdataCal = new Zend_Gdata_Calendar($client); $event = $gdataCal->getCalendarEventEntry($event_id);