Ejemplo n.º 1
0
 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();
     }
 }