Example #1
0
 public function isHideBlock($record, $view)
 {
     $db = PearDatabase::getInstance();
     $result = $db->pquery("SELECT * FROM vtiger_blocks_hide WHERE enabled = ? AND blockid = ? AND view LIKE '%{$view}%';", array(1, $this->get('id')));
     $num_rows = $db->num_rows($result);
     $hideBlocks = array();
     for ($i = 0; $i < $num_rows; $i++) {
         $row = $db->raw_query_result_rowdata($result, $i);
         $hideBlocks[] = $row;
     }
     if (count($hideBlocks) == 0) {
         return true;
     }
     require_once "modules/com_vtiger_workflow/VTJsonCondition.inc";
     require_once "modules/com_vtiger_workflow/VTEntityCache.inc";
     require_once "modules/com_vtiger_workflow/VTWorkflowUtils.php";
     $conditionStrategy = new VTJsonCondition();
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $util = new VTWorkflowUtils();
     $entityCache = new VTEntityCache($currentUser);
     $wsId = vtws_getWebserviceEntityId($record->getModuleName(), $record->getId());
     $showBlock = false;
     foreach ($hideBlocks as $hideBlock) {
         $expr = Zend_Json::decode($hideBlock['conditions']);
         if (!$record->getId() && $expr) {
             continue;
         }
         $showBlock = $conditionStrategy->evaluate($hideBlock['conditions'], $entityCache, $wsId);
     }
     return !$showBlock;
 }
Example #2
0
 public function process(Vtiger_Request $request)
 {
     $recordId = $request->get('record');
     $modules = $request->get('modules');
     $assignId = $request->get('assigned_user_id');
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $entityValues = array();
     $entityValues['transferRelatedRecordsTo'] = $request->get('transferModule');
     //■権限なぜか、エラーになるので権限を固定するinouchi
     //$entityValues['assignedTo'] = vtws_getWebserviceEntityId(vtws_getOwnerType($assignId), $assignId);
     $entityValues['assignedTo'] = vtws_getWebserviceEntityId(vtws_getOwnerType(1), 1);
     $entityValues['leadId'] = vtws_getWebserviceEntityId($request->getModule(), $recordId);
     $recordModel = Vtiger_Record_Model::getInstanceById($recordId, $request->getModule());
     $convertLeadFields = $recordModel->getConvertLeadFields();
     $availableModules = array('Accounts', 'Contacts', 'Potentials');
     foreach ($availableModules as $module) {
         if (vtlib_isModuleActive($module) && in_array($module, $modules)) {
             $entityValues['entities'][$module]['create'] = true;
             $entityValues['entities'][$module]['name'] = $module;
             foreach ($convertLeadFields[$module] as $fieldModel) {
                 $fieldName = $fieldModel->getName();
                 $fieldValue = $request->get($fieldName);
                 //Potential Amount Field value converting into DB format
                 if ($fieldModel->getFieldDataType() === 'currency') {
                     $fieldValue = Vtiger_Currency_UIType::convertToDBFormat($fieldValue);
                 } elseif ($fieldModel->getFieldDataType() === 'date') {
                     $fieldValue = DateTimeField::convertToDBFormat($fieldValue);
                 } elseif ($fieldModel->getFieldDataType() === 'reference' && $fieldValue) {
                     $ids = vtws_getIdComponents($fieldValue);
                     if (count($ids) === 1) {
                         $fieldValue = vtws_getWebserviceEntityId(getSalesEntityType($fieldValue), $fieldValue);
                     }
                 }
                 $entityValues['entities'][$module][$fieldName] = $fieldValue;
             }
         }
     }
     try {
         $result = vtws_convertlead($entityValues, $currentUser);
     } catch (Exception $e) {
         $this->showError($request, $e);
         exit;
     }
     if (!empty($result['Accounts'])) {
         $accountIdComponents = vtws_getIdComponents($result['Accounts']);
         $accountId = $accountIdComponents[1];
     }
     if (!empty($result['Contacts'])) {
         $contactIdComponents = vtws_getIdComponents($result['Contacts']);
         $contactId = $contactIdComponents[1];
     }
     if (!empty($accountId)) {
         header("Location: index.php?view=Detail&module=Accounts&record={$accountId}");
     } elseif (!empty($contactId)) {
         header("Location: index.php?view=Detail&module=Contacts&record={$contactId}");
     } else {
         $this->showError($request);
         exit;
     }
 }
Example #3
0
 /**
  * Tarsform Google Records to Vtiger Records
  * @param <array> $targetRecords 
  * @return <array> tranformed Google Records
  */
 public function transformToSourceRecord($targetRecords, $user = false)
 {
     $entity = array();
     $calendarArray = array();
     foreach ($targetRecords as $googleRecord) {
         if ($googleRecord->getMode() != WSAPP_SyncRecordModel::WSAPP_DELETE_MODE) {
             if (!$user) {
                 $user = Users_Record_Model::getCurrentUserModel();
             }
             $entity['assigned_user_id'] = vtws_getWebserviceEntityId('Users', $user->id);
             $entity['subject'] = $googleRecord->getSubject();
             $entity['date_start'] = $googleRecord->getStartDate($user);
             $entity['location'] = $googleRecord->getWhere();
             $entity['time_start'] = $googleRecord->getStartTimeUTC($user);
             $entity['due_date'] = $googleRecord->getEndDate($user);
             $entity['time_end'] = $googleRecord->getEndTimeUTC($user);
             $entity['eventstatus'] = "Planned";
             $entity['activitytype'] = "Meeting";
             $entity['description'] = $googleRecord->getDescription();
             $entity['duration_hours'] = '00:00';
             $entity['visibility'] = $googleRecord->getVisibility($user);
             if (empty($entity['subject'])) {
                 $entity['subject'] = 'Google Event';
             }
         }
         $calendar = $this->getSynchronizeController()->getSourceRecordModel($entity);
         $calendar = $this->performBasicTransformations($googleRecord, $calendar);
         $calendar = $this->performBasicTransformationsToSourceRecords($calendar, $googleRecord);
         $calendarArray[] = $calendar;
     }
     return $calendarArray;
 }
