From 5967bdb6550b79a70b058f840d96165d9b908235 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Tue, 7 Apr 2020 10:57:11 -0400 Subject: [PATCH] Cleanup references to custom field html_type --- CRM/Core/BAO/CustomField.php | 42 +++++++++++------------------------- 1 file changed, 13 insertions(+), 29 deletions(-) diff --git a/CRM/Core/BAO/CustomField.php b/CRM/Core/BAO/CustomField.php index 9166802f08..077be2544d 100644 --- a/CRM/Core/BAO/CustomField.php +++ b/CRM/Core/BAO/CustomField.php @@ -1950,7 +1950,7 @@ WHERE id IN ( %1, %2 ) // retrieve it from one of the other custom fields which use this option group if (empty($params['default_value'])) { //don't insert only value separator as default value, CRM-4579 - $defaultValue = self::getOptionGroupDefault($params['option_group_id'], $htmlType); + $defaultValue = self::getOptionGroupDefault($params['option_group_id'], !empty($params['serialize'])); if (!CRM_Utils_System::isNull(explode(CRM_Core_DAO::VALUE_SEPARATOR, $defaultValue))) { $params['default_value'] = $defaultValue; @@ -2209,49 +2209,33 @@ WHERE option_group_id = {$optionGroupId}"; * Get option group default. * * @param int $optionGroupId - * @param string $htmlType + * @param bool $serialize * * @return null|string */ - public static function getOptionGroupDefault($optionGroupId, $htmlType) { + public static function getOptionGroupDefault($optionGroupId, $serialize) { $query = " -SELECT default_value, html_type +SELECT default_value, serialize FROM civicrm_custom_field WHERE option_group_id = {$optionGroupId} -AND default_value IS NOT NULL -ORDER BY html_type"; +AND default_value IS NOT NULL"; $dao = CRM_Core_DAO::executeQuery($query); - $defaultValue = NULL; - $defaultHTMLType = NULL; while ($dao->fetch()) { - if ($dao->html_type == $htmlType) { + if ($dao->serialize == $serialize) { return $dao->default_value; } - if ($defaultValue == NULL) { - $defaultValue = $dao->default_value; - $defaultHTMLType = $dao->html_type; - } + $defaultValue = $dao->default_value; } - // some conversions are needed if either the old or new has a html type which has potential - // multiple default values. - if (($htmlType == 'CheckBox' || $htmlType == 'Multi-Select') && - ($defaultHTMLType != 'CheckBox' && $defaultHTMLType != 'Multi-Select') - ) { - $defaultValue = CRM_Core_DAO::VALUE_SEPARATOR . $defaultValue . CRM_Core_DAO::VALUE_SEPARATOR; + // Convert serialization + if (isset($defaultValue) && $serialize) { + return CRM_Utils_Array::implodePadded([$defaultValue]); } - elseif (($defaultHTMLType == 'CheckBox' || $defaultHTMLType == 'Multi-Select') && - ($htmlType != 'CheckBox' && $htmlType != 'Multi-Select') - ) { - $defaultValue = substr($defaultValue, 1, -1); - $values = explode(CRM_Core_DAO::VALUE_SEPARATOR, - substr($defaultValue, 1, -1) - ); - $defaultValue = $values[0]; + elseif (isset($defaultValue)) { + return CRM_Utils_Array::explodePadded($defaultValue)[0]; } - - return $defaultValue; + return NULL; } /** -- 2.25.1