function GoogleCalendarSync() { require_once 'modules/GoogleSync/GoogleSync.php'; global $timedate; GoogleSync::init(); $usr = new User(); $users = $usr->get_full_list(); foreach ($users as $user) { $client = GoogleSync::getClient($user); if ($client != false) { $service = new Zend_Gdata_Calendar($client); try { $listFeed = $service->getCalendarEventFeed(); foreach ($listFeed as $calendar) { $id = $calendar->id; $googleSync = new GoogleSync(); $list = $googleSync->get_list('', "{$googleSync->table_name}.google_id='{$id}'"); if ($list['row_count'] > 0) { $event = BeanFactory::getBean($list['list'][0]->parent_name); $event->retrieve($list['list'][0]->parent_id); $event->name = $calendar->title->text; if (!preg_match('/event.private$/', $calendar->visibility->value)) { $event->description = $calendar->content->text; } GoogleSync::setDates($event, $calendar->when[0]->startTime, 0); switch ($event->module_dir) { case 'Calls': $event->name = preg_replace('/^Звонок: /ui', '', $calendar->title->text); GoogleSync::setReminder($event, $calendar->when[0]->reminders[0]); GoogleSync::setDuration(&$event, $calendar->when[0]->startTime, $calendar->when[0]->endTime); break; case 'Meetings': $event->name = preg_replace('/^Звонок: /ui', '', $calendar->title->text); GoogleSync::setReminder($event, $calendar->when[0]->reminders[0]); GoogleSync::setDuration(&$event, $calendar->when[0]->startTime, $calendar->when[0]->endTime); $event->location = $calendar->where[0]->valueString; break; case 'Tasks': $event->name = preg_replace('/^Задача: /ui', '', $calendar->title->text); GoogleSync::setDates($event, $calendar->when[0]->endTime, 1); break; } $event->from_where = 'GOOGLE'; $event->save(); } else { if (preg_match('/^Звонок/ui', $calendar->title->text)) { $event = new Call(); $event->name = preg_replace('/^Звонок: /ui', '', $calendar->title->text); GoogleSync::setReminder($event, $calendar->when[0]->reminders[0]); GoogleSync::setDuration(&$event, $calendar->when[0]->startTime, $calendar->when[0]->endTime); } elseif (preg_match('/^Встреча/ui', $calendar->title->text)) { $event = new Meeting(); $event->name = preg_replace('/^Встреча: /ui', '', $calendar->title->text); GoogleSync::setReminder($event, $calendar->when[0]->reminders[0]); GoogleSync::setDuration(&$event, $calendar->when[0]->startTime, $calendar->when[0]->endTime); $event->location = $calendar->where[0]->valueString; } elseif (preg_match('/^Задача/ui', $calendar->title->text)) { $event = new Task(); $event->name = preg_replace('/^Задача: /ui', '', $calendar->title->text); GoogleSync::setDates($event, $calendar->when[0]->endTime, 1); } if (isset($event)) { if (!preg_match('/event.private$/', $calendar->visibility->value)) { $event->description = $calendar->content->text; } GoogleSync::setDates($event, $calendar->when[0]->startTime, 0); $event->from_where = 'GOOGLE'; $event->assigned_user_id = $user->id; $event_id = $event->save(); $googleSync->parent_name = $event->module_dir; $googleSync->parent_id = $event_id; $googleSync->google_id = $id; $googleSync->user_id = $user->id; $googleSync->save(); } } } } catch (Zend_Gdata_App_Exception $e) { } } } return true; }
static function saveEvent(&$newEvent, $bean, $user) { $client = self::getClient($user); if ($client != false) { $gdataCal = new Zend_Gdata_Calendar($client); if (empty($newEvent->id->text)) { try { // Upload the event to the calendar server // A copy of the event as it is recorded on the server is returned $createdEvent = $gdataCal->insertEvent($newEvent); } catch (Zend_Gdata_App_Exception $e) { var_dump($e->getResponse()); $GLOBALS['log']->error("Failed to insert Event in GoogleCalender: " . print_r($e->getMessage(), 1)); die; } } else { try { $newEvent->save(); $createdEvent = $newEvent; } catch (Zend_Gdata_App_Exception $e) { var_dump($e->getResponse()); $GLOBALS['log']->error("Failed to update Event in GoogleCalender: " . print_r($e->getMessage(), 1)); die; } } $gs = new GoogleSync(); if ($gsid = self::getGoogleEntryId($bean, $user)) { $gs->retrieve($gsid); } $gs->parent_name = $bean->module_dir; $gs->parent_id = $bean->id; // Had to be saved already!; $gs->user_id = $user->id; $gs->google_id = $createdEvent->id->text; $gs->save(); } }