Exemplo n.º 1
0
/**
 * Function to get the field information from module name and field label
 */
function getFieldByReportLabel($module, $label)
{
    // this is required so the internal cache is populated or reused.
    getColumnFields($module);
    //lookup all the accessible fields
    $cachedModuleFields = VTCacheUtils::lookupFieldInfo_Module($module);
    if ($module == 'Calendar') {
        $cachedEventsFields = VTCacheUtils::lookupFieldInfo_Module('Events');
        if ($cachedModuleFields == false) {
            $cachedModuleFields = $cachedEventsFields;
        } else {
            $cachedModuleFields = array_merge($cachedModuleFields, $cachedEventsFields);
        }
    }
    if (empty($cachedModuleFields)) {
        return null;
    }
    $label = decode_html($label);
    foreach ($cachedModuleFields as $fieldInfo) {
        $fieldLabel = str_replace(' ', '_', $fieldInfo['fieldlabel']);
        if ($label == $fieldLabel) {
            return $fieldInfo;
        }
    }
    return null;
}
Exemplo n.º 2
0
/**
 * Function to get the field information from module name and field label
 */
function getFieldByReportLabel($module, $label)
{
    // this is required so the internal cache is populated or reused.
    getColumnFields($module);
    //lookup all the accessible fields
    $cachedModuleFields = VTCacheUtils::lookupFieldInfo_Module($module);
    if (empty($cachedModuleFields)) {
        return null;
    }
    foreach ($cachedModuleFields as $fieldInfo) {
        $fieldLabel = str_replace(' ', '_', $fieldInfo['fieldlabel']);
        if ($label == $fieldLabel) {
            return $fieldInfo;
        }
    }
    return null;
}
/**
 * Function to get the field information from module name and field label
 */
function getFieldByReportLabel($module, $label)
{
    $cacheLabel = VTCacheUtils::getReportFieldByLabel($module, $label);
    if ($cacheLabel) {
        return $cacheLabel;
    }
    // this is required so the internal cache is populated or reused.
    getColumnFields($module);
    //lookup all the accessible fields
    $cachedModuleFields = VTCacheUtils::lookupFieldInfo_Module($module);
    $label = decode_html($label);
    if ($module == 'Calendar') {
        $cachedEventsFields = VTCacheUtils::lookupFieldInfo_Module('Events');
        if ($cachedEventsFields) {
            if (empty($cachedModuleFields)) {
                $cachedModuleFields = $cachedEventsFields;
            } else {
                $cachedModuleFields = array_merge($cachedModuleFields, $cachedEventsFields);
            }
        }
        if ($label == 'Start_Date_and_Time') {
            $label = 'Start_Date_&_Time';
        }
    }
    if (empty($cachedModuleFields)) {
        return null;
    }
    foreach ($cachedModuleFields as $fieldInfo) {
        $fieldLabel = str_replace(' ', '_', $fieldInfo['fieldlabel']);
        $fieldLabel = decode_html($fieldLabel);
        //SalesPlatform.ru begin fix get field info by label
        if ($label == $fieldLabel || $label == getTranslatedString($fieldLabel, $module)) {
            //if($label == $fieldLabel) {
            //SalesPlatform.ru end
            VTCacheUtils::setReportFieldByLabel($module, $label, $fieldInfo);
            return $fieldInfo;
        }
    }
    return null;
}
Exemplo n.º 4
0
Arquivo: utils.php Projeto: yunter/crm
/** Function to get column fields for a given module
 * @param $module -- module:: Type string
 * @returns $column_fld -- column field :: Type array
 *
 */
