From a99b82c59f31a113e0f9fdfcfab0c6701a95d944 Mon Sep 17 00:00:00 2001 From: eileen Date: Tue, 15 Jan 2019 12:48:36 +1300 Subject: [PATCH] Fix mishandling / loss of check_permission flag --- CRM/Dedupe/Finder.php | 4 ++-- tests/phpunit/api/v3/ACLPermissionTest.php | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/CRM/Dedupe/Finder.php b/CRM/Dedupe/Finder.php index 26d62a3f53..ef50af8ed0 100644 --- a/CRM/Dedupe/Finder.php +++ b/CRM/Dedupe/Finder.php @@ -125,6 +125,7 @@ class CRM_Dedupe_Finder { if (!$params) { return array(); } + $checkPermission = CRM_Utils_Array::value('check_permission', $params, TRUE); // This may no longer be required - see https://github.com/civicrm/civicrm-core/pull/13176 $params = array_filter($params); @@ -146,7 +147,6 @@ class CRM_Dedupe_Finder { CRM_Core_Error::fatal("$used rule for $ctype does not exist"); } } - $params['check_permission'] = CRM_Utils_Array::value('check_permission', $params, TRUE); if (isset($params['civicrm_phone']['phone_numeric'])) { $orig = $params['civicrm_phone']['phone_numeric']; @@ -155,7 +155,7 @@ class CRM_Dedupe_Finder { $rgBao->params = $params; $rgBao->fillTable(); $dao = new CRM_Core_DAO(); - $dao->query($rgBao->thresholdQuery($params['check_permission'])); + $dao->query($rgBao->thresholdQuery($checkPermission)); $dupes = array(); while ($dao->fetch()) { if (isset($dao->id) && $dao->id) { diff --git a/tests/phpunit/api/v3/ACLPermissionTest.php b/tests/phpunit/api/v3/ACLPermissionTest.php index 73ffd354ef..b45a11d0fb 100644 --- a/tests/phpunit/api/v3/ACLPermissionTest.php +++ b/tests/phpunit/api/v3/ACLPermissionTest.php @@ -692,9 +692,7 @@ class api_v3_ACLPermissionTest extends CiviUnitTestCase { ], 'check_permissions' => 0, ]); - // Actually this should be 2 but there is a line of array_filter in dupesByParams that causes - // check_permissions to be dropped at that point. I am working aginst rc now - that should possibly be removed against master. - $this->assertEquals(1, $dupes['count']); + $this->assertEquals(2, $dupes['count']); CRM_Core_Config::singleton()->userPermissionClass->permissions = ['administer CiviCRM']; $dupes = $this->callAPISuccess('Contact', 'duplicatecheck', [ -- 2.25.1