APIv4 - Fix dynamic bridge joins
[civicrm-core.git] / ext / search / Civi / Search / Admin.php
index b223b321f09b9d2307e3c9d413b43999c933a1fa..e7abc0e0ff648e14bddf6ce0813ce551a3a3352c 100644 (file)
@@ -142,25 +142,13 @@ class Admin {
           ) {
             continue;
           }
-          // Dynamic references use a column like "entity_table"
-          $dynamicCol = $reference->getTypeColumn();
-          if ($dynamicCol) {
-            $targetTables = $daoClass::buildOptions($dynamicCol);
-            if (!$targetTables) {
-              continue;
-            }
-            $targetTables = array_keys($targetTables);
-          }
-          else {
-            $targetTables = [$reference->getTargetTable()];
-          }
-          foreach ($targetTables as $targetTable) {
-            $targetDao = \CRM_Core_DAO_AllCoreTables::getClassForTable($targetTable);
-            $targetEntityName = \CRM_Core_DAO_AllCoreTables::getBriefName($targetDao);
+          foreach ($reference->getTargetEntities() as $targetTable => $targetEntityName) {
             if (!isset($allowedEntities[$targetEntityName]) || $targetEntityName === $entity['name']) {
               continue;
             }
             $targetEntity = $allowedEntities[$targetEntityName];
+            // Dynamic references use a column like "entity_table"
+            $dynamicCol = $reference->getTypeColumn();
             // Non-bridge joins directly between 2 entities
             if (!$bridge) {
               // Add the straight 1-1 join