diff --git a/modules/Settings/Picklist/models/Module.php b/modules/Settings/Picklist/models/Module.php index 906484910e5c05955bc3b27204098df73d100dee..1d008fe17e93192eb8bb5a2da4ab4026a752a82f 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=?';