public function UpdateLabels($params) { $adb = PearDatabase::getInstance(); $tabid = (int) $params['tabid']; $modulesEntity = self::getModulesEntity($tabid); $moduleEntity = $modulesEntity[$tabid]; $modulename = $moduleEntity['modulename']; $tablename = $moduleEntity['tablename']; $entityidfield = $moduleEntity['entityidfield']; $fieldname = $moduleEntity['fieldname']; $searchcolumn = $moduleEntity['searchcolumn']; $moduleInfo = Vtiger_Functions::getModuleFieldInfos($modulename); $columns_name = explode(',', $fieldname); $columns_search = explode(',', $searchcolumn); $sql_ext = ''; $sql_fieldname = ''; $sql_searchcolumn = ''; $moduleInfoExtend = []; foreach ($moduleInfo as $field => $fieldInfo) { $moduleInfoExtend[$fieldInfo['columnname']] = $fieldInfo; } foreach ($columns_name as $key => $columnName) { $fieldObiect = $moduleInfoExtend[$columnName]; if (in_array($fieldObiect['uitype'], array(10, 51, 75, 81))) { $sql_ext .= " LEFT JOIN (SELECT extj_{$key}.crmid, extj_{$key}.label AS ext_{$columnName} FROM vtiger_crmentity extj_{$key}) ext_{$key} ON ext_{$key}.crmid = " . $fieldObiect['tablename'] . ".{$columnName}"; $sql_fieldname .= ",ext_{$columnName}"; } else { $sql_fieldname .= ",{$columnName}"; } } foreach ($columns_search as $key => $columnName) { $fieldObiect = $moduleInfoExtend[$columnName]; if (in_array($fieldObiect['uitype'], array(10, 51, 75, 81))) { $sql_ext2 = " LEFT JOIN (SELECT extj_{$key}.crmid, extj_{$key}.label AS ext_{$columnName} FROM vtiger_crmentity extj_{$key}) ext_{$key} ON ext_{$key}.crmid = " . $fieldObiect['tablename'] . ".{$columnName}"; if (!strstr($sql_ext, $sql_ext2)) { $sql_ext .= $sql_ext2; } $sql_searchcolumn .= ",ext_{$columnName}"; } else { $sql_searchcolumn .= ",{$columnName}"; } } $sql = "UPDATE vtiger_crmentity"; $sql .= " LEFT JOIN {$tablename} ON vtiger_crmentity.crmid = {$tablename}.{$entityidfield} "; $sql .= $sql_ext; $sql .= " SET vtiger_crmentity.label = CONCAT_WS(' ' {$sql_fieldname}), vtiger_crmentity.searchlabel = CONCAT_WS(' ' {$sql_searchcolumn})"; $sql .= " WHERE vtiger_crmentity.setype = '{$modulename}'"; $adb->query($sql); }
static function getModuleFieldTypeOfDataInfos($tables, $tabid = '') { $result = array(); if (!empty($tabid)) { $module = Vtiger_Functions::getModuleName($tabid); $fieldInfos = Vtiger_Functions::getModuleFieldInfos($tabid); foreach ($fieldInfos as $name => $field) { if (($field['displaytype'] == '1' || $field['displaytype'] == '3') && ($field['presence'] == '0' || $field['presence'] == '2')) { $label = Vtiger_Functions::getTranslatedString($field['fieldlabel'], $module); $result[$name] = array($label => $field['typeofdata']); } } } else { throw new Exception('Field lookup by table no longer supported'); } return $result; }