correctly handle empty arrays in custom-fields;
authorginkgoMZD <mzd@ginkgostreet.com>
Tue, 20 Dec 2022 15:52:58 +0000 (10:52 -0500)
committerginkgoMZD <mzd@ginkgostreet.com>
Tue, 20 Dec 2022 16:45:57 +0000 (11:45 -0500)
api/v3/utils.php

index b4b561126971b54c269174348a5e90a412d28165..2a03f8e4a7cb203133f8b033ad8244796ffa16eb 100644 (file)
@@ -1100,7 +1100,7 @@ function _civicrm_api3_custom_format_params($params, &$values, $extends, $entity
   foreach ($params as $key => $value) {
     [$customFieldID, $customValueID] = CRM_Core_BAO_CustomField::getKeyID($key, TRUE);
     if ($customFieldID && (!is_null($value))) {
-      if ($checkCheckBoxField && !empty($fields['custom_' . $customFieldID]) && $fields['custom_' . $customFieldID]['html_type'] == 'CheckBox') {
+      if ($checkCheckBoxField && isset($fields['custom_' . $customFieldID]) && $fields['custom_' . $customFieldID]['html_type'] == 'CheckBox') {
         formatCheckBoxField($value, 'custom_' . $customFieldID, $entity);
       }
 
@@ -1170,6 +1170,10 @@ function formatCheckBoxField(&$checkboxFieldValue, $customFieldLabel, $entity) {
     return;
   }
 
+  if (is_array($checkboxFieldValue) && empty($checkboxFieldValue)) {
+    $checkboxFieldValue = '';
+    return;
+  }
   $options = $options['values'];
   $validValue = TRUE;
   if (is_array($checkboxFieldValue)) {