} if (isset($_SESSION['token'])) { $client->setAccessToken($_SESSION['token']); } if ($client->getAccessToken()) { $start_date_reference = array("Monday" => 13, "Tuesday" => 14, "Wednesday" => 15, "Thursday" => 16, "Friday" => 17, "Saturday" => 18, "Sunday" => 19); foreach ($_SESSION['modules'] as $module) { $event = new Event(); $event->setSummary($module['module_code'] . " " . $module['ltype']); $event->setLocation($module['venue']); $start = new EventDateTime(); $start_string = '2012-08-' . $start_date_reference[$module['day_text']] . 'T' . $module['startTime'][0] . $module['startTime'][1] . ':' . $module['startTime'][2] . $module['startTime'][3] . ':00.000+08:00'; $start->setDateTime($start_string); $start->setTimeZone('Asia/Singapore'); $event->setStart($start); $end = new EventDateTime(); $end_string = '2012-08-' . $start_date_reference[$module['day_text']] . 'T' . $module['endTime'][0] . $module['endTime'][1] . ':' . $module['endTime'][2] . $module['endTime'][3] . ':00.000+08:00'; $end->setDateTime($end_string); $end->setTimeZone('Asia/Singapore'); $event->setEnd($end); $event->setRecurrence(array('RRULE:FREQ=WEEKLY;UNTIL=20121117T000000Z;')); $createdEvent = $cal->events->insert('primary', $event); } unset($_SESSION['module']); unset($_SESSION['lessons_counter']); echo "Events added successfully!"; $_SESSION['token'] = $client->getAccessToken(); } else { $authUrl = $client->createAuthUrl(); print "Please<a class='login' href='{$authUrl}'>Login</a>to google to authorize this app"; }
public function createGoogleEvent($action) { // Google Calendar Libraries $timezone = date_default_timezone_get(); require_once 'protected/integration/Google/google-api-php-client/src/Google/autoload.php'; date_default_timezone_set($timezone); $googleCalendar = $this->getGoogleCalendar(); $event = new Event(); $event->setSummary($action->actionDescription); if ($action->allDay) { $start = new EventDateTime(); $start->setDate(date('Y-m-d', $action->dueDate)); $event->setStart($start); if (!$action->completeDate) { $action->completeDate = $action->dueDate + 86400; } $end = new EventDateTime(); $end->setDate(date('Y-m-d', $action->completeDate)); $event->setEnd($end); } else { $start = new EventDateTime(); $start->setDateTime(date('c', $action->dueDate)); $event->setStart($start); if (!$action->completeDate) { $action->completeDate = $action->dueDate + 3600; } // if no end time specified, make event 1 hour long $end = new EventDateTime(); $end->setDateTime(date('c', $action->completeDate)); $event->setEnd($end); } if ($action->color && $action->color != '#3366CC') { $colorTable = array(10 => 'Green', 11 => 'Red', 6 => 'Orange', 8 => 'Black'); if (($key = array_search($action->color, $colorTable)) != false) { $event->setColorId($key); } } $googleCalendar->events->insert($this->googleCalendarId, $event); }
public function updateGoogleCalendarEvent($action) { try { // catch google exceptions so the whole app doesn't crash if google has a problem syncing $admin = Yii::app()->params->admin; if ($admin->googleIntegration) { if (isset($this->syncGoogleCalendarId) && $this->syncGoogleCalendarId) { // Google Calendar Libraries $timezone = date_default_timezone_get(); require_once "protected/extensions/google-api-php-client/src/apiClient.php"; require_once "protected/extensions/google-api-php-client/src/contrib/apiCalendarService.php"; date_default_timezone_set($timezone); $client = new apiClient(); $client->setClientId($admin->googleClientId); $client->setClientSecret($admin->googleClientSecret); $client->setDeveloperKey($admin->googleAPIKey); $client->setAccessToken($this->syncGoogleCalendarAccessToken); $client->setUseObjects(true); // return objects instead of arrays $googleCalendar = new apiCalendarService($client); // check if the access token needs to be refreshed // note that the google library automatically refreshes the access token if we need a new one, // we just need to check if this happend by calling a google api function that requires authorization, // and, if the access token has changed, save this new access token $testCal = $googleCalendar->calendars->get($this->syncGoogleCalendarId); if ($this->syncGoogleCalendarAccessToken != $client->getAccessToken()) { $this->syncGoogleCalendarAccessToken = $client->getAccessToken(); $this->update(); } $summary = $action->actionDescription; if ($action->associationType == 'contacts' || $action->associationType == 'contact') { $summary = $action->associationName . ' - ' . $action->actionDescription; } $event = $googleCalendar->events->get($this->syncGoogleCalendarId, $action->syncGoogleCalendarEventId); $event->setSummary($summary); if ($action->allDay) { $start = new EventDateTime(); $start->setDate(date('Y-m-d', $action->dueDate)); $event->setStart($start); if (!$action->completeDate) { $action->completeDate = $action->dueDate; } $end = new EventDateTime(); $end->setDate(date('Y-m-d', $action->completeDate + 86400)); $event->setEnd($end); } else { $start = new EventDateTime(); $start->setDateTime(date('c', $action->dueDate)); $event->setStart($start); if (!$action->completeDate) { $action->completeDate = $action->dueDate; } // if no end time specified, make event 1 hour long $end = new EventDateTime(); $end->setDateTime(date('c', $action->completeDate)); $event->setEnd($end); } if ($action->color && $action->color != '#3366CC') { $colorTable = array(10 => 'Green', 11 => 'Red', 6 => 'Orange', 8 => 'Black'); if (($key = array_search($action->color, $colorTable)) != false) { $event->setColorId($key); } } $newEvent = $googleCalendar->events->update($this->syncGoogleCalendarId, $action->syncGoogleCalendarEventId, $event); } } } catch (Exception $e) { } }