[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /*+*********************************************************************************** 3 * The contents of this file are subject to the vtiger CRM Public License Version 1.0 4 * ("License"); You may not use this file except in compliance with the License 5 * The Original Code is: vtiger CRM Open Source 6 * The Initial Developer of the Original Code is vtiger. 7 * Portions created by vtiger are Copyright (C) vtiger. 8 * All Rights Reserved. 9 *************************************************************************************/ 10 11 class Vtiger_ModuleMeta_Model extends Vtiger_Base_Model { 12 13 var $moduleName = false; 14 15 var $webserviceMeta = false; 16 17 var $user; 18 19 static $_cached_module_meta; 20 21 /** 22 * creates an instance of Vtiger_ModuleMeta_Model 23 * @param <String> $name - module name 24 * @param <Object> $user - Users Object 25 * @return Vtiger_ModuleMeta_Model 26 */ 27 public static function getInstance($name, $user) { 28 $self = new Vtiger_ModuleMeta_Model(); 29 $self->moduleName = $name; 30 $self->user = $user; 31 32 if(!empty(self::$_cached_module_meta[$name][$user->id])) { 33 $self->webserviceMeta = self::$_cached_module_meta[$name][$user->id]; 34 return $self; 35 } 36 37 $handler = vtws_getModuleHandlerFromName($self->moduleName, $user); 38 $self->webserviceMeta = $handler->getMeta(); 39 self::$_cached_module_meta[$name][$user->id] = $self->webserviceMeta; 40 return $self; 41 } 42 43 /** 44 * Functions returns webservices meta object 45 * @return webservices meta 46 */ 47 public function getMeta() { 48 return $this->webserviceMeta; 49 } 50 51 /** 52 * Function returns list of fields based on type 53 * @param <type> $type 54 * @return <type> 55 */ 56 public function getFieldListByType($type) { 57 $meta = $this->getMeta(); 58 return $meta->getFieldListByType($type); 59 } 60 61 /** 62 * Function returns accessible fields in a module 63 * @return <Array of Vtiger_Field> 64 */ 65 public function getAccessibleFields() { 66 67 $meta = self::$_cached_module_meta[$this->moduleName][$this->user->id]; 68 $moduleFields = $meta->getModuleFields(); 69 $accessibleFields = array(); 70 foreach($moduleFields as $fieldName => $fieldInstance) { 71 if($fieldInstance->getPresence() === 1) { 72 continue; 73 } 74 $accessibleFields[$fieldName] = $fieldInstance; 75 } 76 return $accessibleFields; 77 } 78 79 /** 80 * Function returns mergable fields in the module 81 * @return <Array of Vtiger_field> 82 */ 83 public function getMergableFields() { 84 $accessibleFields = $this->getAccessibleFields($this->moduleName); 85 $mergableFields = array(); 86 foreach($accessibleFields as $fieldName => $fieldInstance) { 87 if($fieldInstance->getPresence() === 1) { 88 continue; 89 } 90 // We need to avoid Last Modified by or any such User reference field 91 // for now as Query Generator is not handling it well enough. 92 // The case in which query generator is failing to generate right query is, 93 // Assigned User field is not there either in the selected fields list or in the conditions 94 // and condition is added on the User reference field 95 // TODO - Cleanup this once Query Generator support is corrected 96 if($fieldInstance->getFieldDataType() == 'reference') { 97 $referencedModules = $fieldInstance->getReferenceList(); 98 if($referencedModules[0] == 'Users') { 99 continue; 100 } 101 } 102 $mergableFields[$fieldName] = $fieldInstance; 103 } 104 return $mergableFields; 105 } 106 107 /** 108 * Function returns mandatory importable fields 109 * @return <Array of Vtiger_Field> 110 */ 111 public function getMandatoryImportableFields() { 112 113 $focus = CRMEntity::getInstance($this->moduleName); 114 if(method_exists($focus, 'getMandatoryImportableFields')) { 115 $mandatoryFields = $focus->getMandatoryImportableFields(); 116 } else { 117 $moduleFields = $this->getAccessibleFields($this->moduleName); 118 $mandatoryFields = array(); 119 foreach($moduleFields as $fieldName => $fieldInstance) { 120 if($fieldInstance->isMandatory() && $fieldInstance->getFieldDataType() != 'owner' 121 && $this->isEditableField($fieldInstance)) { 122 $mandatoryFields[$fieldName] = $fieldInstance->getFieldLabelKey(); 123 } 124 } 125 } 126 return $mandatoryFields; 127 } 128 129 /** 130 * Function returns importable fields 131 * @return <Array of Vtiger_Field> 132 */ 133 public function getImportableFields() { 134 $focus = CRMEntity::getInstance($this->moduleName); 135 if(method_exists($focus, 'getImportableFields')) { 136 $importableFields = $focus->getImportableFields(); 137 } else { 138 $moduleFields = $this->getAccessibleFields($moduleName); 139 $importableFields = array(); 140 foreach($moduleFields as $fieldName => $fieldInstance) { 141 if(($this->isEditableField($fieldInstance) 142 && ($fieldInstance->getTableName() != 'vtiger_crmentity' || $fieldInstance->getColumnName() != 'modifiedby') 143 ) || ($fieldInstance->getUIType() == '70' && $fieldName != 'modifiedtime')) { 144 $importableFields[$fieldName] = $fieldInstance; 145 } 146 } 147 } 148 return $importableFields; 149 } 150 151 /** 152 * Function returns Entity Name fields 153 * @return <Array of Vtiger_Field> 154 */ 155 public function getEntityFields() { 156 $moduleFields = $this->getAccessibleFields($this->moduleName); 157 $entityColumnNames = vtws_getEntityNameFields($this->moduleName); 158 $entityNameFields = array(); 159 foreach($moduleFields as $fieldName => $fieldInstance) { 160 $fieldColumnName = $fieldInstance->getColumnName(); 161 if(in_array($fieldColumnName, $entityColumnNames)) { 162 $entityNameFields[$fieldName] = $fieldInstance; 163 } 164 } 165 return $entityNameFields; 166 } 167 168 /** 169 * Function checks if the field is editable 170 * @param type $fieldInstance 171 * @return boolean 172 */ 173 public function isEditableField($fieldInstance) { 174 if(((int)$fieldInstance->getDisplayType()) === 2 || 175 in_array($fieldInstance->getPresence(), array(1,3)) || 176 strcasecmp($fieldInstance->getFieldDataType(),"autogenerated") ===0 || 177 strcasecmp($fieldInstance->getFieldDataType(),"id") ===0 || 178 $fieldInstance->isReadOnly() == true || 179 $fieldInstance->getUIType() == 70 || 180 $fieldInstance->getUIType() == 4) { 181 182 return false; 183 } 184 return true; 185 } 186 187 /** 188 * Function returns list of mandatory fields 189 * @return <Array of Vtiger_Field> 190 */ 191 public function getMandatoryFields() { 192 $focus = CRMEntity::getInstance($this->moduleName); 193 if(method_exists($focus, 'getMandatoryImportableFields')) { 194 $mandatoryFields = $focus->getMandatoryImportableFields(); 195 } else { 196 $moduleFields = $this->getAccessibleFields($this->moduleName); 197 $mandatoryFields = array(); 198 foreach($moduleFields as $fieldName => $fieldInstance) { 199 if($fieldInstance->isMandatory() 200 && $fieldInstance->getFieldDataType() != 'owner' 201 && $this->isEditableField($fieldInstance)) { 202 $mandatoryFields[$fieldName] = vtranslate($fieldInstance->getFieldLabelKey(), $this->moduleName); 203 } 204 } 205 } 206 return $mandatoryFields; 207 } 208 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |