本文整理汇总了PHP中VTEntityData类的典型用法代码示例。如果您正苦于以下问题:PHP VTEntityData类的具体用法?PHP VTEntityData怎么用?PHP VTEntityData使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了VTEntityData类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: handleEvent
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();
}
}
}
示例2: fetchEntity
function fetchEntity($moduleName, $recordId)
{
$adb = PearDatabase::getInstance();
$entityData = VTEntityData::fromEntityId($adb, $recordId);
if ($moduleName == 'HelpDesk') {
$entityData->set('comments', getTicketComments($recordId));
}
self::$newEntity[$moduleName][$recordId] = $entityData;
}
示例3: handleEvent
function handleEvent($eventName, $entityData)
{
$adb = PearDatabase::getInstance();
$moduleName = $entityData->getModuleName();
$recordId = $entityData->getId();
if ($eventName == 'vtiger.entity.beforesave') {
if (!empty($recordId)) {
self::$oldEntity[$moduleName][$recordId] = VTEntityData::fromEntityId($adb, $recordId);
}
}
if ($eventName == 'vtiger.entity.aftersave') {
self::$newEntity[$moduleName][$recordId] = VTEntityData::fromEntityId($adb, $recordId);
$this->computeDelta($moduleName, $recordId);
}
}
示例4: vtws_sendRecoverPassword
function vtws_sendRecoverPassword($username)
{
global $adb, $log, $current_user, $PORTAL_URL, $url_code;
$log->debug("Entering function vtws_sendRecoverPassword");
$ctors = $adb->query("select contactid,email,user_password\n\t\t\tfrom vtiger_contactdetails\n\t\t\tinner join vtiger_portalinfo on id=contactid\n\t\t\twhere isactive=1 and user_name='{$username}'");
if (!ctors or $adb->num_rows($ctors) == 0) {
throw new WebServiceException(WebServiceErrorCode::$INVALIDUSERPWD, "Invalid username: username not found or not active");
}
require_once 'modules/Emails/mail.php';
require_once 'modules/Contacts/Contacts.php';
$cto = $adb->fetch_array($ctors);
$password = $cto['user_password'];
$entityData = VTEntityData::fromEntityId($adb, $cto['contactid']);
$contents = Contacts::getPortalEmailContents($entityData, $password);
$subject = getTranslatedString('Customer Portal Login Details', 'Contacts');
$mail_status = send_mail('Contacts', $cto['email'], $current_user->user_name, "", $subject, $contents);
$log->debug("Exiting function vtws_sendRecoverPassword");
return $mail_status;
}
示例5: save
//.........这里部分代码省略.........
$oplkjyxi = "availTaxes";
foreach (${$oplkjyxi} as ${${"GLOBALS"}["wfuwxbmiwytq"]}) {
$psuluqnb = "request_tax_name";
$enefpgduf = "tax";
${"GLOBALS"}["wxlvsgkcw"] = "request_tax_name";
${${"GLOBALS"}["hvjpdk"]} = ${$enefpgduf}["taxname"];
${${"GLOBALS"}["wxlvsgkcw"]} = ${${"GLOBALS"}["hvjpdk"]} . "_group_percentage";
$lifliipv = "request_tax_name";
$_REQUEST[${${"GLOBALS"}["hwivgkl"]}] = isset($this->_groupTax[${${"GLOBALS"}["hwivgkl"]}]) ? $this->_groupTax[${$psuluqnb}] : 0;
$bltbxkcxbjyp = "tmpTaxValue";
${${"GLOBALS"}["fvbuscvwjf"]} = $_REQUEST["total"] * ($_REQUEST[${$lifliipv}] / 100);
${${"GLOBALS"}["zjswudci"]} += ${$bltbxkcxbjyp};
}
$_REQUEST["total"] += ${${"GLOBALS"}["yirabwmnwgyp"]};
}
$_REQUEST["shipping_handling_charge"] = $this->_shippingCost;
${${"GLOBALS"}["cxnjuagap"]} = 0;
$bbluqvmmcrl = "tax";
foreach (${$mdwcbjhvim} as ${$bbluqvmmcrl}) {
$rbwcrso = "request_tax_name";
${"GLOBALS"}["woxvppdlct"] = "tmpTaxValue";
$xeqhidsvg = "shipTaxValue";
${"GLOBALS"}["rihoezbjibn"] = "tax_name";
${${"GLOBALS"}["rihoezbjibn"]} = ${${"GLOBALS"}["wfuwxbmiwytq"]}["taxname"];
${$rbwcrso} = ${${"GLOBALS"}["hvjpdk"]} . "_sh_percent";
$uaabpfjmwc = "request_tax_name";
$_REQUEST["sh" . ${${"GLOBALS"}["hwivgkl"]}] = isset($this->_shipTaxes[${${"GLOBALS"}["hwivgkl"]}]) ? $this->_shipTaxes[${${"GLOBALS"}["hwivgkl"]}] : 0;
${${"GLOBALS"}["fvbuscvwjf"]} = $_REQUEST["shipping_handling_charge"] * ($_REQUEST["sh" . ${$uaabpfjmwc}] / 100);
${$xeqhidsvg} += ${${"GLOBALS"}["woxvppdlct"]};
}
$_REQUEST["total"] += ${${"GLOBALS"}["ouawiowlgku"]} + $_REQUEST["shipping_handling_charge"];
$_REQUEST["adjustment"] = floatval($this->get("txtAdjustment"));
$_REQUEST["total"] += $_REQUEST["adjustment"];
${$nxxrnbh} = $this->getInternalObject();
$intObject->mode = "edit";
$intObject->isLineItemUpdate = true;
@saveInventoryProductDetails(${$klivirms}, $this->getModuleName());
for (${${"GLOBALS"}["jsntgvnqkf"]} = 1; ${${"GLOBALS"}["jsntgvnqkf"]} <= count($this->_listitems); ${$qwpblm}++) {
${"GLOBALS"}["xzgznik"] = "values";
${${"GLOBALS"}["xzgznik"]} = array();
$dqnotemwlbq = "params";
${$dqnotemwlbq} = array();
foreach (${${"GLOBALS"}["ogvkpmc"]} as ${${"GLOBALS"}["nctgtuliixp"]}) {
${"GLOBALS"}["fjordnwx"] = "values";
${${"GLOBALS"}["fjordnwx"]}[] = "`" . ${${"GLOBALS"}["nctgtuliixp"]} . "` = ?";
${${"GLOBALS"}["tjyzhfdvth"]}[] = $this->_listitems[${${"GLOBALS"}["jsntgvnqkf"]} - 1][${${"GLOBALS"}["nctgtuliixp"]}];
}
if (count(${${"GLOBALS"}["ibmlnecaubpt"]}) > 0) {
$nvtwyqcc = "params";
$wbzhsv = "i";
$glpeqaibe = "params";
${${"GLOBALS"}["tjyzhfdvth"]}[] = $this->getId();
$mjhhtobppu = "sql";
${$nvtwyqcc}[] = ${$wbzhsv};
${${"GLOBALS"}["hdblop"]} = "UPDATE vtiger_inventoryproductrel SET " . implode(",", ${${"GLOBALS"}["ibmlnecaubpt"]}) . " WHERE id = ? AND sequence_no = ?";
$adb->pquery(${$mjhhtobppu}, ${$glpeqaibe});
}
}
}
if (!empty(${${"GLOBALS"}["xkutivbm"]})) {
$wrqjvjvs = "update_query";
${"GLOBALS"}["ryhoienvnsn"] = "cur_sym_rate";
$xepbzcbhw = "update_params";
${"GLOBALS"}["ohiigcodbwo"] = "conversion_rate";
$pcrolhc = "currency_id";
${"GLOBALS"}["udferc"] = "conversion_rate";
$fkgwwhoop = "intObject";
${"GLOBALS"}["nglnmk"] = "update_query";
${"GLOBALS"}["nvezfxsotm"] = "currency_id";
if (strpos(${${"GLOBALS"}["nvezfxsotm"]}, "x") !== false) {
${"GLOBALS"}["twtpeleg"] = "parts";
${${"GLOBALS"}["bbeqpsqwehf"]} = explode("x", ${${"GLOBALS"}["xkutivbm"]});
${${"GLOBALS"}["xkutivbm"]} = ${${"GLOBALS"}["twtpeleg"]}[1];
} else {
${"GLOBALS"}["kuscdvfpt"] = "currency_id";
${${"GLOBALS"}["kuscdvfpt"]} = ${${"GLOBALS"}["xkutivbm"]};
}
$ksoimju = "cur_sym_rate";
${$ksoimju} = getCurrencySymbolandCRate(${${"GLOBALS"}["xkutivbm"]});
${${"GLOBALS"}["ohiigcodbwo"]} = ${${"GLOBALS"}["ryhoienvnsn"]}["rate"];
${"GLOBALS"}["epcnplti"] = "update_params";
${$fkgwwhoop} = $this->getInternalObject();
${$wrqjvjvs} = "update " . $intObject->table_name . " set currency_id = ?, conversion_rate = ? WHERE " . $intObject->table_index . " = ?";
${$xepbzcbhw} = array(${$pcrolhc}, ${${"GLOBALS"}["udferc"]}, $this->_id);
$adb->pquery(${${"GLOBALS"}["nglnmk"]}, ${${"GLOBALS"}["epcnplti"]});
}
if (file_exists(vglobal("root_directory") . DIRECTORY_SEPARATOR . "modules" . DIRECTORY_SEPARATOR . "Invoice" . DIRECTORY_SEPARATOR . "InvoiceHandler.php")) {
${"GLOBALS"}["hebripdxg"] = "entityData";
${"GLOBALS"}["llplslhg"] = "adb";
require_once "modules/Invoice/InvoiceHandler.php";
require_once "include/events/VTEventHandler.inc";
require_once "data/VTEntityDelta.php";
${${"GLOBALS"}["hebripdxg"]} = \VTEntityData::fromEntityId(${${"GLOBALS"}["llplslhg"]}, $this->getId(), $this->getModuleName());
$omsgxnkjeni = "handler";
${$omsgxnkjeni} = new \InvoiceHandler();
$handler->handleEvent("vtiger.entity.aftersave", ${${"GLOBALS"}["xxguhqgid"]});
}
$this->afterTransfer();
$this->_data = false;
}
示例6: triggerAfterSaveEventHandlers
public function triggerAfterSaveEventHandlers()
{
$adb = PearDatabase::getInstance();
require_once "include/events/include.inc";
//In Bulk mode stop triggering events
if (!self::isBulkSaveMode()) {
$em = new VTEventsManager($adb);
// Initialize Event trigger cache
$em->initTriggerCache();
$entityData = VTEntityData::fromCRMEntity($this);
}
//Event triggering code ends
if ($em) {
//Event triggering code
$em->triggerEvent("vtiger.entity.aftersave", $entityData);
$em->triggerEvent("vtiger.entity.aftersave.final", $entityData);
}
}
示例7: restore
/** Function to restore a deleted record of specified module with given crmid
* @param $module -- module name:: Type varchar
* @param $entity_ids -- list of crmids :: Array
*/
function restore($module, $id)
{
global $current_user, $adb;
$this->db->println("TRANS restore starts {$module}");
$this->db->startTransaction();
$date_var = date("Y-m-d H:i:s");
$query = 'UPDATE vtiger_crmentity SET deleted=0,modifiedtime=?,modifiedby=? WHERE crmid = ?';
$this->db->pquery($query, array($this->db->formatDate($date_var, true), $current_user->id, $id), true, "Error restoring records :");
//Restore related entities/records
$this->restoreRelatedRecords($module, $id);
//Event triggering code
require_once "include/events/include.inc";
global $adb;
$em = new VTEventsManager($adb);
// Initialize Event trigger cache
$em->initTriggerCache();
$this->id = $id;
$entityData = VTEntityData::fromCRMEntity($this);
//Event triggering code
$em->triggerEvent("vtiger.entity.afterrestore", $entityData);
//Event triggering code ends
$this->db->completeTransaction();
$this->db->println("TRANS restore ends");
}
示例8: transformOwnerShipAndDelete
function transformOwnerShipAndDelete($userId, $transformToUserId)
{
$adb = PearDatabase::getInstance();
$em = new VTEventsManager($adb);
// Initialize Event trigger cache
$em->initTriggerCache();
$entityData = VTEntityData::fromUserId($adb, $userId);
//set transform user id
$entityData->set('transformtouserid', $transformToUserId);
$em->triggerEvent("vtiger.entity.beforedelete", $entityData);
vtws_transferOwnership($userId, $transformToUserId);
//delete from user vtiger_table;
$sql = "delete from vtiger_users where id=?";
$adb->pquery($sql, array($userId));
//Delete user extension in asterisk.
$sql = "delete from vtiger_asteriskextensions where userid=?";
$adb->pquery($sql, array($userId));
}
示例9: trigger
/**
* Trigger event based on CRM Record
* @param String Name of the Event to trigger
* @param Integer CRM record id on which event needs to be triggered.
*/
static function trigger($eventname, $crmid)
{
if (!self::hasSupport()) {
return;
}
$adb = PearDatabase::getInstance();
$checkres = $adb->pquery("SELECT setype, crmid, deleted FROM vtiger_crmentity WHERE crmid=?", array($crmid));
if ($adb->num_rows($checkres)) {
$result = $adb->fetch_array($checkres, 0);
if ($result['deleted'] == '0') {
$module = $result['setype'];
$moduleInstance = CRMEntity::getInstance($module);
$moduleInstance->retrieve_entity_info($result['crmid'], $module);
$moduleInstance->id = $result['crmid'];
$current_user = vglobal('current_user');
if (!$current_user) {
$current_user = new Users();
$current_user->id = $moduleInstance->column_fields['assigned_user_id'];
}
// Trigger the event
$em = new VTEventsManager($adb);
$em->triggerEvent($eventname, VTEntityData::fromCRMEntity($moduleInstance));
}
}
}
示例10: relateEntities
/**
* Function to related two records of different entity types
*/
function relateEntities($focus, $sourceModule, $sourceRecordId, $destinationModule, $destinationRecordIds)
{
$adb = PearDatabase::getInstance();
$log = vglobal('log');
$log->debug("Entering relateEntities method ({$sourceModule}, {$sourceRecordId}, {$destinationModule}, {$destinationRecordIds})");
require_once 'include/events/include.inc';
//require_once('modules/com_vtiger_workflow/VTWorkflowManager.inc');
//require_once('modules/com_vtiger_workflow/VTEntityCache.inc');
$em = new VTEventsManager($adb);
$em->initTriggerCache();
if (!is_array($destinationRecordIds)) {
$destinationRecordIds = [$destinationRecordIds];
}
$data = [];
$data['CRMEntity'] = $focus;
$data['entityData'] = VTEntityData::fromEntityId($adb, $sourceRecordId);
$data['sourceModule'] = $sourceModule;
$data['sourceRecordId'] = $sourceRecordId;
$data['destinationModule'] = $destinationModule;
foreach ($destinationRecordIds as $destinationRecordId) {
$data['destinationRecordId'] = $destinationRecordId;
$em->triggerEvent('vtiger.entity.link.before', $data);
$focus->save_related_module($sourceModule, $sourceRecordId, $destinationModule, $destinationRecordId);
$focus->trackLinkedInfo($sourceModule, $sourceRecordId, $destinationModule, $destinationRecordId);
/*
$wfs = new VTWorkflowManager($adb);
$workflows = $wfs->getWorkflowsForModule($sourceModule, VTWorkflowManager::$ON_RELATED);
$entityCache = new VTEntityCache(Users_Record_Model::getCurrentUserModel());
$entityData = VTEntityData::fromCRMEntity($focus);
$entityData->eventType = VTWorkflowManager::$ON_RELATED;
$entityData->relatedInfo = [
'destId' => $destinationRecordId,
'destModule' => $destinationModule,
];
foreach ($workflows as $id => $workflow) {
if ($workflow->evaluate($entityCache, $entityData->getId())) {
$workflow->performTasks($entityData);
}
}
*/
$em->triggerEvent('vtiger.entity.link.after', $data);
}
$log->debug("Exiting relateEntities method ...");
}
示例11: restore
/** Function to restore a deleted record of specified module with given crmid
* @param $module -- module name:: Type varchar
* @param $entity_ids -- list of crmids :: Array
*/
function restore($module, $id)
{
$db = PearDatabase::getInstance();
$currentUser = vglobal('current_user');
$db->startTransaction();
$db->update('vtiger_crmentity', ['deleted' => 0, 'modifiedtime' => date('Y-m-d H:i:s'), 'modifiedby' => $currentUser->id], 'crmid = ?', [$id]);
//Restore related entities/records
$this->restoreRelatedRecords($module, $id);
//Event triggering code
require_once 'include/events/include.inc';
$em = new VTEventsManager($db);
// Initialize Event trigger cache
$em->initTriggerCache();
$this->id = $id;
$entityData = VTEntityData::fromCRMEntity($this);
//Event triggering code
$em->triggerEvent('vtiger.entity.afterrestore', $entityData);
//Event triggering code ends
$db->completeTransaction();
}
示例12: Project
require_once "data/Tracker.php";
require_once "modules/com_vtiger_workflow/VTWorkflowManager.inc";
require_once "modules/com_vtiger_workflow/VTTaskManager.inc";
require_once "modules/com_vtiger_workflow/VTWorkflowApplication.inc";
require_once "modules/com_vtiger_workflow/VTEntityMethodManager.inc";
require_once "include/utils/CommonUtils.php";
require_once "include/events/SqlResultIterator.inc";
require_once "modules/com_vtiger_workflow/VTWorkflowUtils.php";
require_once "modules/Project/Project.php";
$focus1 = new Project();
$focus1->retrieve_entity_info($pcdetailsproject, "Project");
$focus1->id = $pcdetailsproject;
$em = new VTEventsManager($adb);
// Initialize Event trigger cache
$em->initTriggerCache();
$entityData = VTEntityData::fromCRMEntity($focus1);
$em->triggerEvent("vtiger.entity.beforesave.modifiable", $entityData);
$em->triggerEvent("vtiger.entity.beforesave", $entityData);
$em->triggerEvent("vtiger.entity.beforesave.final", $entityData);
$em->triggerEvent("vtiger.entity.aftersave", $entityData);
//}
$projectQuery1 = $adb->query("select * from vtiger_project where projectid={$pcdetailsproject}");
if ($adb->query_result($projectQuery1, 0, "substatusproj") == "CAT_parts sent by Teknema" && $adb->query_result($projectQuery1, 0, "statopartech") == 'SHIPPED') {
$logpart .= "Movimento frecce avvenuto con successo </span><br><br>";
$logs[$i - 1] .= "Movimento frecce avvenuto con successo";
} elseif ($subs != "CAT_parts request" && strstr($subs, "attesa parti") != '' && $adb->query_result($projectQuery1, 0, "statopartech") == 'SHIPPED') {
$logpart .= "<span style='color:blue'> Substatus errato {$d['2']} </span></span><br><br>";
$logs[$i - 1] .= "Substatus errato {$d['2']}";
} else {
$logpart .= "Substatus non modificato </span><br><br>";
$logs[$i - 1] .= "Substatus non modificato";
示例13: createEntityRecord
public function createEntityRecord($moduleName, $entityLabel)
{
$moduleHandler = vtws_getModuleHandlerFromName($moduleName, $this->user);
$moduleMeta = $moduleHandler->getMeta();
$moduleFields = $moduleMeta->getModuleFields();
$mandatoryFields = $moduleMeta->getMandatoryFields();
$entityNameFieldsString = $moduleMeta->getNameFields();
$entityNameFields = explode(',', $entityNameFieldsString);
$fieldData = array();
foreach ($entityNameFields as $entityNameField) {
$entityNameField = trim($entityNameField);
if (in_array($entityNameField, $mandatoryFields)) {
$fieldData[$entityNameField] = $entityLabel;
}
}
foreach ($mandatoryFields as $mandatoryField) {
if (empty($fieldData[$mandatoryField])) {
$fieldInstance = $moduleFields[$mandatoryField];
if ($fieldInstance->getFieldDataType() == 'owner') {
$fieldData[$mandatoryField] = $this->user->id;
} else {
if (!in_array($mandatoryField, $entityNameFields) && $fieldInstance->getFieldDataType() != 'reference') {
$fieldData[$mandatoryField] = '????';
}
}
}
}
$fieldData = DataTransform::sanitizeData($fieldData, $moduleMeta);
$entityIdInfo = vtws_create($moduleName, $fieldData, $this->user);
$adb = PearDatabase::getInstance();
$entityIdComponents = vtws_getIdComponents($entityIdInfo['id']);
$recordId = $entityIdComponents[1];
$entityfields = getEntityFieldNames($moduleName);
switch ($moduleName) {
case 'HelpDesk':
$entityfields['fieldname'] = array('ticket_title');
break;
case 'Documents':
$entityfields['fieldname'] = array('notes_title');
break;
case 'Documents':
$entityfields['fieldname'] = array('notes_title');
break;
}
$label = '';
if (is_array($entityfields['fieldname'])) {
foreach ($entityfields['fieldname'] as $field) {
$label .= $fieldData[$field] . " ";
}
} else {
$label = $fieldData[$entityfields['fieldname']];
}
$label = trim($label);
$adb->pquery('UPDATE vtiger_crmentity SET label=? WHERE crmid=?', array($label, $recordId));
$recordModel = Vtiger_Record_Model::getCleanInstance($moduleName);
$focus = $recordModel->getEntity();
$focus->id = $recordId;
$focus->column_fields = $fieldData;
$this->entityData[] = VTEntityData::fromCRMEntity($focus);
$focus->updateMissingSeqNumber($moduleName);
return $entityIdInfo;
}
示例14: vtws_convertlead
function vtws_convertlead($entityvalues, $user)
{
$adb = PearDatabase::getInstance();
$log = vglobal('log');
$log->debug('Start ' . __CLASS__ . ':' . __FUNCTION__);
if (empty($entityvalues['assignedTo'])) {
$entityvalues['assignedTo'] = vtws_getWebserviceEntityId('Users', $user->id);
}
if (empty($entityvalues['transferRelatedRecordsTo'])) {
$entityvalues['transferRelatedRecordsTo'] = 'Accounts';
}
$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) {
$log->error('Error converting a lead: ' . vtws_getWebserviceTranslatedString('LBL_' . WebServiceErrorCode::$DATABASEQUERYERROR));
throw new WebServiceException(WebServiceErrorCode::$DATABASEQUERYERROR, vtws_getWebserviceTranslatedString('LBL_' . WebServiceErrorCode::$DATABASEQUERYERROR));
}
$rowCount = $adb->num_rows($result);
if ($rowCount > 0) {
$log->error('Error converting a lead: Lead is already converted');
throw new WebServiceException(WebServiceErrorCode::$LEAD_ALREADY_CONVERTED, "Lead is already converted");
}
require_once "include/events/include.inc";
$em = new VTEventsManager($adb);
// Initialize Event trigger cache
$em->initTriggerCache();
$entityData = VTEntityData::fromEntityId($adb, $leadIdComponents[1]);
$em->triggerEvent('entity.convertlead.before', [$entityvalues, $user, $leadInfo]);
$entityIds = [];
$availableModules = ['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['parent_id'] = $entityIds['Accounts'];
}
}
try {
$create = true;
if ($entityvalue['name'] == 'Accounts' && $entityvalue['convert_to_id'] && is_int($entityvalue['convert_to_id'])) {
$entityIds[$entityName] = vtws_getWebserviceEntityId('Accounts', $entityvalue['convert_to_id']);
$create = false;
}
if ($create) {
$entityRecord = vtws_create($entityvalue['name'], $entityObjectValues, $user);
$entityIds[$entityName] = $entityRecord['id'];
}
} catch (Exception $e) {
$log->error('Error converting a lead: ' . $e->getMessage());
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);
//.........这里部分代码省略.........
示例15: DeleteEntity
/**
* This function returns no value but handles the delete functionality of each entity.
* Input Parameter are $module - module name, $return_module - return module name, $focus - module object, $record - entity id, $return_id - return entity id.
*/
function DeleteEntity($module, $return_module, $focus, $record, $return_id)
{
global $log, $adb;
$log->debug("Entering DeleteEntity method ({$module}, {$return_module}, {$record}, {$return_id})");
require_once "include/events/include.inc";
$em = new VTEventsManager($adb);
$em->initTriggerCache();
$entityData = VTEntityData::fromEntityId($adb, $record);
$em->triggerEvent("vtiger.entity.beforeunlink", $entityData);
if ($module != $return_module && !empty($return_module) && !empty($return_id)) {
$focus->unlinkRelationship($record, $return_module, $return_id);
$focus->trackUnLinkedInfo($return_module, $return_id, $module, $record);
} else {
$focus->trash($module, $record);
}
if ($em) {
$entityData = VTEntityData::fromEntityId($adb, $record);
$em->triggerEvent("vtiger.entity.afterunlink", $entityData);
}
$log->debug("Exiting DeleteEntity method ...");
}