[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 <?php 2 3 class PickListHandler extends VTEventHandler { 4 5 function handleEvent($eventName, $entityData) { 6 global $log, $adb; 7 8 if($eventName == 'vtiger.picklist.afterrename') { 9 $this->operationsAfterPicklistRename($entityData); 10 } elseif($eventName == 'vtiger.picklist.afterdelete') { 11 $this->operationsAfterPicklistDelete($entityData); 12 } 13 } 14 15 /** 16 * Function to perform operation after picklist rename 17 * @param type $entityData 18 */ 19 function operationsAfterPicklistRename($entityData) { 20 21 $db = PearDatabase::getInstance(); 22 $pickListFieldName = $entityData['fieldname']; 23 $oldValue = $entityData['oldvalue']; 24 $newValue = $entityData['newvalue']; 25 $moduleName = $entityData['module']; 26 27 $moduleModel = Vtiger_Module_Model::getInstance($moduleName); 28 $tabId = $moduleModel->getId(); 29 //update picklist dependency values 30 $query = "SELECT id,targetvalues FROM vtiger_picklist_dependency where targetfield=? and tabid=?"; 31 $result = $db->pquery($query, array($pickListFieldName, $tabId)); 32 $num_rows = $db->num_rows($result); 33 for($i = 0; $i < $num_rows; $i++) { 34 $row = $db->query_result_rowdata($result, $i); 35 $value = decode_html($row['targetvalues']); 36 $explodedValueArray = Zend_Json::decode($value); 37 $arrayKey = array_search($oldValue, $explodedValueArray); 38 if($arrayKey !== false){ 39 $explodedValueArray[$arrayKey] = $newValue; 40 } 41 $value = Zend_Json::encode($explodedValueArray); 42 $query = 'UPDATE vtiger_picklist_dependency SET targetvalues=? where id=? AND tabid=?'; 43 $db->pquery($query, array($value, $row['id'], $tabId)); 44 } 45 $fieldModel = Vtiger_Field_Model::getInstance($pickListFieldName, $moduleModel); 46 $advFiltercolumnName = $fieldModel->getCustomViewColumnName(); 47 $reportFilterColumnName = $fieldModel->getReportFilterColumnName(); 48 49 //update advancefilter values 50 $query= 'SELECT cvid,value,columnindex,groupid FROM vtiger_cvadvfilter where columnname=?'; 51 $result = $db->pquery($query, array($advFiltercolumnName)); 52 $num_rows = $db->num_rows($result); 53 for ($i = 0; $i < $num_rows; $i++) { 54 $row = $db->query_result_rowdata($result, $i); 55 $value = $row['value']; 56 $explodedValueArray = explode(',', $value); 57 $arrayKey = array_search($oldValue, $explodedValueArray); 58 if($arrayKey !== false){ 59 $explodedValueArray[$arrayKey] = $newValue; 60 } 61 $value = implode(',', $explodedValueArray); 62 $query = 'UPDATE vtiger_cvadvfilter SET value=? where columnname=? and cvid=? and columnindex=? and groupid=?'; 63 $db->pquery($query, array($value, $advFiltercolumnName, $row['cvid'], $row['columnindex'], $row['groupid'])); 64 } 65 66 //update reportsFilter values 67 $query= 'SELECT queryid,value,columnindex,groupid FROM vtiger_relcriteria where columnname=?'; 68 $result = $db->pquery($query, array($reportFilterColumnName)); 69 $num_rows = $db->num_rows($result); 70 for ($i = 0; $i < $num_rows; $i++) { 71 $row = $db->query_result_rowdata($result, $i); 72 $value = $row['value']; 73 $explodedValueArray = explode(',', $value); 74 $arrayKey = array_search($oldValue, $explodedValueArray); 75 if($arrayKey !== false){ 76 $explodedValueArray[$arrayKey] = $newValue; 77 } 78 $value = implode(',', $explodedValueArray); 79 $query = 'UPDATE vtiger_relcriteria SET value=? where columnname=? and queryid=? and columnindex=? and groupid=?'; 80 $db->pquery($query, array($value, $reportFilterColumnName, $row['queryid'], $row['columnindex'], $row['groupid'])); 81 } 82 83 //update Workflows values 84 $query= 'SELECT workflow_id,test FROM com_vtiger_workflows where module_name=? AND test != "" AND test IS NOT NULL AND test !="null" AND test LIKE "%'.$oldValue.'%"'; 85 $result = $db->pquery($query, array($moduleName)); 86 $num_rows = $db->num_rows($result); 87 for($i = 0;$i < $num_rows; $i++) { 88 $row = $db->query_result_rowdata($result, $i); 89 $condition = decode_html($row['test']); 90 $decodedArrayConditions = Zend_Json::decode($condition); 91 if(!empty($decodedArrayConditions)){ 92 foreach($decodedArrayConditions as $key=>$condition) { 93 if($condition['fieldname'] == $pickListFieldName){ 94 $value = $condition['value']; 95 $explodedValueArray = explode(',', $value); 96 $arrayKey = array_search($oldValue, $explodedValueArray); 97 if ($arrayKey !== false) { 98 $explodedValueArray[$arrayKey] = $newValue; 99 } 100 $value = implode(',', $explodedValueArray); 101 $condition['value'] = $value; 102 } 103 $decodedArrayConditions[$key] = $condition; 104 } 105 $condtion = Zend_Json::encode($decodedArrayConditions); 106 $query= 'UPDATE com_vtiger_workflows SET test=? where workflow_id=?'; 107 $db->pquery($query, array($condtion, $row['workflow_id'])); 108 } 109 } 110 111 //update workflow task 112 $query = 'SELECT task,task_id,workflow_id FROM com_vtiger_workflowtasks where task LIKE "%'.$oldValue.'%"'; 113 $result = $db->pquery($query, array()); 114 $num_rows = $db->num_rows($result); 115 116 for ($i = 0; $i < $num_rows; $i++) { 117 $row = $db->raw_query_result_rowdata($result, $i); 118 $task = $row['task']; 119 $taskComponents = explode(':', $task); 120 $classNameWithDoubleQuotes = $taskComponents[2]; 121 $className = str_replace('"', '', $classNameWithDoubleQuotes); 122 require_once ("modules/com_vtiger_workflow/VTTaskManager.inc"); 123 require_once 'modules/com_vtiger_workflow/tasks/'.$className.'.inc'; 124 $unserializeTask = unserialize($task); 125 if(array_key_exists("field_value_mapping",$unserializeTask)) { 126 $fieldMapping = Zend_Json::decode($unserializeTask->field_value_mapping); 127 if (!empty($fieldMapping)) { 128 foreach ($fieldMapping as $key => $condition) { 129 if ($condition['fieldname'] == $pickListFieldName) { 130 $value = $condition['value']; 131 $explodedValueArray = explode(',', $value); 132 $arrayKey = array_search($oldValue, $explodedValueArray); 133 if ($arrayKey !== false) { 134 $explodedValueArray[$arrayKey] = $newValue; 135 } 136 $value = implode(',', $explodedValueArray); 137 $condition['value'] = $value; 138 } 139 $fieldMapping[$key] = $condition; 140 } 141 $updatedTask = Zend_Json::encode($fieldMapping); 142 $unserializeTask->field_value_mapping = $updatedTask; 143 $serializeTask = serialize($unserializeTask); 144 $query = 'UPDATE com_vtiger_workflowtasks SET task=? where workflow_id=? AND task_id=?'; 145 $db->pquery($query, array($serializeTask, $row['workflow_id'], $row['task_id'])); 146 } 147 } else { 148 if($className == 'VTCreateEventTask') { 149 if($pickListFieldName == 'eventstatus') { 150 $pickListFieldName = 'status'; 151 } elseif($pickListFieldName == 'activitytype') { 152 $pickListFieldName = 'eventType'; 153 } 154 } elseif($className == 'VTCreateTodoTask'){ 155 if($pickListFieldName == 'taskstatus') { 156 $pickListFieldName = 'status'; 157 } elseif($pickListFieldName == 'taskpriority') { 158 $pickListFieldName = 'priority'; 159 } 160 } 161 if(array_key_exists($pickListFieldName, $unserializeTask)){ 162 $value = $unserializeTask->$pickListFieldName; 163 $explodedValueArray = explode(',', $value); 164 $arrayKey = array_search($oldValue, $explodedValueArray); 165 if ($arrayKey !== false) { 166 $explodedValueArray[$arrayKey] = $newValue; 167 } 168 $value = implode(',', $explodedValueArray); 169 $unserializeTask->$pickListFieldName = $value; 170 $serializeTask = serialize($unserializeTask); 171 $query = 'UPDATE com_vtiger_workflowtasks SET task=? where workflow_id=? AND task_id=?'; 172 $db->pquery($query, array($serializeTask, $row['workflow_id'], $row['task_id'])); 173 } 174 } 175 } 176 } 177 178 /** 179 * Function to perform operation after picklist delete 180 * @param type $entityData 181 */ 182 function operationsAfterPicklistDelete($entityData) { 183 $db = PearDatabase::getInstance(); 184 $pickListFieldName = $entityData['fieldname']; 185 $valueToDelete = $entityData['valuetodelete']; 186 $replaceValue = $entityData['replacevalue']; 187 $moduleName = $entityData['module']; 188 189 $moduleModel = Vtiger_Module_Model::getInstance($moduleName); 190 $fieldModel = Vtiger_Field_Model::getInstance($pickListFieldName, $moduleModel); 191 $advFiltercolumnName = $fieldModel->getCustomViewColumnName(); 192 $reportFilterColumnName = $fieldModel->getReportFilterColumnName(); 193 194 //update advancefilter values 195 $query= 'SELECT cvid,value,columnindex,groupid FROM vtiger_cvadvfilter where columnname=?'; 196 $result = $db->pquery($query, array($advFiltercolumnName)); 197 $num_rows = $db->num_rows($result); 198 for ($i = 0; $i < $num_rows; $i++) { 199 $row = $db->query_result_rowdata($result, $i); 200 $value = $row['value']; 201 $explodedValueArray = explode(',', $value); 202 foreach($valueToDelete as $value) { 203 $arrayKey = array_search($value, $explodedValueArray); 204 if($arrayKey !== false){ 205 $explodedValueArray[$arrayKey] = $replaceValue; 206 } 207 } 208 $value = implode(',', $explodedValueArray); 209 $query = 'UPDATE vtiger_cvadvfilter SET value=? where columnname=? and cvid=? and columnindex=? and groupid=?'; 210 $db->pquery($query, array($value, $advFiltercolumnName, $row['cvid'], $row['columnindex'], $row['groupid'])); 211 } 212 213 //update reportsFilter values 214 $query= 'SELECT queryid,value,columnindex,groupid FROM vtiger_relcriteria where columnname=?'; 215 $result = $db->pquery($query, array($reportFilterColumnName)); 216 $num_rows = $db->num_rows($result); 217 for ($i = 0; $i < $num_rows; $i++) { 218 $row = $db->query_result_rowdata($result, $i); 219 $value = $row['value']; 220 $explodedValueArray = explode(',', $value); 221 foreach($valueToDelete as $value) { 222 $arrayKey = array_search($value, $explodedValueArray); 223 if($arrayKey !== false){ 224 $explodedValueArray[$arrayKey] = $replaceValue; 225 } 226 } 227 $value = implode(',', $explodedValueArray); 228 $query = 'UPDATE vtiger_relcriteria SET value=? where columnname=? and queryid=? and columnindex=? and groupid=?'; 229 $db->pquery($query, array($value, $reportFilterColumnName, $row['queryid'], $row['columnindex'], $row['groupid'])); 230 } 231 232 233 foreach ($valueToDelete as $value) { 234 //update Workflows values 235 $query = 'SELECT workflow_id,test FROM com_vtiger_workflows where module_name=? AND test != "" AND test IS NOT NULL AND test !="null" AND test LIKE "%' . $value . '%"'; 236 $result = $db->pquery($query, array($moduleName)); 237 $num_rows = $db->num_rows($result); 238 for ($i = 0; $i < $num_rows; $i++) { 239 $row = $db->query_result_rowdata($result, $i); 240 $condition = decode_html($row['test']); 241 $decodedArrayConditions = Zend_Json::decode($condition); 242 if (!empty($decodedArrayConditions)) { 243 foreach ($decodedArrayConditions as $key => $condition) { 244 if ($condition['fieldname'] == $pickListFieldName) { 245 $value = $condition['value']; 246 $explodedValueArray = explode(',', $value); 247 foreach ($valueToDelete as $value) { 248 $arrayKey = array_search($value, $explodedValueArray); 249 if ($arrayKey !== false) { 250 $explodedValueArray[$arrayKey] = $replaceValue; 251 } 252 } 253 $value = implode(',', $explodedValueArray); 254 $condition['value'] = $value; 255 } 256 $decodedArrayConditions[$key] = $condition; 257 } 258 $condtion = Zend_Json::encode($decodedArrayConditions); 259 $query = 'UPDATE com_vtiger_workflows SET test=? where workflow_id=?'; 260 $db->pquery($query, array($condtion, $row['workflow_id'])); 261 } 262 } 263 } 264 265 266 foreach ($valueToDelete as $value) { 267 //update workflow task 268 $query = 'SELECT task,task_id,workflow_id FROM com_vtiger_workflowtasks where task LIKE "%' . $value . '%"'; 269 $result = $db->pquery($query, array()); 270 $num_rows = $db->num_rows($result); 271 272 for ($i = 0; $i < $num_rows; $i++) { 273 $row = $db->raw_query_result_rowdata($result, $i); 274 $task = $row['task']; 275 $taskComponents = explode(':', $task); 276 $classNameWithDoubleQuotes = $taskComponents[2]; 277 $className = str_replace('"', '', $classNameWithDoubleQuotes); 278 require_once ("modules/com_vtiger_workflow/VTTaskManager.inc"); 279 require_once 'modules/com_vtiger_workflow/tasks/' . $className . '.inc'; 280 $unserializeTask = unserialize($task); 281 if (array_key_exists("field_value_mapping", $unserializeTask)) { 282 $fieldMapping = Zend_Json::decode($unserializeTask->field_value_mapping); 283 if (!empty($fieldMapping)) { 284 foreach ($fieldMapping as $key => $condition) { 285 if ($condition['fieldname'] == $pickListFieldName) { 286 $value = $condition['value']; 287 $explodedValueArray = explode(',', $value); 288 foreach ($valueToDelete as $value) { 289 $arrayKey = array_search($value, $explodedValueArray); 290 if ($arrayKey !== false) { 291 $explodedValueArray[$arrayKey] = $replaceValue; 292 } 293 } 294 $value = implode(',', $explodedValueArray); 295 $condition['value'] = $value; 296 } 297 $fieldMapping[$key] = $condition; 298 } 299 $updatedTask = Zend_Json::encode($fieldMapping); 300 $unserializeTask->field_value_mapping = $updatedTask; 301 $serializeTask = serialize($unserializeTask); 302 $query = 'UPDATE com_vtiger_workflowtasks SET task=? where workflow_id=? AND task_id=?'; 303 $db->pquery($query, array($serializeTask, $row['workflow_id'], $row['task_id'])); 304 } 305 } else { 306 if ($className == 'VTCreateEventTask') { 307 if ($pickListFieldName == 'eventstatus') { 308 $pickListFieldName = 'status'; 309 } elseif ($pickListFieldName == 'activitytype') { 310 $pickListFieldName = 'eventType'; 311 } 312 } elseif ($className == 'VTCreateTodoTask') { 313 if ($pickListFieldName == 'taskstatus') { 314 $pickListFieldName = 'status'; 315 } elseif ($pickListFieldName == 'taskpriority') { 316 $pickListFieldName = 'priority'; 317 } 318 } 319 if (array_key_exists($pickListFieldName, $unserializeTask)) { 320 $value = $unserializeTask->$pickListFieldName; 321 $explodedValueArray = explode(',', $value); 322 foreach ($valueToDelete as $value) { 323 $arrayKey = array_search($value, $explodedValueArray); 324 if ($arrayKey !== false) { 325 $explodedValueArray[$arrayKey] = $replaceValue; 326 } 327 } 328 $value = implode(',', $explodedValueArray); 329 $unserializeTask->$pickListFieldName = $value; 330 $serializeTask = serialize($unserializeTask); 331 $query = 'UPDATE com_vtiger_workflowtasks SET task=? where workflow_id=? AND task_id=?'; 332 $db->pquery($query, array($serializeTask, $row['workflow_id'], $row['task_id'])); 333 } 334 } 335 } 336 } 337 338 } 339 } 340 ?>
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 |