From f004c826f50cac33dd54f40a3d4e5f7fc2d869fe Mon Sep 17 00:00:00 2001
From: Coleman Watts <coleman@civicrm.org>
Date: Tue, 12 Oct 2021 21:51:59 -0400
Subject: [PATCH] REF - Fix loop in APIv4 Entity.get to only load ad-hoc
 entities once

---
 Civi/Api4/Action/Entity/Get.php | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/Civi/Api4/Action/Entity/Get.php b/Civi/Api4/Action/Entity/Get.php
index 6f939e84d42..3e98e7f348a 100644
--- a/Civi/Api4/Action/Entity/Get.php
+++ b/Civi/Api4/Action/Entity/Get.php
@@ -40,15 +40,15 @@ class Get extends \Civi\Api4\Generic\BasicGetAction {
     $entities = $cache->get('api4.entities.info', []);
 
     if (!$entities) {
+      // Load entities declared in API files
       foreach ($this->getAllApiClasses() as $className) {
-        // Load entities declared in API files
         $this->loadEntity($className, $entities);
-        // Load entities based on custom data
-        $entities = array_merge($entities, $this->getCustomEntities());
-        // Allow extensions to modify the list of entities
-        $event = GenericHookEvent::create(['entities' => &$entities]);
-        \Civi::dispatcher()->dispatch('civi.api4.entityTypes', $event);
       }
+      // Load entities based on custom data
+      $entities = array_merge($entities, $this->getCustomEntities());
+      // Allow extensions to modify the list of entities
+      $event = GenericHookEvent::create(['entities' => &$entities]);
+      \Civi::dispatcher()->dispatch('civi.api4.entityTypes', $event);
       ksort($entities);
       $cache->set('api4.entities.info', $entities);
     }
-- 
GitLab