Example #4
0
 function process(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $record = $request->get('record');
     vimport('~~modules/com_vtiger_workflow/include.inc');
     vimport('~~modules/com_vtiger_workflow/VTEntityCache.inc');
     vimport('~~modules/com_vtiger_workflow/include.inc');
     vimport('~~include/Webservices/Utils.php');
     vimport('~~include/Webservices/Retrieve.php');
     $adb = PearDatabase::getInstance();
     $wfs = new VTWorkflowManager($adb);
     $workflows = $wfs->getWorkflowsForModule($moduleName, VTWorkflowManager::$TRIGGER);
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $wsId = vtws_getWebserviceEntityId($moduleName, $record);
     $entityCache = new VTEntityCache($currentUser);
     $entityData = $entityCache->forId($wsId);
     foreach ($workflows as $id => $workflow) {
         if (!$workflow->evaluate($entityCache, $entityData->getId())) {
             unset($workflows[$id]);
         }
     }
     $viewer = $this->getViewer($request);
     $viewer->assign('RECORD', $record);
     $viewer->assign('MODULE', $moduleName);
     $viewer->assign('WORKFLOWS', $workflows);
     $viewer->assign('USER_MODEL', Users_Record_Model::getCurrentUserModel());
     $viewer->view('WorkflowTrigger.tpl', $moduleName);
 }
Example #5
0
 /**
  * Function to load record
  * @param <Number> $recordId
  * @return <Vtiger_Record_Model>
  */
 protected function loadRecord($recordId)
 {
     $moduleName = $this->module->getName();
     // Preparation to pull required tool-tip field values.
     $referenceFields = array();
     $fieldNames = array();
     foreach ($this->fields as $fieldModel) {
         $fieldType = $fieldModel->getFieldDataType();
         $fieldName = $fieldModel->get('name');
         $fieldNames[] = $fieldName;
         if ($fieldType == 'reference' || $fieldType == 'owner') {
             $referenceFields[] = $fieldName;
         }
     }
     $wsid = vtws_getWebserviceEntityId($moduleName, $recordId);
     $q = sprintf("SELECT %s FROM %s WHERE id='%s' LIMIT 1;", implode(',', $fieldNames), $moduleName, $wsid);
     // Retrieves only required fields of the record with permission check.
     try {
         $data = array_shift(vtws_query($q, Users_Record_Model::getCurrentUserModel()));
         if ($data) {
             // De-transform the webservice ID to CRM ID.
             foreach ($data as $key => $value) {
                 if (in_array($key, $referenceFields)) {
                     $value = array_pop(explode('x', $value));
                 }
                 $data[$key] = $value;
             }
         }
         $this->record = Vtiger_Record_Model::getCleanInstance($moduleName);
         $this->record->setData($data);
     } catch (WebServiceException $wex) {
         // Error retrieving information !
     }
     return $this;
 }
Example #6
0
 public function changePassword($request)
 {
     $request = new Vtiger_Request($request);
     $viewer = Vtiger_Viewer::getInstance();
     $userName = $request->get('username');
     $newPassword = $request->get('password');
     $confirmPassword = $request->get('confirmPassword');
     $shortURLID = $request->get('shorturl_id');
     $secretHash = $request->get('secret_hash');
     $shortURLModel = Vtiger_ShortURL_Helper::getInstance($shortURLID);
     $secretToken = $shortURLModel->handler_data['secret_token'];
     $validateData = array('username' => $userName, 'secret_token' => $secretToken, 'secret_hash' => $secretHash);
     $valid = $shortURLModel->compareEquals($validateData);
     if ($valid) {
         $userId = getUserId_Ol($userName);
         $user = Users::getActiveAdminUser();
         $wsUserId = vtws_getWebserviceEntityId('Users', $userId);
         vtws_changePassword($wsUserId, '', $newPassword, $confirmPassword, $user);
     } else {
         $viewer->assign('ERROR', true);
     }
     $shortURLModel->delete();
     $viewer->assign('USERNAME', $userName);
     $viewer->assign('PASSWORD', $newPassword);
     $viewer->view('FPLogin.tpl', 'Users');
 }
 function handleEvent($eventName, $data)
 {
     if ($eventName == 'vtiger.entity.beforesave') {
         // Entity is about to be saved, take required action
     }
     if ($eventName == 'vtiger.entity.aftersave') {
         $db = PearDatabase::getInstance();
         $relatedToId = $data->get('related_to');
         if ($relatedToId) {
             $moduleName = getSalesEntityType($relatedToId);
             $focus = CRMEntity::getInstance($moduleName);
             $focus->retrieve_entity_info($relatedToId, $moduleName);
             $focus->id = $relatedToId;
             $fromPortal = $data->get('from_portal');
             if ($fromPortal) {
                 $focus->column_fields['from_portal'] = $fromPortal;
             }
             $entityData = VTEntityData::fromCRMEntity($focus);
             $wfs = new VTWorkflowManager($db);
             $relatedToEventHandler = new VTWorkflowEventHandler();
             $relatedToEventHandler->workflows = $wfs->getWorkflowsForModuleSupportingComments($entityData->getModuleName());
             $wsId = vtws_getWebserviceEntityId($entityData->getModuleName(), $entityData->getId());
             $fromPortal = $entityData->get('from_portal');
             $util = new VTWorkflowUtils();
             $entityCache = new VTEntityCache($util->adminUser());
             $entityCacheData = $entityCache->forId($wsId);
             $entityCacheData->set('from_portal', $fromPortal);
             $entityCache->cache[$wsId] = $entityCacheData;
             $relatedToEventHandler->handleEvent($eventName, $entityData, $entityCache);
             $util->revertUser();
         }
     }
 }
 public function translateReferenceFieldNamesToIds($entityRecords, $user)
 {
     $entityRecordList = array();
     foreach ($entityRecords as $index => $record) {
         $entityRecordList[$record['module']][$index] = $record;
     }
     foreach ($entityRecordList as $module => $records) {
         $handler = vtws_getModuleHandlerFromName($module, $user);
         $meta = $handler->getMeta();
         $referenceFieldDetails = $meta->getReferenceFieldDetails();
         foreach ($referenceFieldDetails as $referenceFieldName => $referenceModuleDetails) {
             $recordReferenceFieldNames = array();
             foreach ($records as $index => $recordDetails) {
                 if (!empty($recordDetails[$referenceFieldName])) {
                     $recordReferenceFieldNames[] = $recordDetails[$referenceFieldName];
                 }
             }
             $entityNameIds = wsapp_getRecordEntityNameIds(array_values($recordReferenceFieldNames), $referenceModuleDetails, $user);
             if (is_array($entityNameIds)) {
                 $entityNameIds = array_change_key_case($entityNameIds, CASE_LOWER);
             }
             foreach ($records as $index => $recordInfo) {
                 if (!empty($entityNameIds[strtolower($recordInfo[$referenceFieldName])])) {
                     $recordInfo[$referenceFieldName] = $entityNameIds[strtolower($recordInfo[$referenceFieldName])];
                 } else {
                     if ($referenceFieldName == 'account_id') {
                         if ($recordInfo[$referenceFieldName] != NULL) {
                             $element['accountname'] = $recordInfo[$referenceFieldName];
                             $element['assigned_user_id'] = vtws_getWebserviceEntityId('Users', $user->id);
                             $element['module'] = "Accounts";
                             $createRecord = array($element);
                             $createRecord = $this->fillNonExistingMandatoryPicklistValues($createRecord);
                             $createRecord = $this->fillMandatoryFields($createRecord, $user);
                             foreach ($createRecord as $key => $record) {
                                 vtws_create($record['module'], $record, $user);
                             }
                             $entityNameIds = wsapp_getRecordEntityNameIds(array_values($recordReferenceFieldNames), $referenceModuleDetails, $user);
                             $recordInfo[$referenceFieldName] = $entityNameIds[$recordInfo[$referenceFieldName]];
                         }
                     } else {
                         $recordInfo[$referenceFieldName] = "";
                     }
                 }
                 $records[$index] = $recordInfo;
             }
         }
         $entityRecordList[$module] = $records;
     }
     $crmRecords = array();
     foreach ($entityRecordList as $module => $entityRecords) {
         foreach ($entityRecords as $index => $record) {
             $crmRecords[$index] = $record;
         }
     }
     return $crmRecords;
 }
 public function process(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $userId = vtws_getWebserviceEntityId($moduleName, $request->get('userid'));
     $transformUserId = vtws_getWebserviceEntityId($moduleName, $request->get('transfer_user_id'));
     $userModel = Users_Record_Model::getCurrentUserModel();
     $userModuleModel = Users_Module_Model::getInstance($moduleName);
     $result = vtws_deleteUser($userId, $transformUserId, $userModel);
     $listViewUrl = $userModuleModel->getListViewUrl();
     $response = new Vtiger_Response();
     $response->setResult(array('message' => vtranslate('LBL_USER_DELETED_SUCCESSFULLY', $moduleName), 'listViewUrl' => $listViewUrl));
     $response->emit();
 }
