Esempio n. 1
0
 /**
  * Tarsform  Vtiger Records to Google Records
  * @param <array> $vtContacts 
  * @return <array> tranformed vtiger Records
  */
 public function transformToTargetRecord($vtContacts)
 {
     $records = array();
     foreach ($vtContacts as $vtContact) {
         $gdataContact = new Zend_Gdata_Contacts($this->apiInstance);
         if ($vtContact->getMode() == WSAPP_SyncRecordModel::WSAPP_UPDATE_MODE || $vtContact->getMode() == WSAPP_SyncRecordModel::WSAPP_DELETE_MODE) {
             try {
                 $entry = $gdataContact->getContactListEntry($vtContact->get('_id'));
             } catch (Exception $e) {
                 continue;
             }
         } else {
             $entry = $gdataContact->newContactEntry();
         }
         $entry->name = $gdataContact->newName($vtContact->get('firstname') . " " . $vtContact->get('lastname'));
         $primaryEmail = $gdataContact->newEmail($vtContact->get('email'));
         $addressArray = array();
         $mailingstreet = $vtContact->get('mailingstreet');
         if (!empty($mailingstreet)) {
             $postalAddress = $gdataContact->newStructuredPostalAddress("Postal Address");
             $postalAddress->street = $gdataContact->newStreet(implode(' ', array($vtContact->get('mailingstreet'), $vtContact->get('mailingcity'), $vtContact->get('mailingstate'), $vtContact->get('mailingcountry'))));
             $addressArray[] = $postalAddress;
         }
         $phoneArray = array();
         $phone = $vtContact->get('mobile');
         if (!empty($phone)) {
             $phoneArray[] = $gdataContact->newPhoneNumber($phone);
         }
         $entry->emails = array($primaryEmail);
         $entry->phones = $phoneArray;
         $entry->addresses = $addressArray;
         $recordModel = Google_Contacts_Model::getInstanceFromValues(array('entity' => $entry));
         $recordModel->setType($this->getSynchronizeController()->getSourceType())->setMode($vtContact->getMode())->setSyncIdentificationKey($vtContact->get('_syncidentificationkey'));
         $recordModel = $this->performBasicTransformations($vtContact, $recordModel);
         $recordModel = $this->performBasicTransformationsToTargetRecords($recordModel, $vtContact);
         $records[] = $recordModel;
     }
     return $records;
 }
Esempio n. 2
0
 /**
  * Pull the events from google
  * @param <object> $SyncState
  * @return <array> google Records
  */
 public function getCalendar($SyncState)
 {
     $calendars = new Zend_Gdata_Calendar($this->apiInstance);
     $query = $calendars->newEventQuery($query);
     $query->setVisibility('private');
     $query->setMaxResults($this->maxResults);
     $query->setStartIndex(1);
     $query->setOrderBy('lastmodified');
     $query->setsortorder('ascending');
     if (Google_Utils_Helper::getSyncTime('Calendar')) {
         $query->setUpdatedMin(Google_Utils_Helper::getSyncTime('Calendar'));
     }
     $feed = $calendars->getCalendarEventFeed($query);
     $this->totalRecords = $feed->totalResults->text;
     $calendarRecords = array();
     if (count($feed->entry) > 0) {
         $maxModifiedTime = date('Y-m-d H:i:s', strtotime(Google_Contacts_Model::vtigerFormat(end($feed->entry)->updated->text)) + 1);
         if ($this->totalRecords > $this->maxResults) {
             if (!Google_Utils_Helper::getSyncTime('Calendar')) {
                 $query->setUpdatedMin(date('Y-m-d H:i:s', strtotime(Google_Contacts_Model::vtigerFormat(end($feed->entry)->updated->text))));
                 $query->setStartIndex($this->maxResults);
             }
             $query->setMaxResults(500);
             $query->setUpdatedMax($maxModifiedTime);
             $extendedFeed = $calendars->getCalendarEventFeed($query);
             $calendarRecords = array_merge($feed->entry, $extendedFeed->entry);
         } else {
             $calendarRecords = $feed->entry;
         }
     }
     $googleRecords = array();
     foreach ($calendarRecords as $i => $calendar) {
         $recordModel = Google_Calendar_Model::getInstanceFromValues(array('entity' => $calendar));
         $deleted = false;
         if (end(explode('.', $calendar->eventstatus->value)) == 'canceled') {
             $deleted = true;
         }
         if (!$deleted) {
             $recordModel->setType($this->getSynchronizeController()->getSourceType())->setMode(WSAPP_SyncRecordModel::WSAPP_UPDATE_MODE);
         } else {
             $recordModel->setType($this->getSynchronizeController()->getSourceType())->setMode(WSAPP_SyncRecordModel::WSAPP_DELETE_MODE);
         }
         $googleRecords[$calendar->id->text] = $recordModel;
     }
     $this->createdRecords = count($googleRecords);
     if (isset($maxModifiedTime)) {
         Google_Utils_Helper::updateSyncTime('Calendar', $maxModifiedTime);
     } else {
         Google_Utils_Helper::updateSyncTime('Calendar');
     }
     return $googleRecords;
 }
