From 4bd10b78e42323925abd2d3d9862a999891b986d Mon Sep 17 00:00:00 2001 From: Uma <uma.s@vtiger.com> Date: Fri, 27 Sep 2019 15:03:36 +0530 Subject: [PATCH] Fixes:#1120::Uma::Multipicklist rename and remove of picklist value --- modules/Settings/Picklist/models/Module.php | 24 +++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/modules/Settings/Picklist/models/Module.php b/modules/Settings/Picklist/models/Module.php index 906484910..1d008fe17 100644 --- a/modules/Settings/Picklist/models/Module.php +++ b/modules/Settings/Picklist/models/Module.php @@ -90,12 +90,18 @@ class Settings_Picklist_Module_Model extends Vtiger_Module_Model { $db->pquery($query, array($newValue, $id)); } + $moduleInstance = Vtiger_Module_Model::getInstance($moduleName); + $fieldModel = Vtiger_Field_Model::getInstance($pickListFieldName, $moduleInstance); for ($i = 0; $i < $num_rows; $i++) { $row = $db->query_result_rowdata($result, $i); $tableName = $row['tablename']; $columnName = $row['columnname']; - $query = 'UPDATE ' . $tableName . ' SET ' . $columnName . '=? WHERE ' . $columnName . '=?'; - $db->pquery($query, array($newValue, $oldValue)); + if($fieldModel && $fieldModel->getFieldDataType() == 'multipicklist') { + $db->pquery('UPDATE '.$tableName.' SET '.$columnName.' = TRIM(BOTH " |##| " FROM REPLACE(CONCAT(" |##| ",CONCAT('.$columnName.', " |##| ")) , "|##| '.$oldValue.' |##|", "|##| '.$newValue.' |##|"))'); + } else { + $query = 'UPDATE ' . $tableName . ' SET ' . $columnName . '=? WHERE ' . $columnName . '=?'; + $db->pquery($query, array($newValue, $oldValue)); + } } $query = "UPDATE vtiger_field SET defaultvalue=? WHERE defaultvalue=? AND columnname=?"; @@ -196,10 +202,16 @@ class Settings_Picklist_Module_Model extends Vtiger_Module_Model { $tableName = $row['tablename']; $columnName = $row['columnname']; - $query = 'UPDATE '.$tableName.' SET '.$columnName.'=? WHERE '.$columnName.' IN ('. generateQuestionMarks($pickListValues).')'; - $params = array($replaceValue); - array_push($params, $pickListValues); - $db->pquery($query, $params); + if($fieldModel && $fieldModel->getFieldDataType() == 'multipicklist') { + foreach($pickListValues as $key => $multipicklistValue) { + $db->pquery('UPDATE '.$tableName.' SET '.$columnName.' = TRIM(BOTH " |##| " FROM REPLACE(CONCAT(" |##| ",CONCAT('.$columnName.', " |##| ")) , " |##| '.$multipicklistValue.' |##| ", CASE WHEN INSTR(CONCAT(" |##| " ,CONCAT('.$columnName.', " |##| ")), " |##| '.$replaceValue.' |##| ") > 0 THEN " |##| " ELSE " |##| '.$replaceValue.' |##| " END))'); + } + } else { + $query = 'UPDATE '.$tableName.' SET '.$columnName.'=? WHERE '.$columnName.' IN ('. generateQuestionMarks($pickListValues).')'; + $params = array($replaceValue); + array_push($params, $pickListValues); + $db->pquery($query, $params); + } } $query = 'UPDATE vtiger_field SET defaultvalue=? WHERE defaultvalue IN ('. generateQuestionMarks($pickListValues) .') AND columnname=?'; -- GitLab