public static function getConfig($type) { $log = vglobal('log'); $log->debug('Start ' . __CLASS__ . ':' . __FUNCTION__ . " | Type: {$type}"); $cache = Vtiger_Cache::get('MarketingProcesses', $type); if ($cache) { $log->debug('End ' . __CLASS__ . ':' . __FUNCTION__); return $cache; } $db = PearDatabase::getInstance(); $result = $db->pquery('SELECT * FROM yetiforce_proc_marketing WHERE type = ?;', [$type]); if ($db->num_rows($result) == 0) { return []; } $config = []; for ($i = 0; $i < $db->num_rows($result); ++$i) { $param = $db->query_result_raw($result, $i, 'param'); $value = $db->query_result_raw($result, $i, 'value'); if (in_array($param, ['groups', 'status', 'convert_status'])) { $config[$param] = $value == '' ? [] : explode(',', $value); } else { $config[$param] = $value; } } Vtiger_Cache::set('MarketingProcesses', $type, $config); $log->debug('End ' . __CLASS__ . ':' . __FUNCTION__); return $config; }
/** * Function to retrieve name fields of a module * @return <array> - array which contains fields which together construct name fields */ public function getNameFields() { $nameFieldObject = Vtiger_Cache::get('EntityField', $this->getName()); $moduleName = $this->getName(); if ($nameFieldObject && $nameFieldObject->fieldname) { $this->nameFields = explode(',', $nameFieldObject->fieldname); } else { $adb = PearDatabase::getInstance(); $query = "SELECT fieldname, tablename, entityidfield FROM vtiger_entityname WHERE tabid = ?"; $result = $adb->pquery($query, array(getTabid('Calendar'))); $this->nameFields = array(); if ($result) { $rowCount = $adb->num_rows($result); if ($rowCount > 0) { $fieldNames = $adb->query_result($result, 0, 'fieldname'); $this->nameFields = explode(',', $fieldNames); } } $entiyObj = new stdClass(); $entiyObj->basetable = $adb->query_result($result, 0, 'tablename'); $entiyObj->basetableid = $adb->query_result($result, 0, 'entityidfield'); $entiyObj->fieldname = $fieldNames; Vtiger_Cache::set('EntityField', $this->getName(), $entiyObj); } return $this->nameFields; }
/** * Function to get the Display Value, for the current field type with given DB Insert Value * @param <Object> $value * @return <Object> */ public function getDisplayValue($tree, $record = false, $recordInstance = false, $rawText = false) { $template = $this->get('field')->getFieldParams(); $name = Vtiger_Cache::get('TreeData' . $template, $tree); if ($name) { return $name; } $adb = PearDatabase::getInstance(); $result = $adb->pquery('SELECT * FROM vtiger_trees_templates_data WHERE templateid = ? AND tree = ?', [$template, $tree]); $parentName = ''; $module = $this->get('field')->getModuleName(); $name = false; if ($adb->num_rows($result)) { if ($adb->query_result_raw($result, 0, 'depth') > 0) { $parenttrre = $adb->query_result_raw($result, 0, 'parenttrre'); $cut = strlen('::' . $tree); $parenttrre = substr($parenttrre, 0, -$cut); $pieces = explode('::', $parenttrre); $parent = end($pieces); $result2 = $adb->pquery("SELECT name FROM vtiger_trees_templates_data WHERE templateid = ? AND tree = ?", [$template, $parent]); $parentName = $adb->query_result_raw($result2, 0, 'name'); $parentName = '(' . vtranslate($parentName, $module) . ') '; } $name = $parentName . vtranslate($adb->query_result($result, 0, 'name'), $module); } Vtiger_Cache::set('TreeData' . $template, $tree, $name); return $name; }
public static function getConfig($process, $type, $procesParam = false) { $log = vglobal('log'); $log->debug('Start ' . __CLASS__ . ':' . __FUNCTION__ . " | Process: {$process}, Type: {$type}"); $db = PearDatabase::getInstance(); $processList = ['marketing' => 'yetiforce_proc_marketing', 'sales' => 'yetiforce_proc_sales']; $cache = Vtiger_Cache::get('ProcessesModel', $process . $type); if ($cache) { $log->debug('End ' . __CLASS__ . ':' . __FUNCTION__); return $cache; } $result = $db->pquery('SELECT * FROM ' . $processList[$process] . ' WHERE type = ?;', [$type]); if ($db->num_rows($result) == 0) { return []; } $config = []; for ($i = 0; $i < $db->num_rows($result); ++$i) { $param = $db->query_result_raw($result, $i, 'param'); $value = $db->query_result_raw($result, $i, 'value'); if ($param == 'users') { $config[$param] = $value == '' ? [] : explode(',', $value); } else { $config[$param] = $value; } if ($procesParam != false && $param == $procesParam) { Vtiger_Cache::set('ProcessesModel', $process . $type . $procesParam, $value); $log->debug('End ' . __CLASS__ . ':' . __FUNCTION__); return $value; } } Vtiger_Cache::set('ProcessesModel', $process . $type, $config); $log->debug('End ' . __CLASS__ . ':' . __FUNCTION__); return $config; }
/** * Static Function to get the instance of Vtiger Module Model for the given id or name * @param mixed id or name of the module */ public static function getInstance() { $instance = Vtiger_Cache::get('calendar', $value); if (!$instance) { $instance = new self(); } return $instance; }
public static function getInstance($module) { $instance = Vtiger_Cache::get('transferOwnership', $module); if (!$instance) { $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'TransferOwnership', $module); $instance = new $modelClassName(); $instance->set('module', $module); Vtiger_Cache::set('transferOwnership', $module, $instance); } return $instance; }
/** * Get invnetory instance * @param string $moduleName Module name * @return Vtiger_Inventory_Model instance */ public static function getInstance($moduleName) { $instance = Vtiger_Cache::get('Inventory', $moduleName); if (!$instance) { $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'Inventory', $moduleName); $instance = new $modelClassName(); $instance->initialize($moduleName); Vtiger_Cache::set('Inventory', $moduleName, $instance); } return $instance; }
/** * Function to get all the available picklist values for the current field * @return <Array> List of picklist values if the field is of type picklist or multipicklist, null otherwise. */ public function getLimits() { $limits = Vtiger_Cache::get('Inventory', 'limits'); if (!$limits) { $db = PearDatabase::getInstance(); $limits = []; $result = $db->pquery('SELECT * FROM a_yf_inventory_limits WHERE status = ?', [0]); while ($row = $db->fetch_array($result)) { $limits[$row['id']] = $row; } Vtiger_Cache::set('Inventory', 'limits', $limits); } return $limits; }
/** * Function to get all the available picklist values for the current field * @return <Array> List of picklist values if the field is of type picklist or multipicklist, null otherwise. */ public function getTaxes() { $taxs = Vtiger_Cache::get('taxes', 'global'); if (!$taxs) { $db = PearDatabase::getInstance(); $taxs = []; $result = $db->pquery('SELECT * FROM a_yf_taxes_global WHERE status = ?', [0]); while ($row = $db->fetch_array($result)) { $taxs[$row['id']] = $row; } Vtiger_Cache::set('taxes', 'global', $taxs); } return $taxs; }
/** * Function to get the share users list * @param int $record record ID * @param bool $returnArray whether return data in an array * @return array */ public static function getSharedOwners($record, $moduleName = false) { $shownerid = Vtiger_Cache::get('SharedOwner', $record); if ($shownerid) { return $shownerid; } $db = PearDatabase::getInstance(); $result = $db->pquery('SELECT DISTINCT userid FROM u_yf_crmentity_showners WHERE crmid = ?', [$record]); $values = []; while (($shownerid = $db->getSingleValue($result)) !== false) { $values[] = $shownerid; } Vtiger_Cache::set('SharedOwner', $record, $values); return $values; }
/** * Loading the list of multireference fields * @param string $sourceModule Source module name * @param string $destinationModule Destination module name * @return array */ public function getMultiReferenceValueFields($sourceModule, $destinationModule) { $return = Vtiger_Cache::get('mrvf-' . $sourceModule, $destinationModule); if (!$return) { $db = PearDatabase::getInstance(); $query = 'SELECT * FROM vtiger_field WHERE tabid = ? AND presence <> ? AND fieldparams LIKE \'{"module":"' . $destinationModule . '"%\';'; $result = $db->pquery($query, [Vtiger_Functions::getModuleId($sourceModule), 1]); $return = []; while ($field = $db->fetch_array($result)) { $return[] = $field; } Vtiger_Cache::set('mrvf-' . $sourceModule, $destinationModule, $return); } return $return; }
/** * Function to get the instance of the CompanyDetails model for a given organization id * @param <Number> $id * @return Vtiger_CompanyDetails_Model instance */ public static function getInstanceById($id = 1) { $companyDetails = Vtiger_Cache::get('vtiger', 'organization'); if (!$companyDetails) { $db = PearDatabase::getInstance(); $sql = 'SELECT * FROM vtiger_organizationdetails WHERE organization_id=?'; $params = array($id); $result = $db->pquery($sql, $params); $companyDetails = new self(); if ($result && $db->num_rows($result) > 0) { $resultRow = $db->query_result_rowdata($result, 0); $companyDetails->setData($resultRow); } Vtiger_Cache::set('vtiger','organization',$companyDetails); } return $companyDetails; }
/** * Loading the list of multireference fields * @param string $sourceModule Source module name * @param string $destinationModule Destination module name * @return array */ public static function getRelatedModules($moduleName) { $return = Vtiger_Cache::get('mrvf', $moduleName); if (!$return) { $db = PearDatabase::getInstance(); $moduleId = Vtiger_Functions::getModuleId($moduleName); $query = 'SELECT DISTINCT vtiger_tab.name FROM vtiger_field INNER JOIN vtiger_relatedlists ON vtiger_relatedlists.related_tabid = vtiger_field.tabid' . ' LEFT JOIN vtiger_tab ON vtiger_tab.tabid = vtiger_field.tabid' . ' WHERE vtiger_relatedlists.tabid = ? AND vtiger_field.presence <> ? AND vtiger_field.uitype = ? AND fieldparams LIKE \'{"module":"' . $moduleName . '"%\';'; $result = $db->pquery($query, [$moduleId, 1, 305]); $return = []; while ($module = $db->getSingleValue($result)) { $return[] = $module; } $moduleModel = Vtiger_Module_Model::getInstance($moduleName); $fieldsModel = $moduleModel->getFields(); $relatedModules = []; foreach ($fieldsModel as $fieldName => $fieldModel) { if ($fieldModel->getFieldDataType() == Vtiger_Field_Model::REFERENCE_TYPE) { $referenceList = $fieldModel->getReferenceList(); $relatedModules = array_merge($relatedModules, $referenceList); } } $relatedModules = array_unique($relatedModules); foreach ($relatedModules as $key => $relatedModule) { if ($relatedModule != 'Users') { $relatedModules[$key] = Vtiger_Functions::getModuleId($relatedModule); } else { unset($relatedModules[$key]); } } if (count($relatedModules) > 0) { $query = 'SELECT DISTINCT vtiger_tab.name FROM vtiger_field LEFT JOIN vtiger_tab ON vtiger_tab.tabid = vtiger_field.tabid' . ' WHERE vtiger_field.uitype = ? AND vtiger_field.tabid IN (\'' . implode("','", $relatedModules) . '\') AND vtiger_field.presence <> ? ' . 'AND fieldparams LIKE \'{"module":"' . $moduleName . '"%\' ;'; $result = $db->pquery($query, [1, 305]); while ($module = $db->getSingleValue($result)) { $return[] = $module; } } $return = array_unique($return); Vtiger_Cache::set('mrvf-', $moduleName, $return); } return $return; }
public static function getConfig($type = false) { $log = vglobal('log'); $log->debug('Start ' . __CLASS__ . ':' . __FUNCTION__ . " | Type: {$type}"); $cache = Vtiger_Cache::get('SalesProcesses', $type == false ? 'all' : $type); if ($cache) { $log->debug('End ' . __CLASS__ . ':' . __FUNCTION__); return $cache; } $db = PearDatabase::getInstance(); $params = []; $returnArrayForFields = ['groups', 'status', 'calculationsstatus', 'salesstage', 'salesstage', 'assetstatus']; $sql = 'SELECT * FROM yetiforce_proc_sales'; if ($type) { $sql .= ' WHERE type = ?'; $params[] = $type; } $result = $db->pquery($sql, $params); if ($db->num_rows($result) == 0) { return []; } $config = []; for ($i = 0; $i < $db->num_rows($result); ++$i) { $param = $db->query_result_raw($result, $i, 'param'); $value = $db->query_result_raw($result, $i, 'value'); if (in_array($param, $returnArrayForFields)) { $value = $value == '' ? [] : explode(',', $value); } if ($type) { $config[$param] = $value; } else { $config[$db->query_result_raw($result, $i, 'type')][$param] = $value; } } Vtiger_Cache::set('SalesProcesses', $type == false ? 'all' : $type, $config); $log->debug('End ' . __CLASS__ . ':' . __FUNCTION__); return $config; }
/** * Function to retrieve block instances for a module * @param <type> $moduleModel - module instance * @return <array> - list of Vtiger_Block_Model */ public static function getAllForModule($moduleModel) { $blockObjects = Vtiger_Cache::get('ModuleBlock', $moduleModel->getName()); if (!$blockObjects) { $blockObjects = parent::getAllForModule($moduleModel); Vtiger_Cache::set('ModuleBlock', $moduleModel->getName(), $blockObjects); } $blockModelList = array(); if ($blockObjects) { foreach ($blockObjects as $blockObject) { $blockModelList[] = self::getInstanceFromBlockObject($blockObject); } } return $blockModelList; }
protected static function preModuleInitialize2() { if (!Vtiger_Cache::get('EntityField', 'all')) { $db = PearDatabase::getInstance(); // Initialize meta information - to speed up instance creation (Vtiger_ModuleBasic::initialize2) $result = $db->pquery('SELECT modulename,tablename,entityidfield,fieldname FROM vtiger_entityname', array()); for ($index = 0, $len = $db->num_rows($result); $index < $len; ++$index) { $fieldNames = $db->query_result($result, $index, 'fieldname'); $modulename = $db->query_result($result, $index, 'modulename'); //added to handle entity names for these two modules //@Note: need to move these to database switch ($modulename) { case 'HelpDesk': $fieldNames = 'ticket_title'; break; case 'Documents': $fieldNames = 'notes_title'; break; } $entiyObj = new stdClass(); $entiyObj->basetable = $db->query_result($result, $index, 'tablename'); $entiyObj->basetableid = $db->query_result($result, $index, 'entityidfield'); $entiyObj->fieldname = $fieldNames; Vtiger_Cache::set('EntityField', $modulename, $entiyObj); Vtiger_Cache::set('EntityField', 'all', true); } } }
/** * Function to get all the accessible groups * @return <Array> */ public function getAccessibleGroups($private = "", $module = false) { //TODO:Remove dependence on $_REQUEST for the module name in the below API $accessibleGroups = Vtiger_Cache::get('vtiger-' . $private, 'accessiblegroups'); if (!$accessibleGroups) { $accessibleGroups = get_group_array(false, "ACTIVE", "", $private, $module); Vtiger_Cache::set('vtiger-' . $private, 'accessiblegroups', $accessibleGroups); } return get_group_array(false, "ACTIVE", "", $private); }
/** Function to get the Group Id for a given group groupname * @param $groupname -- Groupname * @returns Group Id -- Type Integer */ function getGrpId($groupname) { $log = vglobal('log'); $log->debug("Entering getGrpId(" . $groupname . ") method ..."); $adb = PearDatabase::getInstance(); $groupid = Vtiger_Cache::get('group', $groupname); if (!$groupid && $groupid !== 0) { $result = $adb->pquery("select groupid from vtiger_groups where groupname=?", array($groupname)); $groupid = $adb->num_rows($result) > 0 ? $adb->query_result($result, 0, 'groupid') : 0; Vtiger_Cache::set('group', $groupname, $groupid); } $log->debug("Exiting getGrpId method ..."); return $groupid; }
/** * Function to get visibilty permissions of a Field * @param <String> $accessmode * @return <Boolean> */ public function getPermissions($accessmode = 'readonly') { $user = Users_Record_Model::getCurrentUserModel(); $privileges = $user->getPrivileges(); if ($privileges->hasGlobalReadPermission()) { return true; } else { $modulePermission = Vtiger_Cache::get('modulePermission-' . $accessmode, $this->getModuleId()); if (!$modulePermission) { $modulePermission = self::preFetchModuleFieldPermission($this->getModuleId(), $accessmode); } if (array_key_exists($this->getId(), $modulePermission)) { return true; } else { return false; } } }
/** * Function to get the share users list * @param int $record record ID * @param bool $returnArray whether return data in an array * @return array */ public static function getSharedOwners($record, $moduleName = false) { $shownerid = Vtiger_Cache::get('SharedOwner', $record); if ($shownerid) { return $shownerid; } $db = PearDatabase::getInstance(); if ($moduleName === false) { $recordMetaData = Vtiger_Functions::getCRMRecordMetadata($parentRecord); $moduleName = $recordMetaData['setype']; } $shownersTable = self::getShownerTable($moduleName); $result = $db->pquery('SELECT DISTINCT userid FROM ' . $shownersTable . ' WHERE crmid = ?', [$record]); $values = []; while (($shownerid = $db->getSingleValue($result)) !== false) { $values[] = $shownerid; } Vtiger_Cache::set('SharedOwner', $record, $values); return $values; }
static function lookupEntityNameInfo($module) { $entityNames = Vtiger_Cache::get('EntityInfo', $module); if ($entityNames) { return $entityNames; } else { if (isset(self::$_module_entityname_cache[$module])) { return self::$_module_entityname_cache[$module]; } } return false; }
public function checkFiltersForRecord($recordId) { $test = Vtiger_Cache::get('mfCheckFiltersForRecord' . $this->getId(), $recordId); if ($test !== false) { return $test; } vimport("~/modules/com_vtiger_workflow/VTJsonCondition.inc"); vimport("~/modules/com_vtiger_workflow/VTEntityCache.inc"); vimport("~/include/Webservices/Retrieve.php"); $conditionStrategy = new VTJsonCondition(); $currentUser = Users_Record_Model::getCurrentUserModel(); $entityCache = new VTEntityCache($currentUser); $wsId = vtws_getWebserviceEntityId($this->getName(), $recordId); $test = $conditionStrategy->evaluate($this->getRaw('conditions'), $entityCache, $wsId); Vtiger_Cache::set('mfCheckFiltersForRecord' . $this->getId(), $recordId, $test); return $test; }
/** * Get field name for the module taxes * @param string $moduleName Module name * @return string Tax field name */ public function getTaxField($moduleName) { $cache = Vtiger_Cache::get('InventoryIsGetTaxField', $moduleName); if ($cache) { return $cache; } $return = false; if ($moduleName == '') { return $return; } $moduleModel = Vtiger_Module_Model::getInstance($moduleName); foreach ($moduleModel->getFields() as $fieldName => $fieldModel) { if ($fieldModel->get('uitype') == 303) { $return = $fieldName; continue; } } Vtiger_Cache::set('InventoryIsGetTaxField', $moduleName, $return); return $return; }
public static function getAll($configurable = false) { global $log; $log->debug("Entering Vtiger_Action_Model::getAll(" . $configurable . ") method ..."); $actionModels = Vtiger_Cache::get('vtiger', 'actions'); if (!$actionModels) { $db = PearDatabase::getInstance(); $sql = 'SELECT * FROM vtiger_actionmapping'; $params = array(); if ($configurable) { $sql .= ' WHERE actionname NOT IN (' . generateQuestionMarks(self::$nonConfigurableActions) . ')'; array_push($params, self::$nonConfigurableActions); } $result = $db->pquery($sql, $params); $noOfRows = $db->num_rows($result); $actionModels = array(); for ($i = 0; $i < $noOfRows; ++$i) { $actionModels[] = self::getInstanceFromQResult($result, $i); } Vtiger_Cache::set('vtiger', 'actions', $actionModels); } $log->debug("Exiting Vtiger_Action_Model::getAll(" . $configurable . ") method ..."); return $actionModels; }
/** * Function to get all the Vtiger Link Models for a module of the given list of link types * @param <Number> $tabid * @param <Array> $type * @param <Array> $parameters * @return <Array> - List of Vtiger_Link_Model instances */ public static function getAllByType($tabid, $type = false, $parameters = false) { $links = Vtiger_Cache::get('links-' . $tabid, $type); if (!$links) { $links = parent::getAllByType($tabid, $type, $parameters); Vtiger_Cache::set('links-' . $tabid, $type, $links); } $linkModels = array(); foreach ($links as $linkType => $linkObjects) { foreach ($linkObjects as $linkObject) { $linkModels[$linkType][] = self::getInstanceFromLinkObject($linkObject); } } if (!is_array($type)) { $type = array($type); } $diffTypes = array_diff($type, array_keys($linkModels)); foreach ($diffTypes as $linkType) { $linkModels[$linkType] = array(); } return $linkModels; }
/** * Return list of special functions for chosen module * @param string $moduleName - name of the module * @return array array of special functions */ public static function getSpecialFunctions($moduleName) { $specialFunctions = Vtiger_Cache::get('PdfSpecialFunctions', $moduleName); if ($specialFunctions) { return $specialFunctions; } $specialFunctions = []; if (file_exists('modules/' . $moduleName . '/pdfs/special_functions')) { foreach (new DirectoryIterator('modules/' . $moduleName . '/pdfs/special_functions') as $file) { if ($file->isFile() && $file->getExtension() == 'php' && $file->getFilename() != 'example.php') { include 'modules/' . $moduleName . '/pdfs/special_functions/' . $file->getFilename(); $functionName = $file->getBasename('.php'); $sfClassName = 'Pdf_' . $functionName; $pdfInstance = new $sfClassName(); if (in_array('all', $pdfInstance->permittedModules) || in_array($moduleName, $pdfInstance->permittedModules)) { $specialFunctions[$functionName] = $pdfInstance; } } } } foreach (new DirectoryIterator('modules/Vtiger/pdfs/special_functions/') as $file) { if ($file->isFile() && $file->getExtension() == 'php' && $file->getFilename() != 'example.php' && !in_array($file->getBasename('.php'), $specialFunctions)) { include 'modules/Vtiger/pdfs/special_functions/' . $file->getFilename(); $functionName = $file->getBasename('.php'); $sfClassName = 'Pdf_' . $functionName; $pdfInstance = new $sfClassName(); if (in_array('all', $pdfInstance->permittedModules) || in_array($moduleName, $pdfInstance->permittedModules)) { $specialFunctions[$functionName] = $pdfInstance; } } } Vtiger_Cache::set('PdfSpecialFunctions', $moduleName, $specialFunctions); return $specialFunctions; }
public static function getInstanceFromFieldId($fieldId, $moduleTabId = false) { $fieldModel = Vtiger_Cache::get('FieldModel', $fieldId); if ($fieldModel) { return $fieldModel; } $field = Vtiger_Functions::getModuleFieldInfoWithId($fieldId); $fieldModel = new self(); $fieldModel->initialize($field); Vtiger_Cache::set('FieldModel', $fieldId, $fieldModel); return $fieldModel; }
/** * Function returns the instance of Folder model * @return <Reports_Folder_Model> */ public static function getAll() { $db = PearDatabase::getInstance(); $folders = Vtiger_Cache::get('reports', 'folders'); if (!$folders) { $folders = array(); $result = $db->pquery("SELECT * FROM vtiger_reportfolder ORDER BY foldername ASC", array()); $noOfFolders = $db->num_rows($result); if ($noOfFolders > 0) { for ($i = 0; $i < $noOfFolders; $i++) { $folderModel = Reports_Folder_Model::getInstance(); $values = $db->query_result_rowdata($result, $i); $folders[$values['folderid']] = $folderModel->setData($values); Vtiger_Cache::set('reportsFolder', $values['folderid'], $folderModel); } } Vtiger_Cache::set('reports', 'folders', $folders); } return $folders; }
/** * Function to get Shared Owner from record */ public function getSharedOwner($record) { $log = vglobal('log'); $log->info("Entering Into fn getSharedOwner($record)"); $db = PearDatabase::getInstance(); $shownerid = Vtiger_Cache::get('SharedOwner', $record); if (!$shownerid) { $result = $db->pquery('SELECT shownerid FROM vtiger_crmentity WHERE crmid = ?', [$record]); $shownerid = $db->getSingleValue($result); Vtiger_Cache::set('SharedOwner', $record, $shownerid); } $log->info("Exiting fn getSharedOwner()"); return Vtiger_Functions::getArrayFromValue($shownerid); }
/** * Function to get Shared Owner from record */ public function getSharedOwner($record) { $log = vglobal('log'); $log->info("Entering Into fn getSharedOwner({$record})"); $db = PearDatabase::getInstance(); $sharedOwner = Vtiger_Cache::get('SharedOwner', $record); if (!$sharedOwner) { $Result = $db->pquery('SELECT shownerid FROM vtiger_crmentity WHERE crmid = ?', array($record)); $shownerid = $db->query_result($Result, 0, 'shownerid'); Vtiger_Cache::set('SharedOwner', $record, $shownerid); } else { $shownerid = $sharedOwner; } $log->info("Exiting fn getSharedOwner()"); return Vtiger_Functions::getArrayFromValue($shownerid); }