function getColumnFields($module)
{
    global $log;
    $log->debug("Entering getColumnFields(" . $module . ") method ...");
    $log->debug("in getColumnFields " . $module);
    // Lookup in cache for information
    $cachedModuleFields = VTCacheUtils::lookupFieldInfo_Module($module);
    if ($cachedModuleFields === false) {
        global $adb;
        $tabid = getTabid($module);
        if ($module == 'Calendar') {
            $tabid = array('9', '16');
        }
        // To overcome invalid module names.
        if (empty($tabid)) {
            return array();
        }
        // Let us pick up all the fields first so that we can cache information
        $sql = "SELECT tabid, fieldname, fieldid, fieldlabel, columnname, tablename, uitype, typeofdata, presence\n\t\tFROM vtiger_field WHERE tabid in (" . generateQuestionMarks($tabid) . ")";
        $result = $adb->pquery($sql, array($tabid));
        $noofrows = $adb->num_rows($result);
        if ($noofrows) {
            while ($resultrow = $adb->fetch_array($result)) {
                // Update information to cache for re-use
                VTCacheUtils::updateFieldInfo($resultrow['tabid'], $resultrow['fieldname'], $resultrow['fieldid'], $resultrow['fieldlabel'], $resultrow['columnname'], $resultrow['tablename'], $resultrow['uitype'], $resultrow['typeofdata'], $resultrow['presence']);
            }
        }
        // For consistency get information from cache
        $cachedModuleFields = VTCacheUtils::lookupFieldInfo_Module($module);
    }
    if ($module == 'Calendar') {
        $cachedEventsFields = VTCacheUtils::lookupFieldInfo_Module('Events');
        if ($cachedEventsFields) {
            if (empty($cachedModuleFields)) {
                $cachedModuleFields = $cachedEventsFields;
            } else {
                $cachedModuleFields = array_merge($cachedModuleFields, $cachedEventsFields);
            }
        }
    }
    $column_fld = array();
    if ($cachedModuleFields) {
        foreach ($cachedModuleFields as $fieldinfo) {
            $column_fld[$fieldinfo['fieldname']] = '';
        }
    }
    $log->debug("Exiting getColumnFields method ...");
    return $column_fld;
}
 /** END * */
 function buildSearchQueryForFieldTypes($uitypes, $value = false)
 {
     global $adb;
     if (!is_array($uitypes)) {
         $uitypes = array($uitypes);
     }
     $module = get_class($this);
     $cachedModuleFields = VTCacheUtils::lookupFieldInfo_Module($module);
     if ($cachedModuleFields === false) {
         getColumnFields($module);
         // This API will initialize the cache as well
         // We will succeed now due to above function call
         $cachedModuleFields = VTCacheUtils::lookupFieldInfo_Module($module);
     }
     $lookuptables = array();
     $lookupcolumns = array();
     foreach ($cachedModuleFields as $fieldinfo) {
         if (in_array($fieldinfo['uitype'], $uitypes)) {
             $lookuptables[] = $fieldinfo['tablename'];
             $lookupcolumns[] = $fieldinfo['columnname'];
         }
     }
     $entityfields = getEntityField($module);
     $querycolumnnames = implode(',', $lookupcolumns);
     $entitycolumnnames = $entityfields['fieldname'];
     $query = "select crmid as id, {$querycolumnnames}, {$entitycolumnnames} as name ";
     $query .= " FROM {$this->table_name} ";
     $query .= " INNER JOIN vtiger_crmentity ON {$this->table_name}.{$this->table_index} = vtiger_crmentity.crmid AND deleted = 0 ";
     //remove the base table
     $LookupTable = array_unique($lookuptables);
     $indexes = array_keys($LookupTable, $this->table_name);
     if (!empty($indexes)) {
         foreach ($indexes as $index) {
             unset($LookupTable[$index]);
         }
     }
     foreach ($LookupTable as $tablename) {
         $query .= " INNER JOIN {$tablename}\n\t\t\t\t\t\ton {$this->table_name}.{$this->table_index} = {$tablename}." . $this->tab_name_index[$tablename];
     }
     if (!empty($lookupcolumns) && $value !== false) {
         $query .= " WHERE ";
         $i = 0;
         $columnCount = count($lookupcolumns);
         foreach ($lookupcolumns as $columnname) {
             if (!empty($columnname)) {
                 if ($i == 0 || $i == $columnCount) {
                     $query .= sprintf("%s = '%s'", $columnname, $value);
                 } else {
                     $query .= sprintf(" OR %s = '%s'", $columnname, $value);
                 }
                 $i++;
             }
         }
     }
     return $query;
 }