Example #10
0
 function captureNow($request)
 {
     $returnURL = false;
     try {
         foreach ($request as $key => $value) {
             $request[utf8_decode($key)] = $value;
         }
         if (!vtlib_isModuleActive('Webforms')) {
             throw new Exception('webforms is not active');
         }
         $webform = Webforms_Model::retrieveWithPublicId(vtlib_purify($request['publicid']));
         if (empty($webform)) {
             throw new Exception("Webform not found.");
         }
         $returnURL = $webform->getReturnUrl();
         // Retrieve user information
         $user = CRMEntity::getInstance('Users');
         $user->id = $user->getActiveAdminId();
         $user->retrieve_entity_info($user->id, 'Users');
         // Prepare the parametets
         $parameters = array();
         $webformFields = $webform->getFields();
         foreach ($webformFields as $webformField) {
             if ($webformField->getDefaultValue() != null) {
                 $parameters[$webformField->getFieldName()] = decode_html($webformField->getDefaultValue());
             } else {
                 $webformNeutralizedField = html_entity_decode($webformField->getNeutralizedField());
                 if (is_array(vtlib_purify($request[$webformNeutralizedField]))) {
                     $fieldData = implode(" |##| ", vtlib_purify($request[$webformNeutralizedField]));
                 } else {
                     $fieldData = vtlib_purify($request[$webformNeutralizedField]);
                     $fieldData = decode_html($fieldData);
                 }
                 $parameters[$webformField->getFieldName()] = stripslashes($fieldData);
             }
             if ($webformField->getRequired()) {
                 if (empty($parameters[$webformField->getFieldName()])) {
                     throw new Exception("Required fields not filled");
                 }
             }
         }
         $parameters['assigned_user_id'] = vtws_getWebserviceEntityId('Users', $webform->getOwnerId());
         // Create the record
         $record = vtws_create($webform->getTargetModule(), $parameters, $user);
         $this->sendResponse($returnURL, 'ok');
         return;
     } catch (Exception $e) {
         $this->sendResponse($returnURL, false, $e->getMessage());
         return;
     }
 }
 public function changePassword($request)
 {
     $request = new Vtiger_Request($request);
     $viewer = Vtiger_Viewer::getInstance();
     $username = $request->get('username');
     $newPassword = $request->get('password');
     $confirmPassword = $request->get('confirmPassword');
     $userId = getUserId_Ol($username);
     $user = Users::getActiveAdminUser();
     $wsUserId = vtws_getWebserviceEntityId('Users', $userId);
     vtws_changePassword($wsUserId, '', $newPassword, $confirmPassword, $user);
     $viewer->assign('USERNAME', $username);
     $viewer->assign('PASSWORD', $newPassword);
     $viewer->view('FPLogin.tpl', 'Users');
 }
Example #12
0
 public function process(Vtiger_Request $request)
 {
     include_once 'include/Webservices/Retrieve.php';
     include_once 'include/Webservices/Revise.php';
     $user = CRMEntity::getInstance('Users');
     $user->id = 1;
     $user->retrieve_entity_info($user->id, 'Users');
     $wsrecord = vtws_retrieve(vtws_getWebserviceEntityId('Invoice', 159), $user);
     $new['LineItems'] = $wsrecord['LineItems'];
     $new['id'] = $wsrecord['id'];
     $new['LineItems'][] = array('parent_id' => '7x159', 'productid' => '14x109', 'sequence_no' => '2', 'quantity' => '3', 'listprice' => '2.1', 'comment' => 'Kommentar ' . date('Y-m-d H:i:s'), 'incrementondel' => '1', 'tax1' => 5);
     $lead = vtws_revise($new, $user);
     echo '<pre>';
     var_dump($wsrecord);
     echo '</pre>';
 }
