From 2dc76e8d06eceb12a313bbb013f814fe5193b4c1 Mon Sep 17 00:00:00 2001 From: Matthew Wire Date: Thu, 21 Jan 2021 16:50:27 +0000 Subject: [PATCH] Show disabled membership types on contact tab --- CRM/Member/BAO/Membership.php | 6 ++++- CRM/Member/Page/Tab.php | 5 +++- ext/financialacls/financialacls.php | 23 +++++++++++-------- tests/phpunit/api/v3/FinancialTypeACLTest.php | 3 ++- 4 files changed, 25 insertions(+), 12 deletions(-) diff --git a/CRM/Member/BAO/Membership.php b/CRM/Member/BAO/Membership.php index 16da9bbb35..2d6af50517 100644 --- a/CRM/Member/BAO/Membership.php +++ b/CRM/Member/BAO/Membership.php @@ -1575,11 +1575,15 @@ WHERE civicrm_membership.contact_id = civicrm_contact.id * @return null|string */ public static function getContactMembershipCount($contactID, $activeOnly = FALSE) { - CRM_Financial_BAO_FinancialType::getAvailableMembershipTypes($membershipTypes); + $membershipTypes = \Civi\Api4\MembershipType::get(TRUE) + ->execute() + ->indexBy('id') + ->column('name'); $addWhere = " AND membership_type_id IN (0)"; if (!empty($membershipTypes)) { $addWhere = " AND membership_type_id IN (" . implode(',', array_keys($membershipTypes)) . ")"; } + $select = "SELECT count(*) FROM civicrm_membership "; $where = "WHERE civicrm_membership.contact_id = {$contactID} AND civicrm_membership.is_test = 0 "; diff --git a/CRM/Member/Page/Tab.php b/CRM/Member/Page/Tab.php index 584497abaa..3d418592fc 100644 --- a/CRM/Member/Page/Tab.php +++ b/CRM/Member/Page/Tab.php @@ -32,7 +32,10 @@ class CRM_Member_Page_Tab extends CRM_Core_Page { */ public function browse() { $links = self::links('all', $this->_isPaymentProcessor, $this->_accessContribution); - CRM_Financial_BAO_FinancialType::getAvailableMembershipTypes($membershipTypes); + $membershipTypes = \Civi\Api4\MembershipType::get(TRUE) + ->execute() + ->indexBy('id') + ->column('name'); $addWhere = "membership_type_id IN (0)"; if (!empty($membershipTypes)) { $addWhere = "membership_type_id IN (" . implode(',', array_keys($membershipTypes)) . ")"; diff --git a/ext/financialacls/financialacls.php b/ext/financialacls/financialacls.php index 93a7755a56..8fd88f4ba8 100644 --- a/ext/financialacls/financialacls.php +++ b/ext/financialacls/financialacls.php @@ -188,15 +188,20 @@ function financialacls_civicrm_selectWhereClause($entity, &$clauses) { if (!financialacls_is_acl_limiting_enabled()) { return; } - if ($entity === 'LineItem') { - $types = []; - CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($types); - if ($types) { - $clauses['financial_type_id'] = 'IN (' . implode(',', array_keys($types)) . ')'; - } - else { - $clauses['financial_type_id'] = '= 0'; - } + + switch ($entity) { + case 'LineItem': + case 'MembershipType': + $types = []; + CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($types); + if ($types) { + $clauses['financial_type_id'] = 'IN (' . implode(',', array_keys($types)) . ')'; + } + else { + $clauses['financial_type_id'] = '= 0'; + } + break; + } } diff --git a/tests/phpunit/api/v3/FinancialTypeACLTest.php b/tests/phpunit/api/v3/FinancialTypeACLTest.php index 036960b090..e78f9fe5cb 100644 --- a/tests/phpunit/api/v3/FinancialTypeACLTest.php +++ b/tests/phpunit/api/v3/FinancialTypeACLTest.php @@ -316,12 +316,13 @@ class api_v3_FinancialTypeACLTest extends CiviUnitTestCase { $this->assertEquals($contribution['count'], 1); } - public function testMembersipTypeACLFinancialTypeACL() { + public function testMembershipTypeACLFinancialTypeACL() { $contactID = $this->individualCreate(); $this->contactMembershipCreate(['contact_id' => $contactID]); $this->enableFinancialACLs(); $this->setPermissions([ 'access CiviCRM', + 'access CiviMember', 'access CiviContribute', 'view all contacts', 'add contributions of type Donation', -- 2.25.1