Merge pull request #20450 from jaapjansma/dev_financials_6_reports
[civicrm-core.git] / CRM / Core / Permission / Drupal.php
index 73179d457505f413b310c6c267f7bc2d2577cf31..a6dbdd7a41e8e7cf6248305a6e34e7ff6def1ed7 100644 (file)
@@ -97,6 +97,31 @@ class CRM_Core_Permission_Drupal extends CRM_Core_Permission_DrupalBase {
     return FALSE;
   }
 
+  /**
+   * @inheritDoc
+   */
+  public function getAvailablePermissions() {
+    // We want to list *only* Drupal perms, so we'll *skip* Civi perms.
+    $allCorePerms = \CRM_Core_Permission::basicPermissions(TRUE);
+
+    $permissions = [];
+    $modules = system_get_info('module');
+    foreach ($modules as $moduleName => $module) {
+      $prefix = isset($module['name']) ? ($module['name'] . ': ') : '';
+      foreach (module_invoke($moduleName, 'permission') ?? [] as $permName => $perm) {
+        if (isset($allCorePerms[$permName])) {
+          continue;
+        }
+
+        $permissions["Drupal:$permName"] = [
+          'title' => $prefix . strip_tags($perm['title']),
+          'description' => $perm['description'] ?? NULL,
+        ];
+      }
+    }
+    return $permissions;
+  }
+
   /**
    * @inheritDoc
    */