From 08a066978c5c4911840fd2bdc9eaa988a3075166 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Fri, 3 Apr 2020 19:31:46 -0400 Subject: [PATCH] APIv4 - Update custom field spec for serialize column --- Civi/Api4/Service/Spec/SpecFormatter.php | 13 ++++--------- tests/phpunit/api/v4/Spec/SpecFormatterTest.php | 3 ++- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/Civi/Api4/Service/Spec/SpecFormatter.php b/Civi/Api4/Service/Spec/SpecFormatter.php index c6d884f1be..1da26d1520 100644 --- a/Civi/Api4/Service/Spec/SpecFormatter.php +++ b/Civi/Api4/Service/Spec/SpecFormatter.php @@ -67,9 +67,6 @@ class SpecFormatter { $field->setHelpPre($data['help_pre'] ?? NULL); $field->setHelpPost($data['help_post'] ?? NULL); $field->setOptions(self::customFieldHasOptions($data)); - if (\CRM_Core_BAO_CustomField::isSerialized($data)) { - $field->setSerialize(\CRM_Core_DAO::SERIALIZE_SEPARATOR_BOOKEND); - } } else { $name = $data['name'] ?? NULL; @@ -77,9 +74,8 @@ class SpecFormatter { $field->setRequired(!empty($data['required'])); $field->setTitle($data['title'] ?? NULL); $field->setOptions(!empty($data['pseudoconstant'])); - $field->setSerialize($data['serialize'] ?? NULL); } - + $field->setSerialize($data['serialize'] ?? NULL); $field->setDefaultValue($data['default'] ?? NULL); $field->setDescription($data['description'] ?? NULL); self::setInputTypeAndAttrs($field, $data, $dataTypeName); @@ -145,10 +141,6 @@ class SpecFormatter { $inputAttrs = $data['html'] ?? []; unset($inputAttrs['type']); - if (strstr($inputType, 'Multi-Select') || ($inputType == 'Select' && !empty($data['serialize']))) { - $inputAttrs['multiple'] = TRUE; - $inputType = 'Select'; - } $map = [ 'Select State/Province' => 'Select', 'Select Country' => 'Select', @@ -156,6 +148,9 @@ class SpecFormatter { 'Link' => 'Url', ]; $inputType = $map[$inputType] ?? $inputType; + if ($inputType == 'Select' && !empty($data['serialize'])) { + $inputAttrs['multiple'] = TRUE; + } if ($inputType == 'Date' && !empty($inputAttrs['formatType'])) { self::setLegacyDateFormat($inputAttrs); } diff --git a/tests/phpunit/api/v4/Spec/SpecFormatterTest.php b/tests/phpunit/api/v4/Spec/SpecFormatterTest.php index 4f3c34a379..791062641a 100644 --- a/tests/phpunit/api/v4/Spec/SpecFormatterTest.php +++ b/tests/phpunit/api/v4/Spec/SpecFormatterTest.php @@ -67,8 +67,9 @@ class SpecFormatterTest extends UnitTestCase { 'id' => $customFieldId, 'name' => $name, 'data_type' => 'String', - 'html_type' => 'Multi-Select', + 'html_type' => 'Select', 'column_name' => $name, + 'serialize' => 1, ]; /** @var \Civi\Api4\Service\Spec\CustomFieldSpec $field */ -- 2.25.1