function export_google_calendar() { $users_cal = ExternalCalendarUsers::findAll(); if (count($users_cal) > 0) { foreach ($users_cal as $users) { if ($users->getSync() == 1) { $contact = Contacts::findById($users->getContactId()); $sql = "SELECT ec.* FROM `" . TABLE_PREFIX . "external_calendars` ec,`" . TABLE_PREFIX . "external_calendar_users` ecu \n WHERE ec.calendar_feng = 1 AND ecu.contact_id = " . $contact->getId(); $calendar_feng = DB::executeOne($sql); $events = ProjectEvents::findNoSync($contact->getId()); 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 = $users->getAuthUser(); $pass = $users->getAuthPass(); $service = Zend_Gdata_Calendar::AUTH_SERVICE_NAME; try { $client = Zend_Gdata_ClientLogin::getHttpClient($user, $pass, $service); $gdataCal = new Zend_Gdata_Calendar($client); if ($calendar_feng) { foreach ($events as $event) { $calendarUrl = 'http://www.google.com/calendar/feeds/' . $calendar_feng['calendar_user'] . '/private/full'; $newEvent = $gdataCal->newEventEntry(); $newEvent->title = $gdataCal->newTitle($event->getObjectName()); $newEvent->content = $gdataCal->newContent($event->getDescription()); $star_time = explode(" ", $event->getStart()->format("Y-m-d H:i:s")); $end_time = explode(" ", $event->getDuration()->format("Y-m-d H:i:s")); if ($event->getTypeId() == 2) { $when = $gdataCal->newWhen(); $when->startTime = $star_time[0]; $when->endTime = $end_time[0]; $newEvent->when = array($when); } else { $when = $gdataCal->newWhen(); $when->startTime = $star_time[0] . "T" . $star_time[1] . ".000-00:00"; $when->endTime = $end_time[0] . "T" . $end_time[1] . ".000-00:00"; $newEvent->when = array($when); } // insert event $createdEvent = $gdataCal->insertEvent($newEvent, $calendarUrl); $event_id = explode("/", $createdEvent->id->text); $special_id = end($event_id); $event->setSpecialID($special_id); $event->setUpdateSync(ProjectEvents::date_google_to_sql($createdEvent->updated)); $event->setExtCalId($calendar_feng['id']); $event->save(); } } else { $appCalUrl = ''; $calFeed = $gdataCal->getCalendarListFeed(); foreach ($calFeed as $calF) { if ($calF->title->text == lang('feng calendar')) { $appCalUrl = $calF->content->src; $t_calendario = $calF->title->text; } } if ($appCalUrl != "") { $title_cal = $t_calendario; } else { $appCal = $gdataCal->newListEntry(); $appCal->title = $gdataCal->newTitle(lang('feng calendar')); $own_cal = "http://www.google.com/calendar/feeds/default/owncalendars/full"; $new_cal = $gdataCal->insertEvent($appCal, $own_cal); $title_cal = $new_cal->title->text; $appCalUrl = $new_cal->content->src; } $cal_src = explode("/", $appCalUrl); array_pop($cal_src); $calendar_visibility = end($cal_src); array_pop($cal_src); $calendar_user = end($cal_src); $calendar = new ExternalCalendar(); $calendar->setCalendarUser($calendar_user); $calendar->setCalendarVisibility($calendar_visibility); $calendar->setCalendarName($title_cal); $calendar->setExtCalUserId($users->getId()); $calendar->setCalendarFeng(1); $calendar->save(); foreach ($events as $event) { $calendarUrl = 'http://www.google.com/calendar/feeds/' . $calendar->getCalendarUser() . '/private/full'; $newEvent = $gdataCal->newEventEntry(); $newEvent->title = $gdataCal->newTitle($event->getObjectName()); $newEvent->content = $gdataCal->newContent($event->getDescription()); $star_time = explode(" ", $event->getStart()->format("Y-m-d H:i:s")); $end_time = explode(" ", $event->getDuration()->format("Y-m-d H:i:s")); if ($event->getTypeId() == 2) { $when = $gdataCal->newWhen(); $when->startTime = $star_time[0]; $when->endTime = $end_time[0]; $newEvent->when = array($when); } else { $when = $gdataCal->newWhen(); $when->startTime = $star_time[0] . "T" . $star_time[1] . ".000-00:00"; $when->endTime = $end_time[0] . "T" . $end_time[1] . ".000-00:00"; $newEvent->when = array($when); } // insert event $createdEvent = $gdataCal->insertEvent($newEvent, $calendarUrl); $event_id = explode("/", $createdEvent->id->text); $special_id = end($event_id); $event->setSpecialID($special_id); $event->setUpdateSync(ProjectEvents::date_google_to_sql($createdEvent->updated)); $event->setExtCalId($calendar->getId()); $event->save(); } } } catch (Exception $e) { //Logger::log($e->getMessage()); } } } } }
function export_google_calendar() { $users = ExternalCalendarUsers::findAll(array('conditions' => "sync = 1")); foreach ($users as $user) { // log user in $contact = Contacts::findById($user->getContactId()); CompanyWebsite::instance()->logUserIn($contact); ExternalCalendarController::export_google_calendar_for_user($user); CompanyWebsite::instance()->logUserOut(); } }