Do not attempt to format custom value of empty string
authorEileen McNaughton <emcnaughton@wikimedia.org>
Sat, 28 Jan 2023 23:35:19 +0000 (12:35 +1300)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Sat, 28 Jan 2023 23:35:19 +0000 (12:35 +1300)
CRM/Core/BAO/CustomField.php

index b84d24525713b64844b4856eb26db353fb2e345d..7f4aed8d5515d61c4522aeed2dfc258e3afc84ae 100644 (file)
@@ -1129,6 +1129,7 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField {
    * @param int|null $entityId
    *
    * @return string
+   * @throws \Brick\Money\Exception\UnknownCurrencyException
    */
   private static function formatDisplayValue($value, $field, $entityId = NULL) {
 
@@ -1269,19 +1270,21 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField {
         break;
 
       case 'Text':
-        if ($field['data_type'] == 'Money' && isset($value)) {
+        if ($field['data_type'] === 'Money' && isset($value)) {
           // $value can also be an array(while using IN operator from search builder or api).
+          $values = [];
           foreach ((array) $value as $val) {
-            $disp[] = CRM_Utils_Money::formatLocaleNumericRoundedForDefaultCurrency($val);
+            $values[] = $val === '' ? '' : CRM_Utils_Money::formatLocaleNumericRoundedForDefaultCurrency($val);
           }
-          $display = implode(', ', $disp);
+          $display = implode(', ', $values);
         }
-        elseif ($field['data_type'] == 'Float' && isset($value)) {
+        elseif ($field['data_type'] === 'Float' && isset($value)) {
           // $value can also be an array(while using IN operator from search builder or api).
+          $values = [];
           foreach ((array) $value as $val) {
-            $disp[] = CRM_Utils_Number::formatLocaleNumeric($val);
+            $values[] = $val === '' ? '' : CRM_Utils_Number::formatLocaleNumeric($val);
           }
-          $display = implode(', ', $disp);
+          $display = implode(', ', $values);
         }
         break;
     }