Example #13
0
 public function queryForRecords($query, $onlymine = true)
 {
     $user = Users_Record_Model::getCurrentUserModel();
     if ($onlymine) {
         $groupIds = $this->getGroupsIdsForUsers($user->getId());
         $groupWsIds = array();
         foreach ($groupIds as $groupId) {
             $groupWsIds[] = vtws_getWebserviceEntityId('Groups', $groupId);
         }
         $userwsid = vtws_getWebserviceEntityId('Users', $user->getId());
         $userAndGroupIds = array_merge(array($userwsid), $groupWsIds);
         $query .= " AND assigned_user_id IN ('" . implode("','", $userAndGroupIds) . "')";
     }
     // TODO take care of pulling 100+ records
     return vtws_query($query . ';', $user);
 }
Example #14
0
 public function savePassword(Vtiger_Request $request)
 {
     $module = $request->getModule();
     $userModel = vglobal('current_user');
     $newPassword = $request->get('new_password');
     $oldPassword = $request->get('old_password');
     $wsUserId = vtws_getWebserviceEntityId($module, $request->get('userid'));
     $wsStatus = vtws_changePassword($wsUserId, $oldPassword, $newPassword, $newPassword, $userModel);
     $response = new Vtiger_Response();
     if ($wsStatus['message']) {
         $response->setResult($wsStatus);
     } else {
         $response->setError('JS_PASSWORD_INCORRECT_OLD', 'JS_PASSWORD_INCORRECT_OLD');
     }
     $response->emit();
 }
Example #15
0
 public function getRecordData($moduleName, $recordId)
 {
     ${"GLOBALS"}["yhkvuqi"] = "moduleName";
     include_once "include/Webservices/Retrieve.php";
     include_once "include/Webservices/Utils.php";
     ${"GLOBALS"}["rwzcgorvwd"] = "modelData";
     if (${${"GLOBALS"}["yhkvuqi"]} == "Calendar") {
         ${${"GLOBALS"}["qdpmrziapjb"]} = vtws_getCalendarEntityType(${${"GLOBALS"}["kpdkgyrhwuc"]});
     }
     try {
         ${"GLOBALS"}["zwvujejhu"] = "recordId";
         ${${"GLOBALS"}["tykmttbjma"]} = vtws_getWebserviceEntityId(${${"GLOBALS"}["qdpmrziapjb"]}, ${${"GLOBALS"}["zwvujejhu"]});
         ${${"GLOBALS"}["cnbxfeulpcc"]} = vtws_retrieve(${${"GLOBALS"}["tykmttbjma"]}, vglobal("current_user"));
     } catch (WebServiceException $ex) {
         echo "getRecordData Error: " . $ex->getMessage();
     }
     return ${${"GLOBALS"}["rwzcgorvwd"]};
 }
 public function execute($moduleName, $record, $ids)
 {
     vimport('~~modules/com_vtiger_workflow/VTEntityCache.inc');
     vimport('~~modules/com_vtiger_workflow/include.inc');
     vimport('~~include/Webservices/Utils.php');
     vimport('~~include/Webservices/Retrieve.php');
     $currentUser = Users_Record_Model::getCurrentUserModel();
     $wsId = vtws_getWebserviceEntityId($moduleName, $record);
     $adb = PearDatabase::getInstance();
     $wfs = new VTWorkflowManager($adb);
     $entityCache = new VTEntityCache($currentUser);
     $entityData = $entityCache->forId($wsId);
     foreach ($ids as $id) {
         $workflow = $wfs->retrieve($id);
         if ($workflow->evaluate($entityCache, $entityData->getId())) {
             $workflow->performTasks($entityData);
         }
     }
 }
Example #17
0
 public function process(Vtiger_Request $request)
 {
     $moduleName = $request->getModule();
     $ownerId = $request->get('userid');
     $newOwnerId = $request->get('transfer_user_id');
     if ($request->get('mode') == 'permanent') {
         Users_Record_Model::deleteUserPermanently($ownerId, $newOwnerId);
     } else {
         $userId = vtws_getWebserviceEntityId($moduleName, $ownerId);
         $transformUserId = vtws_getWebserviceEntityId($moduleName, $newOwnerId);
         $userModel = Users_Record_Model::getCurrentUserModel();
         vtws_deleteUser($userId, $transformUserId, $userModel);
         if ($request->get('permanent') == '1') {
             Users_Record_Model::deleteUserPermanently($ownerId, $newOwnerId);
         }
     }
     $response = new Vtiger_Response();
     $response->setResult(array('message' => vtranslate('LBL_USER_DELETED_SUCCESSFULLY', $moduleName)));
     $response->emit();
 }
