APIv4 - Fetch all options when matching pseudoconstants.
authorcolemanw <coleman@civicrm.org>
Sun, 11 Feb 2024 23:02:57 +0000 (18:02 -0500)
committereileen <emcnaughton@wikimedia.org>
Mon, 12 Feb 2024 20:43:43 +0000 (09:43 +1300)
When performing a match we want to fetch all options not a filtered list.
Fixes https://lab.civicrm.org/dev/core/-/issues/4997

Civi/Api4/Utils/FormattingUtil.php

index 2aba6212f2107339126e7a1afd66685bfa6c5a80..f48acaab4e662384460d8d83db81ca6e2cec612f 100644 (file)
@@ -303,7 +303,9 @@ class FormattingUtil {
     // Use BAO::buildOptions if possible
     if ($baoName) {
       $fieldName = empty($field['custom_field_id']) ? $field['name'] : 'custom_' . $field['custom_field_id'];
-      $options = $baoName::buildOptions($fieldName, $context, self::filterByPath($values, $fieldPath, $field['name']));
+      $entityValues = self::filterByPath($values, $fieldPath, $field['name']);
+      $entityValues['check_permissions'] = FALSE;
+      $options = $baoName::buildOptions($fieldName, $context, $entityValues);
     }
     // Fallback for option lists that exist in the api but not the BAO
     if (!isset($options) || $options === FALSE) {