public function addField($fieldType, $blockId, $params) { $db = PearDatabase::getInstance(); $label = $params['fieldLabel']; if ($this->checkFIeldExists($label)) { throw new Exception(vtranslate('LBL_DUPLICATE_FIELD_EXISTS', 'Settings::LayoutEditor'), 513); } $supportedFieldTypes = $this->getAddSupportedFieldTypes(); if (!in_array($fieldType, $supportedFieldTypes)) { throw new Exception(vtranslate('LBL_WRONG_FIELD_TYPE', 'Settings::LayoutEditor'), 513); } $max_fieldid = $db->getUniqueID("vtiger_field"); $columnName = 'cf_' . $max_fieldid; $custfld_fieldid = $max_fieldid; $moduleName = $this->getName(); $focus = CRMEntity::getInstance($moduleName); if (isset($focus->customFieldTable)) { $tableName = $focus->customFieldTable[0]; } else { $tableName = 'vtiger_' . strtolower($moduleName) . 'cf'; } $details = $this->getTypeDetailsForAddField($fieldType, $params); $uitype = $details['uitype']; $typeofdata = $details['typeofdata']; $dbType = $details['dbType']; $quickCreate = in_array($moduleName, getInventoryModules()) ? 3 : 1; $fieldModel = new Settings_LayoutEditor_Field_Model(); $fieldModel->set('name', $columnName)->set('table', $tableName)->set('generatedtype', 2)->set('uitype', $uitype)->set('label', $label)->set('typeofdata', $typeofdata)->set('quickcreate', $quickCreate)->set('columntype', $dbType); $blockModel = Vtiger_Block_Model::getInstance($blockId, $this); $blockModel->addField($fieldModel); if ($fieldType == 'Picklist' || $fieldType == 'MultiSelectCombo') { $pickListValues = explode(',', $params['pickListValues']); $fieldModel->setPicklistValues($pickListValues); } return $fieldModel; }
public function addField($fieldType, $blockId, $params) { $db = PearDatabase::getInstance(); $label = $params['fieldLabel']; $type = $params['fieldTypeList']; $name = strtolower($params['fieldName']); $fieldparams = ''; if ($this->checkFieldLableExists($label)) { throw new Exception(vtranslate('LBL_DUPLICATE_FIELD_EXISTS', 'Settings::LayoutEditor'), 513); } if ($this->checkFieldNameCharacters($name)) { throw new Exception(vtranslate('LBL_INVALIDCHARACTER', 'Settings::LayoutEditor'), 512); } if ($this->checkFieldNameExists($name)) { throw new Exception(vtranslate('LBL_DUPLICATE_FIELD_EXISTS', 'Settings::LayoutEditor'), 512); } $supportedFieldTypes = $this->getAddSupportedFieldTypes(); if (!in_array($fieldType, $supportedFieldTypes)) { throw new Exception(vtranslate('LBL_WRONG_FIELD_TYPE', 'Settings::LayoutEditor'), 513); } $moduleName = $this->getName(); $focus = CRMEntity::getInstance($moduleName); if ($type == 0) { $columnName = $name; $tableName = $focus->table_name; } elseif ($type == 1) { $max_fieldid = $db->getUniqueID("vtiger_field"); $columnName = 'cf_' . $max_fieldid; $custfld_fieldid = $max_fieldid; if (isset($focus->customFieldTable)) { $tableName = $focus->customFieldTable[0]; } else { $tableName = 'vtiger_' . strtolower($moduleName) . 'cf'; } } if ($fieldType == 'Tree') { $fieldparams = (int) $params['tree']; } elseif ($fieldType == 'MultiReferenceValue') { $fieldparams['module'] = $params['MRVModule']; $fieldparams['field'] = $params['MRVField']; $fieldparams['filterField'] = $params['MRVFilterField']; $fieldparams['filterValue'] = $params['MRVFilterValue']; } $details = $this->getTypeDetailsForAddField($fieldType, $params); $uitype = $details['uitype']; $typeofdata = $details['typeofdata']; $dbType = $details['dbType']; $quickCreate = in_array($moduleName, getInventoryModules()) ? 3 : 1; $fieldModel = new Settings_LayoutEditor_Field_Model(); $fieldModel->set('name', $columnName)->set('table', $tableName)->set('generatedtype', 2)->set('uitype', $uitype)->set('label', $label)->set('typeofdata', $typeofdata)->set('quickcreate', $quickCreate)->set('fieldparams', Zend_Json::encode($fieldparams))->set('columntype', $dbType); if (isset($details['displayType'])) { $fieldModel->set('displaytype', $details['displayType']); } $blockModel = Vtiger_Block_Model::getInstance($blockId, $this); $blockModel->addField($fieldModel); if ($fieldType == 'Picklist' || $fieldType == 'MultiSelectCombo') { $pickListValues = $params['pickListValues']; if (is_string($pickListValues)) { $pickListValues = [$pickListValues]; } $fieldModel->setPicklistValues($pickListValues); } if ($fieldType == 'Related1M') { if (!is_array($params['referenceModule'])) { $moduleList[] = $params['referenceModule']; } else { $moduleList = $params['referenceModule']; } $fieldModel->setRelatedModules($moduleList); foreach ($moduleList as $module) { $targetModule = Vtiger_Module::getInstance($module); $targetModule->setRelatedList($this, $moduleName, array('Add'), 'get_dependents_list'); } } return $fieldModel; }
public function addField($fieldType, $blockId, $params) { $db = PearDatabase::getInstance(); $label = $params['fieldLabel']; if($this->checkFIeldExists($label)){ throw new Exception(vtranslate('LBL_DUPLICATE_FIELD_EXISTS', 'Settings::LayoutEditor'), 513); } $supportedFieldTypes = $this->getAddSupportedFieldTypes(); if(!in_array($fieldType, $supportedFieldTypes)) { throw new Exception(vtranslate('LBL_WRONG_FIELD_TYPE', 'Settings::LayoutEditor'), 513); } $columnName = $params['ColumnName']; $moduleName = $this->getName(); $focus = CRMEntity::getInstance($moduleName); if ($params['fieldTableName'] !== '') { $tableName= $params['fieldTableName']; } elseif (isset($focus->customFieldTable)) { $tableName=$focus->customFieldTable[0]; } else { $tableName= 'vtiger_'.strtolower($moduleName).'cf'; } $details = $this->getTypeDetailsForAddField($fieldType, $params); $uitype = $details['uitype']; $typeofdata = $details['typeofdata']; $dbType = $details['dbType']; $quickCreate = in_array($moduleName, getInventoryModules()) ? 3 : 1; $fieldModel = new Settings_LayoutEditor_Field_Model(); $fieldModel->set('name', $columnName) ->set('table', $tableName) ->set('generatedtype',2) ->set('uitype', $uitype) ->set('label', $label) ->set('typeofdata',$typeofdata) ->set('quickcreate',$quickCreate) ->set('columntype', $dbType); $blockModel = Vtiger_Block_Model::getInstance($blockId, $this); $blockModel->addField($fieldModel); if($fieldType == 'ModuleLinked') { $moduleListNames = explode(',',$params['pickListValues']); foreach ($moduleListNames as $key => $modname) { // проверяем все имена модулей $rmoduleInstance = Vtiger_Module::getInstance($modname); if (!$rmoduleInstance) unset($moduleListNames[$key]); // И удаляем если такого модуля нет } $fieldModel->setRelatedModules($moduleListNames); } if($fieldType == 'Picklist' || $fieldType == 'MultiSelectCombo') { $pickListValues = explode(',',$params['pickListValues']); // можно присоединиться к готовому списку с таким же columnname if ($pickListValues[0] != 'null') $fieldModel->setPicklistValues($pickListValues); } return $fieldModel; }