Exemplo n.º 6
0
 public function buildSearchQueryWithUIType($uitype, $value, $module)
 {
     if (empty($value)) {
         return false;
     }
     $cachedModuleFields = VTCacheUtils::lookupFieldInfo_Module($module);
     if ($cachedModuleFields === false) {
         getColumnFields($module);
         // This API will initialize the cache as well
         // We will succeed now due to above function call
         $cachedModuleFields = VTCacheUtils::lookupFieldInfo_Module($module);
     }
     $lookuptables = array();
     $lookupcolumns = array();
     foreach ($cachedModuleFields as $fieldinfo) {
         if (in_array($fieldinfo['uitype'], array($uitype))) {
             $lookuptables[] = $fieldinfo['tablename'];
             $lookupcolumns[] = $fieldinfo['columnname'];
         }
     }
     $entityfields = getEntityField($module);
     $querycolumnnames = implode(',', $lookupcolumns);
     $entitycolumnnames = $entityfields['fieldname'];
     $query = "select id as id, {$querycolumnnames}, {$entitycolumnnames} as name ";
     $query .= " FROM vtiger_users";
     if (!empty($lookupcolumns)) {
         $query .= " WHERE deleted=0 AND ";
         $i = 0;
         $columnCount = count($lookupcolumns);
         foreach ($lookupcolumns as $columnname) {
             if (!empty($columnname)) {
                 if ($i == 0 || $i == $columnCount) {
                     $query .= sprintf("%s = '%s'", $columnname, $value);
                 } else {
                     $query .= sprintf(" OR %s = '%s'", $columnname, $value);
                 }
                 $i++;
             }
         }
     }
     return $query;
 }
Exemplo n.º 7
0
function getModuleSequenceField($module)
{
    global $adb, $log;
    $log->debug("Entering function getModuleSequenceFieldName ({$module})...");
    $field = null;
    if (!empty($module)) {
        // First look at the cached information
        $cachedModuleFields = VTCacheUtils::lookupFieldInfo_Module($module);
        if ($cachedModuleFields === false) {
            //uitype 4 points to Module Numbering Field
            $seqColRes = $adb->pquery("SELECT fieldname, fieldlabel, columnname FROM vtiger_field WHERE uitype=? AND tabid=? and vtiger_field.presence in (0,2)", array('4', getTabid($module)));
            if ($adb->num_rows($seqColRes) > 0) {
                $fieldname = $adb->query_result($seqColRes, 0, 'fieldname');
                $columnname = $adb->query_result($seqColRes, 0, 'columnname');
                $fieldlabel = $adb->query_result($seqColRes, 0, 'fieldlabel');
                $field = array();
                $field['name'] = $fieldname;
                $field['column'] = $columnname;
                $field['label'] = $fieldlabel;
            }
        } else {
            foreach ($cachedModuleFields as $fieldinfo) {
                if ($fieldinfo['uitype'] == '4') {
                    $field = array();
                    $field['name'] = $fieldinfo['fieldname'];
                    $field['column'] = $fieldinfo['columnname'];
                    $field['label'] = $fieldinfo['fieldlabel'];
                    break;
                }
            }
        }
    }
    $log->debug("Exiting getModuleSequenceFieldName...");
    return $field;
}
Exemplo n.º 8
0
 function getFieldByPDFMakerLabel($module, $label)
 {
     $cacheLabel = VTCacheUtils::getReportFieldByLabel($module, $label);
     if ($cacheLabel) {
         return $cacheLabel;
     }
     // this is required so the internal cache is populated or reused.
     getColumnFields($module);
     //lookup all the accessible fields
     $cachedModuleFields = VTCacheUtils::lookupFieldInfo_Module($module);
     if (empty($cachedModuleFields)) {
         return null;
     }
     foreach ($cachedModuleFields as $fieldInfo) {
         $fieldName = str_replace(' ', '_', $fieldInfo['fieldname']);
         if ($label == $fieldName) {
             VTCacheUtils::setReportFieldByLabel($module, $label, $fieldInfo);
             return $fieldInfo;
         }
     }
     return null;
 }
 protected function generateEntityModel($entity, $module, $prefix, $model)
 {
     // Get only active field information
     $cachedModuleFields = VTCacheUtils::lookupFieldInfo_Module($module);
     if (isset($this->focus->column_fields['currency_id'])) {
         $currencyInfo = getCurrencyInfo($this->focus->column_fields['currency_id']);
         $currency = $currencyInfo['code'];
     } else {
         $currency = 'RUB';
     }
     if ($cachedModuleFields) {
         foreach ($cachedModuleFields as $fieldname => $fieldinfo) {
             $fieldname = $fieldinfo['fieldname'];
             $type = explode('~', $fieldinfo['typeofdata']);
             $uitype = $fieldinfo['uitype'];
             if ($uitype == 10 && !empty($entity->column_fields[$fieldname])) {
                 $entityid = $entity->column_fields[$fieldname];
                 $entityType = getSalesEntityType($entityid);
                 $recordName = array_values(getEntityName($entityType, $entityid));
                 $recordName = $recordName[0];
                 $model->set($prefix . $fieldname, $recordName);
             } else {
                 if ($uitype == 117) {
                     $currencyInfo = getCurrencyInfo($entity->column_fields[$fieldname]);
                     $model->set($prefix . $fieldname, getTranslatedString($currencyInfo['name'], $module));
                 } else {
                     switch ($type[0]) {
                         case 'N':
                         case 'NN':
                             $model->set($prefix . $fieldname, $this->formatPrice($entity->column_fields[$fieldname]));
                             $model->set($prefix . $fieldname . '_literal', $this->num2str($entity->column_fields[$fieldname], false, $currency));
                             $model->set(strtoupper($prefix) . strtoupper(str_replace(" ", "", $fieldinfo['fieldlabel'])) . '_LITERAL', $model->get($prefix . $fieldname . '_literal'));
                             $model->set(getTranslatedString(strtoupper($prefix), $module) . str_replace(" ", "", getTranslatedString($fieldinfo['fieldlabel'], $module)) . getTranslatedString('_literal'), $model->get($prefix . $fieldname . '_literal'));
                             break;
                         case 'D':
                             $model->set($prefix . $fieldname, $this->literalDate($entity->column_fields[$fieldname]));
                             $model->set($prefix . $fieldname . '_short', $this->shortDate($entity->column_fields[$fieldname]));
                             $model->set($prefix . $fieldname . '_mmyyyy', $this->mmyyyyDate($entity->column_fields[$fieldname]));
                             $model->set(strtoupper($prefix) . strtoupper(str_replace(" ", "", $fieldinfo['fieldlabel'])) . '_SHORT', $model->get($prefix . $fieldname . '_short'));
                             $model->set(getTranslatedString(strtoupper($prefix), $module) . str_replace(" ", "", getTranslatedString($fieldinfo['fieldlabel'], $module)) . getTranslatedString('_short'), $model->get($prefix . $fieldname . '_short'));
                             break;
                         case 'C':
                             if ($entity->column_fields[$fieldname] == 0) {
                                 $model->set($prefix . $fieldname, 'Нет');
                             } else {
                                 $model->set($prefix . $fieldname, 'Да');
                             }
                             break;
                         case 'V':
                             $model->set($prefix . $fieldname, nl2br($entity->column_fields[$fieldname]));
                             $model->set($prefix . $fieldname . '_translated', nl2br(getTranslatedString($entity->column_fields[$fieldname], $module)));
                             break;
                         default:
                             $model->set($prefix . $fieldname, $entity->column_fields[$fieldname]);
                             break;
                     }
                 }
             }
             // Add human-readable variables
             $model->set(strtoupper($prefix) . strtoupper(str_replace(" ", "", $fieldinfo['fieldlabel'])), $model->get($prefix . $fieldname));
             $model->set(getTranslatedString(strtoupper($prefix), $module) . str_replace(" ", "", getTranslatedString($fieldinfo['fieldlabel'], $module)), $model->get($prefix . $fieldname));
         }
     }
 }
