/** * Static function to get the UIType object from Vtiger Field Model * @param Vtiger_Field_Model $fieldModel * @return Vtiger_Base_UIType or UIType specific object instance */ public static function getInstanceFromField($fieldModel) { $fieldDataType = $fieldModel->getFieldDataType(); $uiTypeClassSuffix = ucfirst($fieldDataType); $moduleName = $fieldModel->getModuleName(); $moduleSpecificUiTypeClassName = $moduleName . '_' . $uiTypeClassSuffix . '_UIType'; $uiTypeClassName = 'Vtiger_' . $uiTypeClassSuffix . '_UIType'; $fallBackClassName = 'Vtiger_Base_UIType'; $moduleSpecificFileName = 'modules.' . $moduleName . '.uitypes.' . $uiTypeClassSuffix; $uiTypeClassFileName = 'modules.Vtiger.uitypes.' . $uiTypeClassSuffix; $moduleSpecificFilePath = Vtiger_Loader::resolveNameToPath($moduleSpecificFileName); $completeFilePath = Vtiger_Loader::resolveNameToPath($uiTypeClassFileName); if (file_exists($moduleSpecificFilePath)) { $instance = new $moduleSpecificUiTypeClassName(); } else if (file_exists($completeFilePath)) { $instance = new $uiTypeClassName(); } else { $instance = new $fallBackClassName(); } $instance->set('field', $fieldModel); return $instance; }