Example #1
0
 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);
 }
Example #2
0
 public function syncActionToGoogleCalendar($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);
                 $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 = new Event();
                 $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->insert($this->syncGoogleCalendarId, $event);
                 $action->syncGoogleCalendarEventId = $newEvent['id'];
             }
         }
     } catch (Exception $e) {
     }
 }