From 08cde786368c7fa068f89cdb54aaffb08a041db6 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Sun, 5 Apr 2020 16:43:48 -0400 Subject: [PATCH] Cleanup CustomField BAO to use its own isSerialized function rather than guesswork --- CRM/Core/BAO/CustomField.php | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/CRM/Core/BAO/CustomField.php b/CRM/Core/BAO/CustomField.php index ecb7f2b828..d7d1fc3cd3 100644 --- a/CRM/Core/BAO/CustomField.php +++ b/CRM/Core/BAO/CustomField.php @@ -1233,28 +1233,23 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { if ($customField->data_type == 'Money' && isset($value)) { $value = number_format($value, 2); } - switch ($customField->html_type) { - case 'CheckBox': - case 'Multi-Select': - $customOption = CRM_Core_BAO_CustomOption::getCustomOption($customFieldId, FALSE); - $defaults[$elementName] = []; - $checkedValue = explode(CRM_Core_DAO::VALUE_SEPARATOR, - substr($value, 1, -1) - ); - foreach ($customOption as $val) { - if (in_array($val['value'], $checkedValue)) { - if ($customField->html_type == 'CheckBox') { - $defaults[$elementName][$val['value']] = 1; - } - elseif ($customField->html_type == 'Multi-Select') { - $defaults[$elementName][$val['value']] = $val['value']; - } + if (self::isSerialized($customField)) { + $customOption = CRM_Core_BAO_CustomOption::getCustomOption($customFieldId, FALSE); + $defaults[$elementName] = []; + $checkedValue = CRM_Utils_Array::explodePadded($value); + foreach ($customOption as $val) { + if (in_array($val['value'], $checkedValue)) { + if ($customField->html_type == 'CheckBox') { + $defaults[$elementName][$val['value']] = 1; + } + else { + $defaults[$elementName][$val['value']] = $val['value']; } } - break; - - default: - $defaults[$elementName] = $value; + } + } + else { + $defaults[$elementName] = $value; } } -- 2.25.1