예제 #1
0
 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);
 }
예제 #2
0
 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;
 }