From b4050a62e4756f317fbdbcfb79f9d03d2a1e45d4 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Mon, 6 Mar 2023 17:31:57 -0500 Subject: [PATCH] APIv4 - Don't link to non-existent API entities --- Civi/Api4/Service/Spec/SpecFormatter.php | 3 +-- Civi/Api4/Utils/CoreUtil.php | 13 +++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/Civi/Api4/Service/Spec/SpecFormatter.php b/Civi/Api4/Service/Spec/SpecFormatter.php index 3b9ebb4e22..b126f46845 100644 --- a/Civi/Api4/Service/Spec/SpecFormatter.php +++ b/Civi/Api4/Service/Spec/SpecFormatter.php @@ -14,7 +14,6 @@ namespace Civi\Api4\Service\Spec; use Civi\Api4\Utils\CoreUtil; use Civi\Api4\Utils\FormattingUtil; -use CRM_Core_DAO_AllCoreTables as AllCoreTables; class SpecFormatter { @@ -97,7 +96,7 @@ class SpecFormatter { $fkAPIName = $data['FKApiName'] ?? NULL; $fkClassName = $data['FKClassName'] ?? NULL; if ($fkAPIName || $fkClassName) { - $field->setFkEntity($fkAPIName ?: AllCoreTables::getBriefName($fkClassName)); + $field->setFkEntity($fkAPIName ?: CoreUtil::getApiNameFromBAO($fkClassName)); } return $field; diff --git a/Civi/Api4/Utils/CoreUtil.php b/Civi/Api4/Utils/CoreUtil.php index a50543de89..3f988b653b 100644 --- a/Civi/Api4/Utils/CoreUtil.php +++ b/Civi/Api4/Utils/CoreUtil.php @@ -34,6 +34,19 @@ class CoreUtil { return $dao ? AllCoreTables::getBAOClassName($dao) : NULL; } + /** + * Returns API entity name given an BAO/DAO class name + * + * Returns null if the API has not been implemented + * + * @param $baoClassName + * @return string|null + */ + public static function getApiNameFromBAO($baoClassName) { + $briefName = AllCoreTables::getBriefName($baoClassName); + return $briefName && self::getApiClass($briefName) ? $briefName : NULL; + } + /** * @param $entityName * @return string|\Civi\Api4\Generic\AbstractEntity -- 2.25.1