// 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;
}
* @return bool
*/
public static function permissionedFinancialTypes(&$permissions, $descriptions) {
+ CRM_Core_Error::deprecatedFunctionWarning('not done via hook.');
if (!self::isACLFinancialTypeStatus()) {
return FALSE;
}
}
}
+/**
+ * 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.
*
$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']);
+ }
+
}
$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()
*