Esempio n. 3
0
 /**
  * Pull the events from google
  * @param <object> $SyncState
  * @return <array> google Records
  */
 public function getCalendar($SyncState, $user = false)
 {
     if ($this->apiConnection->isTokenExpired()) {
         $this->apiConnection->refreshToken();
         $this->client->setAccessToken($this->apiConnection->getAccessToken());
         $this->service = new Google_Service_Calendar($this->client);
     }
     $query = array('maxResults' => $this->maxResults, 'orderBy' => 'updated', 'singleEvents' => true);
     if (Google_Utils_Helper::getSyncTime('Calendar', $user)) {
         $query['updatedMin'] = $this->googleFormat(Google_Utils_Helper::getSyncTime('Calendar', $user));
         //shows deleted by default
     }
     try {
         $feed = $this->service->events->listEvents('primary', $query);
     } catch (Exception $e) {
         if ($e->getCode() == 410) {
             $query['showDeleted'] = false;
             $feed = $this->service->events->listEvents('primary', $query);
         }
     }
     $calendarRecords = array();
     if ($feed) {
         $calendarRecords = $feed->getItems();
         if ($feed->getNextPageToken()) {
             $this->totalRecords = $this->maxResults + 1;
         }
     }
     if (count($calendarRecords) > 0) {
         $maxModifiedTime = date('Y-m-d H:i:s', strtotime(Google_Contacts_Model::vtigerFormat(end($calendarRecords)->getUpdated())) + 1);
     }
     $googleRecords = array();
     foreach ($calendarRecords as $i => $calendar) {
         $recordModel = Google_Calendar_Model::getInstanceFromValues(array('entity' => $calendar));
         $deleted = false;
         if ($calendar->getStatus() == 'cancelled') {
             $deleted = true;
         }
         if (!$deleted) {
             $recordModel->setType($this->getSynchronizeController()->getSourceType())->setMode(WSAPP_SyncRecordModel::WSAPP_UPDATE_MODE);
         } else {
             $recordModel->setType($this->getSynchronizeController()->getSourceType())->setMode(WSAPP_SyncRecordModel::WSAPP_DELETE_MODE);
         }
         $googleRecords[$calendar->getId()] = $recordModel;
     }
     $this->createdRecords = count($googleRecords);
     if (isset($maxModifiedTime)) {
         Google_Utils_Helper::updateSyncTime('Calendar', $maxModifiedTime, $user);
     } else {
         Google_Utils_Helper::updateSyncTime('Calendar', false, $user);
     }
     return $googleRecords;
 }
Esempio n. 4
0
 /**
  * Tarsform  Vtiger Records to Google Records
  * @param <array> $vtContacts 
  * @return <array> tranformed vtiger Records
  */
 public function transformToTargetRecord($vtContacts)
 {
     $records = array();
     foreach ($vtContacts as $vtContact) {
         $recordModel = Google_Contacts_Model::getInstanceFromValues(array('entity' => $vtContact));
         $recordModel->setType($this->getSynchronizeController()->getSourceType())->setMode($vtContact->getMode())->setSyncIdentificationKey($vtContact->get('_syncidentificationkey'));
         $recordModel = $this->performBasicTransformations($vtContact, $recordModel);
         $recordModel = $this->performBasicTransformationsToTargetRecords($recordModel, $vtContact);
         $records[] = $recordModel;
     }
     return $records;
 }