Beispiel #1
0
 public function emitContactsSyncSettingUI(Vtiger_Request $request)
 {
     $user = Users_Record_Model::getCurrentUserModel();
     $connector = new Google_Contacts_Connector(FALSE);
     $fieldMappping = Google_Utils_Helper::getFieldMappingForUser();
     $oauth2 = new Google_Oauth2_Connector($request->get('sourcemodule'));
     if ($oauth2->hasStoredToken()) {
         $controller = new Google_Contacts_Controller($user);
         $connector = $controller->getTargetConnector();
         $groups = $connector->pullGroups();
     }
     $targetFields = $connector->getFields();
     $selectedGroup = Google_Utils_Helper::getSelectedContactGroupForUser();
     $syncDirection = Google_Utils_Helper::getSyncDirectionForUser($user);
     $contactsModuleModel = Vtiger_Module_Model::getInstance($request->get('sourcemodule'));
     $mandatoryMapFields = array('salutationtype', 'firstname', 'lastname', 'title', 'account_id', 'birthday', 'email', 'secondaryemail', 'mobile', 'phone', 'homephone', 'mailingstreet', 'otherstreet', 'mailingpobox', 'otherpobox', 'mailingcity', 'othercity', 'mailingstate', 'otherstate', 'mailingzip', 'otherzip', 'mailingcountry', 'othercountry', 'otheraddress', 'description', 'mailingaddress', 'otheraddress');
     $customFieldMapping = array();
     $contactsFields = $contactsModuleModel->getFields();
     foreach ($fieldMappping as $vtFieldName => $googleFieldDetails) {
         if (!in_array($vtFieldName, $mandatoryMapFields) && $contactsFields[$vtFieldName]->isViewable()) {
             $customFieldMapping[$vtFieldName] = $googleFieldDetails;
         }
     }
     $skipFields = array('reference', 'contact_id', 'leadsource', 'assigned_user_id', 'donotcall', 'notify_owner', 'emailoptout', 'createdtime', 'modifiedtime', 'contact_no', 'modifiedby', 'isconvertedfromlead', 'created_user_id', 'portal', 'support_start_date', 'support_end_date', 'imagename');
     $emailFields = $phoneFields = $urlFields = $otherFields = array();
     $disAllowedFieldTypes = array('reference', 'picklist', 'multipicklist');
     foreach ($contactsFields as $contactFieldModel) {
         if ($contactFieldModel->isViewable() && !in_array($contactFieldModel->getFieldName(), array_merge($mandatoryMapFields, $skipFields))) {
             if ($contactFieldModel->getFieldDataType() == 'email') {
                 $emailFields[$contactFieldModel->getFieldName()] = $contactFieldModel->get('label');
             } else {
                 if ($contactFieldModel->getFieldDataType() == 'phone') {
                     $phoneFields[$contactFieldModel->getFieldName()] = $contactFieldModel->get('label');
                 } else {
                     if ($contactFieldModel->getFieldDataType() == 'url') {
                         $urlFields[$contactFieldModel->getFieldName()] = $contactFieldModel->get('label');
                     } else {
                         if (!in_array($contactFieldModel->getFieldDataType(), $disAllowedFieldTypes)) {
                             $otherFields[$contactFieldModel->getFieldName()] = $contactFieldModel->get('label');
                         }
                     }
                 }
             }
         }
     }
     $viewer = $this->getViewer($request);
     $viewer->assign('MODULENAME', $request->getModule());
     $viewer->assign('SOURCE_MODULE', $request->get('sourcemodule'));
     $viewer->assign('SELECTED_GROUP', $selectedGroup);
     $viewer->assign('SYNC_DIRECTION', $syncDirection);
     $viewer->assign('GOOGLE_GROUPS', $groups);
     $viewer->assign('GOOGLE_FIELDS', $targetFields);
     $viewer->assign('FIELD_MAPPING', $fieldMappping);
     $viewer->assign('CUSTOM_FIELD_MAPPING', $customFieldMapping);
     $viewer->assign('VTIGER_EMAIL_FIELDS', $emailFields);
     $viewer->assign('VTIGER_PHONE_FIELDS', $phoneFields);
     $viewer->assign('VTIGER_URL_FIELDS', $urlFields);
     $viewer->assign('VTIGER_OTHER_FIELDS', $otherFields);
     echo $viewer->view('ContactsSyncSettings.tpl', $request->getModule(), true);
 }
Beispiel #2
0
 /**
  * Returns the connector of the google contacts
  * @return Google_Contacts_Connector
  */
 public function getTargetConnector()
 {
     $oauth2Connector = new Google_Oauth2_Connector($this->getSourceType(), $this->user->id);
     $oauth2Connection = $oauth2Connector->authorize();
     $connector = new Google_Contacts_Connector($oauth2Connection);
     $connector->setSynchronizeController($this);
     return $connector;
 }
Beispiel #3
0
 public function getTargetConnector()
 {
     $oauth2Connector = new Google_Oauth2_Connector("Calendar", $this->user->id);
     $oauth2Connection = $oauth2Connector->authorize();
     $connector = new Google_Calendar_Connector($oauth2Connection);
     $connector->setSynchronizeController($this);
     return $connector;
 }
Beispiel #4
0
 function renderSyncUI(Vtiger_Request $request)
 {
     $sourceModule = $request->get('sourcemodule');
     $viewer = $this->getViewer($request);
     $viewer->assign('SCRIPTS', $this->getHeaderScripts($request));
     $oauth2 = new Google_Oauth2_Connector($sourceModule);
     if ($request->has('oauth_verifier')) {
         try {
             $oauth->getHttpClient($sourceModule);
         } catch (Exception $e) {
             $viewer->assign('DENY', true);
         }
         $viewer->assign('MODULE_NAME', $request->getModule());
         $viewer->assign('STATE', 'CLOSEWINDOW');
         $viewer->view('Contents.tpl', $request->getModule());
     } else {
         if (!empty($sourceModule)) {
             try {
                 $records = $this->invokeExposedMethod($sourceModule);
             } catch (Zend_Gdata_App_HttpException $e) {
                 $errorCode = $e->getResponse()->getStatus();
                 if ($errorCode == 401) {
                     $this->removeSynchronization($request);
                     $response = new Vtiger_Response();
                     $response->setError(401);
                     $response->emit();
                     return false;
                 }
             }
         }
         $firstime = $oauth2->hasStoredToken();
         $viewer->assign('MODULE_NAME', $request->getModule());
         $viewer->assign('FIRSTTIME', $firstime);
         $viewer->assign('RECORDS', $records);
         $viewer->assign('NORECORDS', $this->noRecords);
         $viewer->assign('SYNCTIME', Google_Utils_Helper::getLastSyncTime($sourceModule));
         $viewer->assign('STATE', $request->get('operation'));
         $viewer->assign('SOURCEMODULE', $request->get('sourcemodule'));
         if (!$firstime) {
             $viewer->view('Contents.tpl', $request->getModule());
         } else {
             echo $viewer->view('ContentDetails.tpl', $request->getModule(), true);
         }
     }
 }