Exemplo n.º 10
0
 /**
  * Filter in-active fields based on type
  *
  * @param String $module
  */
 function filterInactiveFields($module)
 {
     if ($this->__inactive_fields_filtered) {
         return;
     }
     global $adb, $mod_strings;
     // Look for fields that has presence value NOT IN (0,2)
     $cachedModuleFields = VTCacheUtils::lookupFieldInfo_Module($module, array('1'));
     if ($cachedModuleFields === false) {
         // Initialize the fields calling suitable API
         getColumnFields($module);
         $cachedModuleFields = VTCacheUtils::lookupFieldInfo_Module($module, array('1'));
     }
     $hiddenFields = array();
     if ($cachedModuleFields) {
         foreach ($cachedModuleFields as $fieldinfo) {
             $fieldLabel = $fieldinfo['fieldlabel'];
             // NOTE: We should not translate the label to enable field diff based on it down
             $fieldName = $fieldinfo['fieldname'];
             $tableName = str_replace("vtiger_", "", $fieldinfo['tablename']);
             $hiddenFields[$fieldLabel] = array($tableName => $fieldName);
         }
     }
     if (isset($this->list_fields)) {
         $this->list_fields = array_diff_assoc($this->list_fields, $hiddenFields);
     }
     if (isset($this->search_fields)) {
         $this->search_fields = array_diff_assoc($this->search_fields, $hiddenFields);
     }
     // To avoid re-initializing everytime.
     $this->__inactive_fields_filtered = true;
 }