[REF] Move financial acl permissions declaration to extension
authoreileen <emcnaughton@wikimedia.org>
Fri, 12 Mar 2021 00:58:57 +0000 (13:58 +1300)
committereileen <emcnaughton@wikimedia.org>
Fri, 12 Mar 2021 00:58:57 +0000 (13:58 +1300)
Just some minor cleanup to use the hook

CRM/Core/Permission.php
CRM/Financial/BAO/FinancialType.php
ext/financialacls/financialacls.php
ext/financialacls/tests/phpunit/Civi/Financialacls/FinancialTypeTest.php
tests/phpunit/CRM/Financial/BAO/FinancialTypeTest.php

index 1de3147c8ab342386dc553a8e50a4ab1afa9da1b..edce29ae2f7eba2125d1bc2c5d80cb98b5b92120 100644 (file)
@@ -632,7 +632,6 @@ class CRM_Core_Permission {
     // Add any permissions defined in hook_civicrm_permission implementations.
     $module_permissions = $config->userPermissionClass->getAllModulePermissions($descriptions);
     $permissions = array_merge($permissions, $module_permissions);
-    CRM_Financial_BAO_FinancialType::permissionedFinancialTypes($permissions, $descriptions);
     return $permissions;
   }
 
index 7a31cc66c60d4a9a3b0fa9dfd1de9591734c3458..9003eb8d1630b05ac8a5f23b94250f9541e68842 100644 (file)
@@ -200,6 +200,7 @@ class CRM_Financial_BAO_FinancialType extends CRM_Financial_DAO_FinancialType {
    * @return bool
    */
   public static function permissionedFinancialTypes(&$permissions, $descriptions) {
+    CRM_Core_Error::deprecatedFunctionWarning('not done via hook.');
     if (!self::isACLFinancialTypeStatus()) {
       return FALSE;
     }
index 8fd88f4ba8433517bfec9f0e5a2aeddef9840449..eb258732869f04f03bab937e1a76feb0469ca0d5 100644 (file)
@@ -253,6 +253,38 @@ function financialacls_civicrm_membershipTypeValues($form, &$membershipTypeValue
   }
 }
 
+/**
+ * Add permissions.
+ *
+ * @see https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_permission/
+ *
+ * @param array $permissions
+ */
+function financialacls_civicrm_permission(&$permissions) {
+  if (!financialacls_is_acl_limiting_enabled()) {
+    return;
+  }
+  $actions = [
+    'add' => ts('add'),
+    'view' => ts('view'),
+    'edit' => ts('edit'),
+    'delete' => ts('delete'),
+  ];
+  $financialTypes = \CRM_Contribute_BAO_Contribution::buildOptions('financial_type_id', 'validate');
+  foreach ($financialTypes as $id => $type) {
+    foreach ($actions as $action => $action_ts) {
+      $permissions[$action . ' contributions of type ' . $type] = [
+        ts("CiviCRM: %1 contributions of type %2", [1 => $action_ts, 2 => $type]),
+        ts('%1 contributions of type %2', [1 => $action_ts, 2 => $type]),
+      ];
+    }
+  }
+  $permissions['administer CiviCRM Financial Types'] = [
+    ts('CiviCRM: administer CiviCRM Financial Types'),
+    ts('Administer access to Financial Types'),
+  ];
+}
+
 /**
  * Remove unpermitted financial types from field Options in search context.
  *
index 08fabb1408da9cdb561be524ce33fe3a75b552fd..c43511981fcb3871ac76d9d370f93a004459fef8 100644 (file)
@@ -32,4 +32,34 @@ class FinancialTypeTest extends BaseTestClass {
     $this->assertEquals('Changing the name', substr($status[0]['text'], 0, 17));
   }
 
+  /**
+   * Check method testPermissionedFinancialTypes()
+   */
+  public function testPermissionedFinancialTypes(): void {
+    Civi::settings()->set('acl_financial_type', TRUE);
+    $permissions = \CRM_Core_Permission::basicPermissions(FALSE, TRUE);
+    $actions = [
+      'add' => ts('add'),
+      'view' => ts('view'),
+      'edit' => ts('edit'),
+      'delete' => ts('delete'),
+    ];
+    $financialTypes = \CRM_Contribute_BAO_Contribution::buildOptions('financial_type_id', 'validate');
+    foreach ($financialTypes as $id => $type) {
+      foreach ($actions as $action => $action_ts) {
+        $this->assertEquals(
+          [
+            ts("CiviCRM: %1 contributions of type %2", [1 => $action_ts, 2 => $type]),
+            ts('%1 contributions of type %2', [1 => $action_ts, 2 => $type]),
+          ],
+          $permissions[$action . ' contributions of type ' . $type]
+        );
+      }
+    }
+    $this->assertEquals([
+      ts('CiviCRM: administer CiviCRM Financial Types'),
+      ts('Administer access to Financial Types'),
+    ], $permissions['administer CiviCRM Financial Types']);
+  }
+
 }
index 0709998e7c87833a613849af6a2f65465fa58be0..5bb226dff488feb8c86928d95cc3043e9efdeb05 100644 (file)
@@ -216,36 +216,6 @@ class CRM_Financial_BAO_FinancialTypeTest extends CiviUnitTestCase {
     $this->assertEquals($expectedResult, $types, 'Verify that removing permission for a financial type restricts the available membership types');
   }
 
-  /**
-   * Check method testPermissionedFinancialTypes()
-   */
-  public function testPermissionedFinancialTypes() {
-    // First get all core permissions
-    $permissions = $checkPerms = CRM_Core_Permission::getCorePermissions();
-    $this->setACL();
-    CRM_Financial_BAO_FinancialType::permissionedFinancialTypes($permissions, TRUE);
-    $financialTypes = CRM_Contribute_PseudoConstant::financialType();
-    $actions = [
-      'add' => ts('add'),
-      'view' => ts('view'),
-      'edit' => ts('edit'),
-      'delete' => ts('delete'),
-    ];
-    foreach ($financialTypes as $id => $type) {
-      foreach ($actions as $action => $action_ts) {
-        $checkPerms[$action . ' contributions of type ' . $type] = [
-          ts("CiviCRM: %1 contributions of type %2", [1 => $action_ts, 2 => $type]),
-          ts('%1 contributions of type %2', [1 => $action_ts, 2 => $type]),
-        ];
-      }
-    }
-    $checkPerms['administer CiviCRM Financial Types'] = [
-      ts('CiviCRM: administer CiviCRM Financial Types'),
-      ts('Administer access to Financial Types'),
-    ];
-    $this->assertEquals($permissions, $checkPerms, 'Verify that permissions for each financial type have been added');
-  }
-
   /**
    * Check method testcheckPermissionedLineItems()
    *