From 0408d329450d3e6b81ceb1581a512dc7392c58a6 Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Sun, 27 Jun 2021 00:41:00 -0400 Subject: [PATCH] APIv4 - Emit notices about deprecated join aliases --- Civi/Api4/Service/Schema/Joiner.php | 3 +++ tests/phpunit/api/v4/Entity/ContactJoinTest.php | 17 ----------------- 2 files changed, 3 insertions(+), 17 deletions(-) diff --git a/Civi/Api4/Service/Schema/Joiner.php b/Civi/Api4/Service/Schema/Joiner.php index e53c8bff517b..7836cdad5019 100644 --- a/Civi/Api4/Service/Schema/Joiner.php +++ b/Civi/Api4/Service/Schema/Joiner.php @@ -70,6 +70,9 @@ public function autoJoin(Api4SelectQuery $query, array $joinPath, $side = 'LEFT' if ($joinEntity && !$query->checkEntityAccess($joinEntity)) { throw new UnauthorizedException('Cannot join to ' . $joinEntity); } + if ($link->isDeprecated()) { + \CRM_Core_Error::deprecatedWarning("Deprecated join alias '$alias' used in APIv4 get. Should be changed to '{$alias}_id'"); + } $bao = $joinEntity ? CoreUtil::getBAOFromApiName($joinEntity) : NULL; $conditions = $link->getConditionsForJoin($baseTableAlias); diff --git a/tests/phpunit/api/v4/Entity/ContactJoinTest.php b/tests/phpunit/api/v4/Entity/ContactJoinTest.php index 0c92abac5441..e185e7f4fdba 100644 --- a/tests/phpunit/api/v4/Entity/ContactJoinTest.php +++ b/tests/phpunit/api/v4/Entity/ContactJoinTest.php @@ -46,23 +46,6 @@ public function setUpHeadless() { return parent::setUpHeadless(); } - public function testContactJoinDeprecated() { - $contact = $this->getReference('test_contact_1'); - $entitiesToTest = ['Address', 'OpenID', 'IM', 'Website', 'Email', 'Phone']; - - foreach ($entitiesToTest as $entity) { - $results = civicrm_api4($entity, 'get', [ - 'where' => [['contact_id', '=', $contact['id']]], - // Deprecated syntax (new syntax is `contact_id.*` not `contact.*`) - 'select' => ['contact.*_name', 'contact.id'], - ]); - foreach ($results as $result) { - $this->assertEquals($contact['id'], $result['contact.id']); - $this->assertEquals($contact['display_name'], $result['contact.display_name']); - } - } - } - public function testContactJoin() { $contact = $this->getReference('test_contact_1'); $entitiesToTest = ['Address', 'OpenID', 'IM', 'Website', 'Email', 'Phone'];