Example #18
0
function wsapp_getRecordEntityNameIds($entityNames, $modules, $user)
{
    $entityMetaList = array();
    $db = PearDatabase::getInstance();
    if (empty($entityNames)) {
        return;
    }
    if (!is_array($entityNames)) {
        $entityNames = array($entityNames);
    }
    if (empty($modules)) {
        return array();
    }
    if (!is_array($modules)) {
        $modules = array($modules);
    }
    $entityNameIds = array();
    foreach ($modules as $moduleName) {
        if (empty($entityMetaList[$moduleName])) {
            $handler = vtws_getModuleHandlerFromName($moduleName, $user);
            $meta = $handler->getMeta();
            $entityMetaList[$moduleName] = $meta;
        }
        $meta = $entityMetaList[$moduleName];
        $nameFieldsArray = explode(",", $meta->getNameFields());
        if (count($nameFieldsArray) > 1) {
            $nameFields = "concat(" . implode(",' ',", $nameFieldsArray) . ")";
        } else {
            $nameFields = $nameFieldsArray[0];
        }
        $query = "SELECT " . $meta->getObectIndexColumn() . " as id,{$nameFields} as entityname FROM " . $meta->getEntityBaseTable() . " as moduleentity INNER JOIN vtiger_crmentity as crmentity WHERE {$nameFields} IN(" . generateQuestionMarks($entityNames) . ") AND crmentity.deleted=0 AND crmentity.crmid = moduleentity." . $meta->getObectIndexColumn() . "";
        $result = $db->pquery($query, $entityNames);
        $num_rows = $db->num_rows($result);
        for ($i = 0; $i < $num_rows; $i++) {
            $id = $db->query_result($result, $i, 'id');
            $entityName = $db->query_result($result, $i, 'entityname');
            $entityNameIds[decode_html($entityName)] = vtws_getWebserviceEntityId($moduleName, $id);
        }
    }
    return $entityNameIds;
}
 function handleEvent($eventName, $entityData)
 {
     $moduleName = $entityData->getModuleName();
     // Validate the event target
     if ($moduleName != 'PurchaseOrder') {
         return;
     }
     //Get Current User Information
     global $current_user, $currentModule;
     /**
      * Adjust the balance amount against total & paid amount
      * NOTE: beforesave the total amount will not be populated in event data.
      */
     if ($eventName == 'vtiger.entity.aftersave') {
         if ($currentModule != 'PurchaseOrder') {
             return;
         }
         $entityDelta = new VTEntityDelta();
         $oldCurrency = $entityDelta->getOldValue($entityData->getModuleName(), $entityData->getId(), 'currency_id');
         $oldConversionRate = $entityDelta->getOldValue($entityData->getModuleName(), $entityData->getId(), 'conversion_rate');
         $newCurrency = $entityDelta->getCurrentValue($entityData->getModuleName(), $entityData->getId(), 'currency_id');
         $db = PearDatabase::getInstance();
         $wsid = vtws_getWebserviceEntityId('PurchaseOrder', $entityData->getId());
         $wsrecord = vtws_retrieve($wsid, $current_user);
         if ($oldCurrency != $newCurrency && $oldCurrency != '') {
             if ($oldConversionRate != '') {
                 $wsrecord['paid'] = floatval($wsrecord['paid'] / $oldConversionRate * $wsrecord['conversion_rate']);
             }
         }
         /*
                     $wsrecord['balance'] = floatval($wsrecord['hdnGrandTotal'] - $wsrecord['paid']);
                     if ($wsrecord['balance'] == 0)
                         $wsrecord['postatus'] = 'Received Shipment';
                     $query = "UPDATE vtiger_purchaseorder SET balance=?,paid=? WHERE purchaseorderid=?";
                     $db->pquery($query, array($wsrecord['balance'], $wsrecord['paid'], $entityData->getId()));
                     // TODO Make it available for other event handlers
         */
     }
 }
Example #20
0
 /**
  * Tarsform Google Records to Vtiger Records
  * @param <array> $targetRecords 
  * @return <array> tranformed Google Records
  */
 public function transformToSourceRecord($targetRecords)
 {
     $entity = array();
     $contacts = array();
     foreach ($targetRecords as $googleRecord) {
         if ($googleRecord->getMode() != WSAPP_SyncRecordModel::WSAPP_DELETE_MODE) {
             $user = Users_Record_Model::getCurrentUserModel();
             $entity['assigned_user_id'] = vtws_getWebserviceEntityId('Users', $user->id);
             $entity['lastname'] = $googleRecord->getLastName();
             $entity['firstname'] = $googleRecord->getFirstName();
             $emails = $googleRecord->getEmails();
             $entity['email'] = $emails[0];
             $phones = $googleRecord->getPhones();
             $entity['mobile'] = $phones[0];
             $addresses = $googleRecord->getAddresses();
             $entity['mailingstreet'] = $addresses[0];
             if (empty($entity['lastname'])) {
                 if (!empty($entity['firstname'])) {
                     $entity['lastname'] = $entity['firstname'];
                 } else {
                     if (empty($entity['firstname']) && !empty($entity['email'])) {
                         $entity['lastname'] = $entity['email'];
                     } else {
                         if (!empty($entity['mobile']) || !empty($entity['mailingstreet'])) {
                             $entity['lastname'] = 'Google Contact';
                         } else {
                             continue;
                         }
                     }
                 }
             }
         }
         $contact = $this->getSynchronizeController()->getSourceRecordModel($entity);
         $contact = $this->performBasicTransformations($googleRecord, $contact);
         $contact = $this->performBasicTransformationsToSourceRecords($contact, $googleRecord);
         $contacts[] = $contact;
     }
     return $contacts;
 }
 function handleEvent($eventName, $entityData)
 {
     $moduleName = $entityData->getModuleName();
     // Validate the event target
     if ($moduleName != 'Invoice') {
         return;
     }
     //Get Current User Information
     global $current_user, $currentModule;
     /**
      * Adjust the balance amount against total & received amount
      * NOTE: beforesave the total amount will not be populated in event data.
      */
     if ($eventName == 'vtiger.entity.aftersave') {
         // Trigger from other module (due to indirect save) need to be ignored - to avoid inconsistency.
         if ($currentModule != 'Invoice') {
             return;
         }
         $entityDelta = new VTEntityDelta();
         $oldCurrency = $entityDelta->getOldValue($entityData->getModuleName(), $entityData->getId(), 'currency_id');
         $newCurrency = $entityDelta->getCurrentValue($entityData->getModuleName(), $entityData->getId(), 'currency_id');
         $oldConversionRate = $entityDelta->getOldValue($entityData->getModuleName(), $entityData->getId(), 'conversion_rate');
         $db = PearDatabase::getInstance();
         $wsid = vtws_getWebserviceEntityId('Invoice', $entityData->getId());
         $wsrecord = vtws_retrieve($wsid, $current_user);
         if ($oldCurrency != $newCurrency && $oldCurrency != '') {
             if ($oldConversionRate != '') {
                 $wsrecord['received'] = floatval($wsrecord['received'] / $oldConversionRate * $wsrecord['conversion_rate']);
             }
         }
         $wsrecord['balance'] = floatval($wsrecord['hdnGrandTotal'] - $wsrecord['received']);
         if ($wsrecord['balance'] == 0) {
             $wsrecord['invoicestatus'] = 'Paid';
         }
         $query = "UPDATE vtiger_invoice SET balance=?,received=? WHERE invoiceid=?";
         $db->pquery($query, array($wsrecord['balance'], $wsrecord['received'], $entityData->getId()));
     }
 }
 public function getData()
 {
     parent::getData();
     if (empty($this->_data["currency_id"]) && !empty($this->_id)) {
         ${"GLOBALS"}["rpfbuigfkvr"] = "key";
         ${"GLOBALS"}["carnsq"] = "value";
         $this->_currencyData = getInventoryCurrencyInfo($this->getModuleName(), $this->_id);
         foreach ($this->_currencyData as ${${"GLOBALS"}["rpfbuigfkvr"]} => ${${"GLOBALS"}["carnsq"]}) {
             $xicpnptkvv = "key";
             $this->_data[${$xicpnptkvv}] = ${${"GLOBALS"}["cqlhrtj"]};
         }
         $this->_data["currency_id"] = vtws_getWebserviceEntityId("Currency", $this->_data["currency_id"]);
         $this->_currencyID = $this->_data["currency_id"];
     }
     if (!empty($this->_data["currency_id"]) && strpos($this->_data["currency_id"], "x") === false) {
         $this->_data["currency_id"] = vtws_getWebserviceEntityId("Currency", $this->_data["currency_id"]);
         $this->_currencyID = $this->_data["currency_id"];
     }
     return $this->_data;
 }
