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; }
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; } }
/** * 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; }
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); }
/** * 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; }
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(); }
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'); }
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>'; }
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); }
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(); }
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); } } }
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(); }
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 */ } }
/** * 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; }
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; }
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; }
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; }
/** * 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); } } } }
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; }
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; } }