diff --git a/modules/Calendar/actions/Save.php b/modules/Calendar/actions/Save.php index da5307f8bf039af0d0cb8f0287a3bf8aaca35ed1..6fc2b91e48338732a6680d59280bf568d8eab9fe 100644 --- a/modules/Calendar/actions/Save.php +++ b/modules/Calendar/actions/Save.php @@ -144,16 +144,12 @@ class Calendar_Save_Action extends Vtiger_Save_Action { $fieldValue = $request->get($fieldName, null); // For custom time fields in Calendar, it was not converting to db insert format(sending as 10:00 AM/PM) $fieldDataType = $fieldModel->getFieldDataType(); + if($fieldValue){ + $fieldValue = Vtiger_Util_Helper::validateFieldValue($fieldValue,$fieldModel); + } if($fieldDataType == 'time' && $fieldValue !== null){ $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue); } - if(($fieldDataType == 'picklist' || $fieldDataType == 'multipicklist' || $fieldDataType == 'multiowner') && $fieldValue !== null){ - $fieldInfo = $fieldModel->getFieldInfo(); - $editablePicklistValues = $fieldInfo['editablepicklistvalues']; - if(!empty($editablePicklistValues) && !in_array($fieldValue, $editablePicklistValues)){ - $fieldValue = null; - } - } // End if ($fieldName === $request->get('field')) { $fieldValue = $request->get('value'); diff --git a/modules/SalesOrder/actions/SaveAjax.php b/modules/SalesOrder/actions/SaveAjax.php index 333268357b26e0776a04de3bf59c7180236d634d..92d2df700f9145cd73c988e4848b6d264451ca92 100755 --- a/modules/SalesOrder/actions/SaveAjax.php +++ b/modules/SalesOrder/actions/SaveAjax.php @@ -56,16 +56,12 @@ class SalesOrder_SaveAjax_Action extends Inventory_SaveAjax_Action { } $fieldDataType = $fieldModel->getFieldDataType(); + if($fieldValue){ + $fieldValue = Vtiger_Util_Helper::validateFieldValue($fieldValue,$fieldModel); + } if ($fieldDataType == 'time' && $fieldValue !== null) { $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue); } - if(($fieldDataType == 'picklist' || $fieldDataType == 'multipicklist' || $fieldDataType == 'multiowner') && $fieldValue !== null){ - $fieldInfo = $fieldModel->getFieldInfo(); - $editablePicklistValues = $fieldInfo['editablepicklistvalues']; - if(!empty($editablePicklistValues) && !in_array($fieldValue, $editablePicklistValues)){ - $fieldValue = null; - } - } if ($fieldValue !== null) { if (!is_array($fieldValue)) { $fieldValue = trim($fieldValue); @@ -88,16 +84,12 @@ class SalesOrder_SaveAjax_Action extends Inventory_SaveAjax_Action { $fieldValue = $fieldModel->getDefaultFieldValue(); } $fieldDataType = $fieldModel->getFieldDataType(); + if($fieldValue){ + $fieldValue = Vtiger_Util_Helper::validateFieldValue($fieldValue,$fieldModel); + } if ($fieldDataType == 'time' && $fieldValue !== null) { $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue); } - if(($fieldDataType == 'picklist' || $fieldDataType == 'multipicklist' || $fieldDataType == 'multiowner') && $fieldValue !== null){ - $fieldInfo = $fieldModel->getFieldInfo(); - $editablePicklistValues = $fieldInfo['editablepicklistvalues']; - if(!empty($editablePicklistValues) && !in_array($fieldValue, $editablePicklistValues)){ - $fieldValue = null; - } - } if ($fieldValue !== null) { if (!is_array($fieldValue)) { $fieldValue = trim($fieldValue); diff --git a/modules/Vtiger/actions/Save.php b/modules/Vtiger/actions/Save.php index d106ec7400e153fa19496a52aaaadc5e98ea3c8e..3def25fd85c183974dcac538a6330a326e389584 100644 --- a/modules/Vtiger/actions/Save.php +++ b/modules/Vtiger/actions/Save.php @@ -158,16 +158,12 @@ class Vtiger_Save_Action extends Vtiger_Action_Controller { foreach ($fieldModelList as $fieldName => $fieldModel) { $fieldValue = $request->get($fieldName, null); $fieldDataType = $fieldModel->getFieldDataType(); + if($fieldValue){ + $fieldValue = Vtiger_Util_Helper::validateFieldValue($fieldValue,$fieldModel); + } if($fieldDataType == 'time' && $fieldValue !== null){ $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue); } - if(($fieldDataType == 'picklist' || $fieldDataType == 'multipicklist' || $fieldDataType == 'multiowner') && $fieldValue !== null){ - $fieldInfo = $fieldModel->getFieldInfo(); - $editablePicklistValues = $fieldInfo['editablepicklistvalues']; - if(!empty($editablePicklistValues) && !in_array($fieldValue, $editablePicklistValues)){ - $fieldValue = null; - } - } if($fieldValue !== null) { if(!is_array($fieldValue) && $fieldDataType != 'currency') { $fieldValue = trim($fieldValue); diff --git a/modules/Vtiger/actions/SaveAjax.php b/modules/Vtiger/actions/SaveAjax.php index 829cf8b1486dbde64e9b125a36737dd51727905f..4207e24b1fca96ba253b7d927384d0997e13ece3 100644 --- a/modules/Vtiger/actions/SaveAjax.php +++ b/modules/Vtiger/actions/SaveAjax.php @@ -102,18 +102,13 @@ class Vtiger_SaveAjax_Action extends Vtiger_Save_Action { }else if($fieldName === $request->get('field')){ $fieldValue = $request->get('value'); } - + if($fieldValue){ + $fieldValue = Vtiger_Util_Helper::validateFieldValue($fieldValue,$fieldModel); + } $fieldDataType = $fieldModel->getFieldDataType(); if ($fieldDataType == 'time' && $fieldValue !== null) { $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue); } - if(($fieldDataType == 'picklist' || $fieldDataType == 'multipicklist' || $fieldDataType == 'multiowner') && $fieldValue !== null){ - $fieldInfo = $fieldModel->getFieldInfo(); - $editablePicklistValues = $fieldInfo['editablepicklistvalues']; - if(!empty($editablePicklistValues) && !in_array($fieldValue, $editablePicklistValues)){ - $fieldValue = null; - } - } if ($fieldValue !== null) { if (!is_array($fieldValue)) { $fieldValue = trim($fieldValue); @@ -139,8 +134,11 @@ class Vtiger_SaveAjax_Action extends Vtiger_Save_Action { } else { $fieldValue = $fieldModel->getDefaultFieldValue(); } + if($fieldValue){ + $fieldValue = Vtiger_Util_Helper::validateFieldValue($fieldValue,$fieldModel); + } $fieldDataType = $fieldModel->getFieldDataType(); - if ($fieldDataType == 'time') { + if ($fieldDataType == 'time' && $fieldValue !== null) { $fieldValue = Vtiger_Time_UIType::getTimeValueWithSeconds($fieldValue); } if ($fieldValue !== null) { diff --git a/modules/Vtiger/helpers/Util.php b/modules/Vtiger/helpers/Util.php index 23b7f18e71a61e4dac0b0a3f55f1f35a1e33481b..a235950841cc553754aea9eafcded79235f94714 100644 --- a/modules/Vtiger/helpers/Util.php +++ b/modules/Vtiger/helpers/Util.php @@ -1250,4 +1250,24 @@ class Vtiger_Util_Helper { } return $encryptedFileName; } + + public static function validateFieldValue($fieldValue,$fieldModel){ + $fieldDataType = $fieldModel->getFieldDataType(); + $fieldInfo = $fieldModel->getFieldInfo(); + $editablePicklistValues = $fieldInfo['editablepicklistvalues']; + if($fieldValue && $fieldDataType == 'picklist'){ + if(!empty($editablePicklistValues) && !in_array($fieldValue, $editablePicklistValues)){ + $fieldValue = null; + } + }elseif(count($fieldValue) > 0 && $fieldDataType == 'multipicklist'){ + if(!empty($editablePicklistValues)){ + foreach($fieldValue as $key => $value){ + if(!in_array($value, $editablePicklistValues)){ + unset($fieldValue[$key]); + } + } + } + } + return $fieldValue; + } }