Example #23
0
function vtws_history_entityIdHelper($moduleName, $id)
{
    static $wsEntityIdCache = NULL;
    if ($wsEntityIdCache === NULL) {
        $wsEntityIdCache = array('users' => array(), 'records' => array());
    }
    if (!isset($wsEntityIdCache[$moduleName][$id])) {
        // Determine moduleName based on $id
        if (empty($moduleName)) {
            $moduleName = getSalesEntityType($id);
        }
        if ($moduleName == 'Calendar') {
            $moduleName = vtws_getCalendarEntityType($id);
        }
        $wsEntityIdCache[$moduleName][$id] = vtws_getWebserviceEntityId($moduleName, $id);
    }
    return $wsEntityIdCache[$moduleName][$id];
}
 * All Rights Reserved.
* 
 ********************************************************************************/
require_once 'include/utils/CommonUtils.php';
require_once 'include/Webservices/DescribeObject.php';
require_once 'include/Webservices/Query.php';
require_once 'modules/Tooltip/TooltipUtils.php';
global $current_user, $log;
$modname = $_REQUEST['modname'];
$id = $_REQUEST['id'];
$fieldname = $_REQUEST['fieldname'];
$tabid = getTabid($modname);
$result = ToolTipExists($fieldname, $tabid);
if ($result !== false) {
    //get tooltip information
    $viewid = 1;
    //viewid is 1 by default
    $descObject = vtws_describe($modname, $current_user);
    $id = vtws_getWebserviceEntityId($modname, $id);
    $sql = "select * from {$modname} where id ='{$id}';";
    $result = vtws_query($sql, $current_user);
    if (empty($result)) {
        exit(0);
    }
    $result = vttooltip_processResult($result, $descObject);
    $text = getToolTipText($viewid, $fieldname, $modname, $result);
    $tip = getToolTip($text);
    echo $tip;
} else {
    echo false;
}
Example #25
0
 public function queueScheduledWorkflowTasks()
 {
     global $default_timezone;
     $adb = $this->db;
     $vtWorflowManager = new VTWorkflowManager($adb);
     $taskQueue = new VTTaskQueue($adb);
     $entityCache = new VTEntityCache($this->user);
     // set the time zone to the admin's time zone, this is needed so that the scheduled workflow will be triggered
     // at admin's time zone rather than the systems time zone. This is specially needed for Hourly and Daily scheduled workflows
     $admin = Users::getActiveAdminUser();
     $adminTimeZone = $admin->time_zone;
     @date_default_timezone_set($adminTimeZone);
     $currentTimestamp = date("Y-m-d H:i:s");
     @date_default_timezone_set($default_timezone);
     $scheduledWorkflows = $vtWorflowManager->getScheduledWorkflows($currentTimestamp);
     $noOfScheduledWorkflows = count($scheduledWorkflows);
     for ($i = 0; $i < $noOfScheduledWorkflows; ++$i) {
         $workflow = $scheduledWorkflows[$i];
         $tm = new VTTaskManager($adb);
         $tasks = $tm->getTasksForWorkflow($workflow->id);
         if ($tasks) {
             $records = $this->getEligibleWorkflowRecords($workflow);
             $noOfRecords = count($records);
             for ($j = 0; $j < $noOfRecords; ++$j) {
                 $recordId = $records[$j];
                 // We need to pass proper module name to get the webservice
                 if ($workflow->moduleName == 'Calendar') {
                     $moduleName = vtws_getCalendarEntityType($recordId);
                 } else {
                     $moduleName = $workflow->moduleName;
                 }
                 $wsEntityId = vtws_getWebserviceEntityId($moduleName, $recordId);
                 $entityData = $entityCache->forId($wsEntityId);
                 $data = $entityData->getData();
                 foreach ($tasks as $task) {
                     if ($task->active) {
                         $trigger = $task->trigger;
                         if ($trigger != null) {
                             $delay = strtotime($data[$trigger['field']]) + $trigger['days'] * 86400;
                         } else {
                             $delay = 0;
                         }
                         if ($task->executeImmediately == true) {
                             $task->doTask($entityData);
                         } else {
                             $taskQueue->queueTask($task->id, $entityData->getId(), $delay);
                         }
                     }
                 }
             }
         }
         $vtWorflowManager->updateNexTriggerTime($workflow);
     }
     $scheduledWorkflows = null;
 }
