From d6b82d6546fd9bbfa7a80be28a516793ed8e840d Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Wed, 1 Feb 2023 13:40:27 -0500 Subject: [PATCH] Fix APIv4 autocompletes for dynamic entities Ensures APIv4 autocompletes work with dynamic entities like Multi-Record custom groups & the ECK extension --- Civi/API/Request.php | 1 + .../Civi/Api4/Event/Subscriber/DefaultDisplaySubscriber.php | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Civi/API/Request.php b/Civi/API/Request.php index 62cd7605cd..8b7a087f2e 100644 --- a/Civi/API/Request.php +++ b/Civi/API/Request.php @@ -55,6 +55,7 @@ class Request { if ($daoName && !$daoName::isComponentEnabled()) { throw new \Civi\API\Exception\NotImplementedException("$entity API is not available because " . $daoName::COMPONENT . " component is disabled"); } + // Extra arguments used e.g. by dynamic entities like Multi-Record custom groups & the ECK extension $args = (array) CoreUtil::getInfoItem($entity, 'class_args'); $apiRequest = call_user_func_array($callable, $args); foreach ($params as $name => $param) { diff --git a/ext/search_kit/Civi/Api4/Event/Subscriber/DefaultDisplaySubscriber.php b/ext/search_kit/Civi/Api4/Event/Subscriber/DefaultDisplaySubscriber.php index c40f3ec251..f6711dd724 100644 --- a/ext/search_kit/Civi/Api4/Event/Subscriber/DefaultDisplaySubscriber.php +++ b/ext/search_kit/Civi/Api4/Event/Subscriber/DefaultDisplaySubscriber.php @@ -11,6 +11,7 @@ namespace Civi\Api4\Event\Subscriber; +use Civi\API\Request; use Civi\Api4\Utils\CoreUtil; use Civi\Core\Event\GenericHookEvent; use Symfony\Component\EventDispatcher\EventSubscriberInterface; @@ -66,7 +67,8 @@ class DefaultDisplaySubscriber extends \Civi\Core\Service\AutoService implements // Default sort order $e->display['settings']['sort'] = self::getDefaultSort($entityName); - $fields = CoreUtil::getApiClass($entityName)::get()->entityFields(); + $apiGet = Request::create($entityName, 'get', ['version' => 4]); + $fields = $apiGet->entityFields(); $columns = [$labelField]; // Add grouping fields like "event_type_id" in the description $grouping = (array) (CoreUtil::getCustomGroupExtends($entityName)['grouping'] ?? []); -- 2.25.1