[ 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 Leads_Record_Model extends Vtiger_Record_Model { 12 13 /** 14 * Function returns the url for converting lead 15 */ 16 function getConvertLeadUrl() { 17 return 'index.php?module='.$this->getModuleName().'&view=ConvertLead&record='.$this->getId(); 18 } 19 20 /** 21 * Static Function to get the list of records matching the search key 22 * @param <String> $searchKey 23 * @return <Array> - List of Vtiger_Record_Model or Module Specific Record Model instances 24 */ 25 public static function getSearchResult($searchKey, $module=false) { 26 $db = PearDatabase::getInstance(); 27 28 $deletedCondition = $this->getModule()->getDeletedRecordCondition(); 29 $query = 'SELECT * FROM vtiger_crmentity 30 INNER JOIN vtiger_leaddetails ON vtiger_leaddetails.leadid = vtiger_crmentity.crmid 31 WHERE label LIKE ? AND '.$deletedCondition; 32 $params = array("%$searchKey%"); 33 $result = $db->pquery($query, $params); 34 $noOfRows = $db->num_rows($result); 35 36 $moduleModels = array(); 37 $matchingRecords = array(); 38 for($i=0; $i<$noOfRows; ++$i) { 39 $row = $db->query_result_rowdata($result, $i); 40 $row['id'] = $row['crmid']; 41 $moduleName = $row['setype']; 42 if(!array_key_exists($moduleName, $moduleModels)) { 43 $moduleModels[$moduleName] = Vtiger_Module_Model::getInstance($moduleName); 44 } 45 $moduleModel = $moduleModels[$moduleName]; 46 $modelClassName = Vtiger_Loader::getComponentClassName('Model', 'Record', $moduleName); 47 $recordInstance = new $modelClassName(); 48 $matchingRecords[$moduleName][$row['id']] = $recordInstance->setData($row)->setModuleFromInstance($moduleModel); 49 } 50 return $matchingRecords; 51 } 52 53 /** 54 * Function returns Account fields for Lead Convert 55 * @return Array 56 */ 57 function getAccountFieldsForLeadConvert() { 58 $accountsFields = array(); 59 $privilegeModel = Users_Privileges_Model::getCurrentUserPrivilegesModel(); 60 $moduleName = 'Accounts'; 61 62 if(!Users_Privileges_Model::isPermitted($moduleName, 'EditView')) { 63 return; 64 } 65 66 $moduleModel = Vtiger_Module_Model::getInstance($moduleName); 67 if ($moduleModel->isActive()) { 68 $fieldModels = $moduleModel->getFields(); 69 //Fields that need to be shown 70 $complusoryFields = array('industry'); 71 foreach ($fieldModels as $fieldName => $fieldModel) { 72 if($fieldModel->isMandatory() && $fieldName != 'assigned_user_id') { 73 $keyIndex = array_search($fieldName,$complusoryFields); 74 if($keyIndex !== false) { 75 unset($complusoryFields[$keyIndex]); 76 } 77 $leadMappedField = $this->getConvertLeadMappedField($fieldName, $moduleName); 78 $fieldModel->set('fieldvalue', $this->get($leadMappedField)); 79 $accountsFields[] = $fieldModel; 80 } 81 } 82 foreach($complusoryFields as $complusoryField) { 83 $fieldModel = Vtiger_Field_Model::getInstance($complusoryField, $moduleModel); 84 if($fieldModel->getPermissions('readwrite')) { 85 $industryFieldModel = $moduleModel->getField($complusoryField); 86 $industryLeadMappedField = $this->getConvertLeadMappedField($complusoryField, $moduleName); 87 $industryFieldModel->set('fieldvalue', $this->get($industryLeadMappedField)); 88 $accountsFields[] = $industryFieldModel; 89 } 90 } 91 } 92 return $accountsFields; 93 } 94 95 /** 96 * Function returns Contact fields for Lead Convert 97 * @return Array 98 */ 99 function getContactFieldsForLeadConvert() { 100 $contactsFields = array(); 101 $privilegeModel = Users_Privileges_Model::getCurrentUserPrivilegesModel(); 102 $moduleName = 'Contacts'; 103 104 if(!Users_Privileges_Model::isPermitted($moduleName, 'EditView')) { 105 return; 106 } 107 108 $moduleModel = Vtiger_Module_Model::getInstance($moduleName); 109 if ($moduleModel->isActive()) { 110 $fieldModels = $moduleModel->getFields(); 111 $complusoryFields = array('firstname', 'email'); 112 foreach($fieldModels as $fieldName => $fieldModel) { 113 if($fieldModel->isMandatory() && $fieldName != 'assigned_user_id' && $fieldName != 'account_id') { 114 $keyIndex = array_search($fieldName,$complusoryFields); 115 if($keyIndex !== false) { 116 unset($complusoryFields[$keyIndex]); 117 } 118 119 $leadMappedField = $this->getConvertLeadMappedField($fieldName, $moduleName); 120 $fieldValue = $this->get($leadMappedField); 121 if ($fieldName === 'account_id') { 122 $fieldValue = $this->get('company'); 123 } 124 $fieldModel->set('fieldvalue', $fieldValue); 125 $contactsFields[] = $fieldModel; 126 } 127 } 128 129 foreach($complusoryFields as $complusoryField) { 130 $fieldModel = Vtiger_Field_Model::getInstance($complusoryField, $moduleModel); 131 if($fieldModel->getPermissions('readwrite')) { 132 $leadMappedField = $this->getConvertLeadMappedField($complusoryField, $moduleName); 133 $fieldModel = $moduleModel->getField($complusoryField); 134 $fieldModel->set('fieldvalue', $this->get($leadMappedField)); 135 $contactsFields[] = $fieldModel; 136 } 137 } 138 } 139 return $contactsFields; 140 } 141 142 /** 143 * Function returns Potential fields for Lead Convert 144 * @return Array 145 */ 146 function getPotentialsFieldsForLeadConvert() { 147 $potentialFields = array(); 148 $privilegeModel = Users_Privileges_Model::getCurrentUserPrivilegesModel(); 149 $moduleName = 'Potentials'; 150 151 if(!Users_Privileges_Model::isPermitted($moduleName, 'EditView')) { 152 return; 153 } 154 155 $moduleModel = Vtiger_Module_Model::getInstance($moduleName); 156 if ($moduleModel->isActive()) { 157 $fieldModels = $moduleModel->getFields(); 158 159 $complusoryFields = array('amount'); 160 foreach($fieldModels as $fieldName => $fieldModel) { 161 if($fieldModel->isMandatory() && $fieldName != 'assigned_user_id' && $fieldName != 'related_to' 162 && $fieldName != 'contact_id') { 163 $keyIndex = array_search($fieldName,$complusoryFields); 164 if($keyIndex !== false) { 165 unset($complusoryFields[$keyIndex]); 166 } 167 $leadMappedField = $this->getConvertLeadMappedField($fieldName, $moduleName); 168 $fieldModel->set('fieldvalue', $this->get($leadMappedField)); 169 $potentialFields[] = $fieldModel; 170 } 171 } 172 foreach($complusoryFields as $complusoryField) { 173 $fieldModel = Vtiger_Field_Model::getInstance($complusoryField, $moduleModel); 174 if($fieldModel->getPermissions('readwrite')) { 175 $fieldModel = $moduleModel->getField($complusoryField); 176 $amountLeadMappedField = $this->getConvertLeadMappedField($complusoryField, $moduleName); 177 $fieldModel->set('fieldvalue', $this->get($amountLeadMappedField)); 178 $potentialFields[] = $fieldModel; 179 } 180 } 181 } 182 return $potentialFields; 183 } 184 185 /** 186 * Function returns field mapped to Leads field, used in Lead Convert for settings the field values 187 * @param <String> $fieldName 188 * @return <String> 189 */ 190 function getConvertLeadMappedField($fieldName, $moduleName) { 191 $mappingFields = $this->get('mappingFields'); 192 193 if (!$mappingFields) { 194 $db = PearDatabase::getInstance(); 195 $mappingFields = array(); 196 197 $result = $db->pquery('SELECT * FROM vtiger_convertleadmapping', array()); 198 $numOfRows = $db->num_rows($result); 199 200 $accountInstance = Vtiger_Module_Model::getInstance('Accounts'); 201 $accountFieldInstances = $accountInstance->getFieldsById(); 202 203 $contactInstance = Vtiger_Module_Model::getInstance('Contacts'); 204 $contactFieldInstances = $contactInstance->getFieldsById(); 205 206 $potentialInstance = Vtiger_Module_Model::getInstance('Potentials'); 207 $potentialFieldInstances = $potentialInstance->getFieldsById(); 208 209 $leadInstance = Vtiger_Module_Model::getInstance('Leads'); 210 $leadFieldInstances = $leadInstance->getFieldsById(); 211 212 for($i=0; $i<$numOfRows; $i++) { 213 $row = $db->query_result_rowdata($result,$i); 214 if(empty($row['leadfid'])) continue; 215 216 $leadFieldInstance = $leadFieldInstances[$row['leadfid']]; 217 if(!$leadFieldInstance) continue; 218 219 $leadFieldName = $leadFieldInstance->getName(); 220 $accountFieldInstance = $accountFieldInstances[$row['accountfid']]; 221 if ($row['accountfid'] && $accountFieldInstance) { 222 $mappingFields['Accounts'][$accountFieldInstance->getName()] = $leadFieldName; 223 } 224 $contactFieldInstance = $contactFieldInstances[$row['contactfid']]; 225 if ($row['contactfid'] && $contactFieldInstance) { 226 $mappingFields['Contacts'][$contactFieldInstance->getName()] = $leadFieldName; 227 } 228 $potentialFieldInstance = $potentialFieldInstances[$row['potentialfid']]; 229 if ($row['potentialfid'] && $potentialFieldInstance) { 230 $mappingFields['Potentials'][$potentialFieldInstance->getName()] = $leadFieldName; 231 } 232 } 233 $this->set('mappingFields', $mappingFields); 234 } 235 return $mappingFields[$moduleName][$fieldName]; 236 } 237 238 /** 239 * Function returns the fields required for Lead Convert 240 * @return <Array of Vtiger_Field_Model> 241 */ 242 function getConvertLeadFields() { 243 $convertFields = array(); 244 $accountFields = $this->getAccountFieldsForLeadConvert(); 245 if(!empty($accountFields)) { 246 $convertFields['Accounts'] = $accountFields; 247 } 248 249 $contactFields = $this->getContactFieldsForLeadConvert(); 250 if(!empty($contactFields)) { 251 $convertFields['Contacts'] = $contactFields; 252 } 253 254 $potentialsFields = $this->getPotentialsFieldsForLeadConvert(); 255 if(!empty($potentialsFields)) { 256 $convertFields['Potentials'] = $potentialsFields; 257 } 258 return $convertFields; 259 } 260 261 /** 262 * Function returns the url for create event 263 * @return <String> 264 */ 265 function getCreateEventUrl() { 266 $calendarModuleModel = Vtiger_Module_Model::getInstance('Calendar'); 267 return $calendarModuleModel->getCreateEventRecordUrl().'&parent_id='.$this->getId(); 268 } 269 270 /** 271 * Function returns the url for create todo 272 * @return <String> 273 */ 274 function getCreateTaskUrl() { 275 $calendarModuleModel = Vtiger_Module_Model::getInstance('Calendar'); 276 return $calendarModuleModel->getCreateTaskRecordUrl().'&parent_id='.$this->getId(); 277 } 278 279 /** 280 * Function to check whether the lead is converted or not 281 * @return True if the Lead is Converted false otherwise. 282 */ 283 function isLeadConverted() { 284 $db = PearDatabase::getInstance(); 285 $id = $this->getId(); 286 $sql = "select converted from vtiger_leaddetails where converted = 1 and leadid=?"; 287 $result = $db->pquery($sql,array($id)); 288 $rowCount = $db->num_rows($result); 289 if($rowCount > 0){ 290 return true; 291 } 292 return false; 293 } 294 295 }
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 |