From d41d080bd9990e3c137e6a8cda2267d91578a150 Mon Sep 17 00:00:00 2001 From: colemanw Date: Wed, 1 Nov 2023 20:59:35 -0400 Subject: [PATCH] APIv4 - Ensure 'search_fields' defaults to 'label_field' for Entity.get This default is set in the AbstractEntity class, but not every entity inherits from that class, e.g. ECK does not. So it needs to be filled in by the Entity.get action --- Civi/Api4/Provider/ActionObjectProvider.php | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Civi/Api4/Provider/ActionObjectProvider.php b/Civi/Api4/Provider/ActionObjectProvider.php index 91c30f9784..bee1c4a272 100644 --- a/Civi/Api4/Provider/ActionObjectProvider.php +++ b/Civi/Api4/Provider/ActionObjectProvider.php @@ -161,6 +161,7 @@ class ActionObjectProvider extends AutoService implements EventSubscriberInterfa // Allow extensions to modify the list of entities $event = GenericHookEvent::create(['entities' => &$entities]); \Civi::dispatcher()->dispatch('civi.api4.entityTypes', $event); + $this->fillEntityDefaults($entities); ksort($entities); $cache->set('api4.entities.info', $entities); } @@ -168,6 +169,14 @@ class ActionObjectProvider extends AutoService implements EventSubscriberInterfa return $entities; } + public function fillEntityDefaults(array &$entities) { + foreach ($entities as &$entity) { + if (!isset($entity['search_fields'])) { + $entity['search_fields'] = (array) ($entity['label_field'] ?? NULL); + } + } + } + /** * Scan all api directories to discover entities * @return \Civi\Api4\Generic\AbstractEntity[] -- 2.25.1