dev/core#3495 - Advanced Search - Prevent array fields from getting trashed
authorBob Silvern <bob.silvern@sandiego350.org>
Sun, 5 Jun 2022 21:47:47 +0000 (14:47 -0700)
committerBob Silvern <bob.silvern@sandiego350.org>
Sun, 5 Jun 2022 21:47:47 +0000 (14:47 -0700)
Correctly handle those field values which are arrays, e.g.
['LIKE' => 'field-value'],  rather than strings.

CRM/Core/Form/Search.php

index 480986ba662a86d9c0918959515547cd24c49d07..2af67614c9dc752d9a06c96f6711014d9c2a19b3 100644 (file)
@@ -332,7 +332,11 @@ class CRM_Core_Form_Search extends CRM_Core_Form {
       foreach ($fields as $fieldName => $field) {
         if (!empty($this->_formValues[$fieldName]) && empty($field['options']) && empty($field['pseudoconstant'])) {
           if (in_array($field['type'], [CRM_Utils_Type::T_STRING, CRM_Utils_Type::T_TEXT])) {
-            $this->_formValues[$fieldName] = ['LIKE' => CRM_Contact_BAO_Query::getWildCardedValue(TRUE, 'LIKE', trim($this->_formValues[$fieldName]))];
+            $val = $this->_formValues[$fieldName];
+            if (is_array($val)) {
+              $val = $val['LIKE'];
+            }
+            $this->_formValues[$fieldName] = ['LIKE' => CRM_Contact_BAO_Query::getWildCardedValue(TRUE, 'LIKE', trim($val))];
           }
         }
       }