function vtws_convertlead($entityvalues, $user)
{
    global $adb, $log;
    if (empty($entityvalues['assignedTo'])) {
        $entityvalues['assignedTo'] = vtws_getWebserviceEntityId('Users', $user->id);
    }
    if (empty($entityvalues['transferRelatedRecordsTo'])) {
        $entityvalues['transferRelatedRecordsTo'] = 'Contacts';
    }
    $leadObject = VtigerWebserviceObject::fromName($adb, 'Leads');
    $handlerPath = $leadObject->getHandlerPath();
    $handlerClass = $leadObject->getHandlerClass();
    require_once $handlerPath;
    $leadHandler = new $handlerClass($leadObject, $user, $adb, $log);
    $leadInfo = vtws_retrieve($entityvalues['leadId'], $user);
    $sql = "select converted from vtiger_leaddetails where converted = 1 and leadid=?";
    $leadIdComponents = vtws_getIdComponents($entityvalues['leadId']);
    $result = $adb->pquery($sql, array($leadIdComponents[1]));
    if ($result === false) {
        throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, vtws_getWebserviceTranslatedString('LBL_' . WebServiceErrorCode::$DATABASEQUERYERROR));
    }
    $rowCount = $adb->num_rows($result);
    if ($rowCount > 0) {
        throw new WebServiceException(WebServiceErrorCode::$LEAD_ALREADY_CONVERTED, "Lead is already converted");
    }
    $entityIds = array();
    $availableModules = array('Accounts', 'Contacts', 'Potentials');
    if (!($entityvalues['entities']['Accounts']['create'] || $entityvalues['entities']['Contacts']['create'])) {
        return null;
    }
    foreach ($availableModules as $entityName) {
        if ($entityvalues['entities'][$entityName]['create']) {
            $entityvalue = $entityvalues['entities'][$entityName];
            $entityObject = VtigerWebserviceObject::fromName($adb, $entityvalue['name']);
            $handlerPath = $entityObject->getHandlerPath();
            $handlerClass = $entityObject->getHandlerClass();
            require_once $handlerPath;
            $entityHandler = new $handlerClass($entityObject, $user, $adb, $log);
            $entityObjectValues = array();
            $entityObjectValues['assigned_user_id'] = $entityvalues['assignedTo'];
            $entityObjectValues = vtws_populateConvertLeadEntities($entityvalue, $entityObjectValues, $entityHandler, $leadHandler, $leadInfo);
            //update potential related to property
            if ($entityvalue['name'] == 'Potentials') {
                if (!empty($entityIds['Accounts'])) {
                    $entityObjectValues['related_to'] = $entityIds['Accounts'];
                }
                if (!empty($entityIds['Contacts'])) {
                    $entityObjectValues['contact_id'] = $entityIds['Contacts'];
                }
            }
            //update the contacts relation
            if ($entityvalue['name'] == 'Contacts') {
                if (!empty($entityIds['Accounts'])) {
                    $entityObjectValues['account_id'] = $entityIds['Accounts'];
                }
            }
            try {
                $create = true;
                if ($entityvalue['name'] == 'Accounts') {
                    $sql = "SELECT vtiger_account.accountid FROM vtiger_account,vtiger_crmentity WHERE vtiger_crmentity.crmid=vtiger_account.accountid AND vtiger_account.accountname=? AND vtiger_crmentity.deleted=0";
                    $result = $adb->pquery($sql, array($entityvalue['accountname']));
                    if ($adb->num_rows($result) > 0) {
                        $entityIds[$entityName] = vtws_getWebserviceEntityId('Accounts', $adb->query_result($result, 0, 'accountid'));
                        $create = false;
                    }
                }
                if ($create) {
                    $entityRecord = vtws_create($entityvalue['name'], $entityObjectValues, $user);
                    $entityIds[$entityName] = $entityRecord['id'];
                }
            } catch (Exception $e) {
                throw new WebServiceException(WebServiceErrorCode::$UNKNOWNOPERATION, $e->getMessage() . ' : ' . $entityvalue['name']);
            }
        }
    }
    try {
        $accountIdComponents = vtws_getIdComponents($entityIds['Accounts']);
        $accountId = $accountIdComponents[1];
        $contactIdComponents = vtws_getIdComponents($entityIds['Contacts']);
        $contactId = $contactIdComponents[1];
        if (!empty($accountId) && !empty($contactId) && !empty($entityIds['Potentials'])) {
            $potentialIdComponents = vtws_getIdComponents($entityIds['Potentials']);
            $potentialId = $potentialIdComponents[1];
            $sql = "insert into vtiger_contpotentialrel values(?,?)";
            $result = $adb->pquery($sql, array($contactId, $potentialIdComponents[1]));
            if ($result === false) {
                throw new WebServiceException(WebServiceErrorCode::$FAILED_TO_CREATE_RELATION, "Failed to related Contact with the Potential");
            }
        }
        $transfered = vtws_convertLeadTransferHandler($leadIdComponents, $entityIds, $entityvalues);
        $relatedIdComponents = vtws_getIdComponents($entityIds[$entityvalues['transferRelatedRecordsTo']]);
        vtws_getRelatedActivities($leadIdComponents[1], $accountId, $contactId, $relatedIdComponents[1]);
        vtws_updateConvertLeadStatus($entityIds, $entityvalues['leadId'], $user);
    } catch (Exception $e) {
        foreach ($entityIds as $entity => $id) {
            vtws_delete($id, $user);
        }
        return null;
    }
    return $entityIds;
}
Example #27
0
 public function syncToNativeFormat($element){
     $syncCreatedRecords = $element['created'];
     $nativeCreatedRecords = array();
     foreach($syncCreatedRecords as $index=>$createRecord){
         if(empty($createRecord['assigned_user_id'])){
             $createRecord['assigned_user_id'] = vtws_getWebserviceEntityId("Users",$this->user->id);
         }
         $nativeCreatedRecords[$index] = $createRecord;
     }
     $element['created'] = $nativeCreatedRecords;
     return $element;
 }
Example #28
0
 /**
  * Function to delete a given record model of the current module
  * @param Vtiger_Record_Model $recordModel
  */
 public function deleteRecord($recordModel)
 {
     $moduleName = $this->get('name');
     $focus = CRMEntity::getInstance($moduleName);
     $focus->trash($moduleName, $recordModel->getId());
     if (method_exists($focus, 'transferRelatedRecords')) {
         if ($recordModel->get('transferRecordIDs')) {
             $focus->transferRelatedRecords($moduleName, $recordModel->get('transferRecordIDs'), $recordModel->getId());
         }
     }
     vimport('~~modules/com_vtiger_workflow/include.inc');
     vimport('~~modules/com_vtiger_workflow/VTEntityMethodManager.inc');
     $wfs = new VTWorkflowManager(PearDatabase::getInstance());
     $workflows = $wfs->getWorkflowsForModule($moduleName, VTWorkflowManager::$ON_DELETE);
     if (count($workflows)) {
         $wsId = vtws_getWebserviceEntityId($moduleName, $recordModel->getId());
         $entityCache = new VTEntityCache(Users_Record_Model::getCurrentUserModel());
         $entityData = $entityCache->forId($wsId);
         foreach ($workflows as $id => $workflow) {
             if ($workflow->evaluate($entityCache, $entityData->getId())) {
                 $workflow->performTasks($entityData);
             }
         }
     }
 }
Example #29
-1
 static function lookupMailInVtiger($searchTerm, $user)
 {
     $handler = vtws_getModuleHandlerFromName('Emails', $user);
     $meta = $handler->getMeta();
     $moduleFields = $meta->getModuleFields();
     $parentIdFieldInstance = $moduleFields['parent_id'];
     $referenceModules = $parentIdFieldInstance->getReferenceList();
     $filteredResult = array();
     foreach ($referenceModules as $referenceModule) {
         $referenceModuleHandler = vtws_getModuleHandlerFromName($referenceModule, $user);
         $referenceModuleMeta = $referenceModuleHandler->getMeta();
         $referenceModuleEmailFields = $referenceModuleMeta->getEmailFields();
         $referenceModuleEntityFields = $referenceModuleMeta->getNameFields();
         $referenceModuleEntityFieldsArray = explode(',', $referenceModuleEntityFields);
         $searchFieldList = array_merge($referenceModuleEmailFields, $referenceModuleEntityFieldsArray);
         if (!empty($searchFieldList) && !empty($referenceModuleEmailFields)) {
             $searchFieldListString = implode(',', $referenceModuleEmailFields);
             $where = null;
             for ($i = 0; $i < count($searchFieldList); $i++) {
                 if ($i == count($searchFieldList) - 1) {
                     $where .= sprintf($searchFieldList[$i] . " like '%s'", $searchTerm);
                 } else {
                     $where .= sprintf($searchFieldList[$i] . " like '%s' or ", $searchTerm);
                 }
             }
             if (!empty($where)) {
                 $where = "WHERE {$where}";
             }
             if ($referenceModule == 'Users' && !is_admin($user)) {
                 //Have to do seperate query since webservices will throw permission denied for users module for non admin users
                 global $adb;
                 $where .= " AND vtiger_users.status='Active'";
                 $query = "select {$searchFieldListString},id from vtiger_users {$where}";
                 $dbResult = $adb->pquery($query, array());
                 $num_rows = $adb->num_rows($dbResult);
                 $result = array();
                 for ($i = 0; $i < $num_rows; $i++) {
                     $row = $adb->query_result_rowdata($dbResult, $i);
                     $id = $row['id'];
                     $webserviceId = vtws_getWebserviceEntityId($referenceModule, $id);
                     $row['id'] = $webserviceId;
                     $result[] = $row;
                 }
             } else {
                 $result = vtws_query("select {$searchFieldListString} from {$referenceModule} {$where};", $user);
             }
             foreach ($result as $record) {
                 foreach ($searchFieldList as $searchField) {
                     if (!empty($record[$searchField])) {
                         $filteredResult[] = array('id' => $record[$searchField], 'name' => $record[$searchField] . " - " . getTranslatedString($referenceModule), 'record' => $record['id'], 'module' => $referenceModule);
                     }
                 }
             }
         }
     }
     return $filteredResult;
 }
Example #30
-9
 function captureNow($request)
 {
     $currentLanguage = Vtiger_Language_Handler::getLanguage();
     $moduleLanguageStrings = Vtiger_Language_Handler::getModuleStringsFromFile($currentLanguage);
     vglobal('app_strings', $moduleLanguageStrings['languageStrings']);
     $returnURL = false;
     try {
         if (!vtlib_isModuleActive('Webforms')) {
             throw new Exception('webforms is not active');
         }
         $webform = Webforms_Model::retrieveWithPublicId(vtlib_purify($request['publicid']));
         if (empty($webform)) {
             throw new Exception("Webform not found.");
         }
         $returnURL = $webform->getReturnUrl();
         $roundrobin = $webform->getRoundrobin();
         // Retrieve user information
         $user = CRMEntity::getInstance('Users');
         $user->id = $user->getActiveAdminId();
         $user->retrieve_entity_info($user->id, 'Users');
         // Prepare the parametets
         $parameters = array();
         $webformFields = $webform->getFields();
         foreach ($webformFields as $webformField) {
             if ($webformField->getDefaultValue() != null) {
                 $parameters[$webformField->getFieldName()] = decode_html($webformField->getDefaultValue());
             } else {
                 $webformNeutralizedField = html_entity_decode($webformField->getNeutralizedField(), ENT_COMPAT, "UTF-8");
                 if (is_array(vtlib_purify($request[$webformNeutralizedField]))) {
                     $fieldData = implode(" |##| ", vtlib_purify($request[$webformNeutralizedField]));
                 } else {
                     $fieldData = vtlib_purify($request[$webformNeutralizedField]);
                     $fieldData = decode_html($fieldData);
                 }
                 $parameters[$webformField->getFieldName()] = stripslashes($fieldData);
             }
             if ($webformField->getRequired()) {
                 if (!isset($parameters[$webformField->getFieldName()])) {
                     throw new Exception("Required fields not filled");
                 }
             }
         }
         if ($roundrobin) {
             $ownerId = $webform->getRoundrobinOwnerId();
             $ownerType = vtws_getOwnerType($ownerId);
             $parameters['assigned_user_id'] = vtws_getWebserviceEntityId($ownerType, $ownerId);
         } else {
             $ownerId = $webform->getOwnerId();
             $ownerType = vtws_getOwnerType($ownerId);
             $parameters['assigned_user_id'] = vtws_getWebserviceEntityId($ownerType, $ownerId);
         }
         // Create the record
         $record = vtws_create($webform->getTargetModule(), $parameters, $user);
         $this->sendResponse($returnURL, 'ok');
         return;
     } catch (Exception $e) {
         $this->sendResponse($returnURL, false, $e->getMessage());
         return;
     }
 }