Merge pull request #20214 from ixiam/dev#issue_2584
[civicrm-core.git] / CRM / Core / Permission / Backdrop.php
index 1dddc5663ec5f3db371884a4cc774dbcf8c1ccdb..de90766d724d7437fea41ab395b1ea3f70c887f8 100644 (file)
@@ -13,8 +13,6 @@
  *
  * @package CRM
  * @copyright CiviCRM LLC https://civicrm.org/licensing
- * $Id$
- *
  */
 
 /**
@@ -100,6 +98,31 @@ class CRM_Core_Permission_Backdrop extends CRM_Core_Permission_DrupalBase {
     return FALSE;
   }
 
+  /**
+   * @inheritDoc
+   */
+  public function getAvailablePermissions() {
+    // We want to list *only* Backdrop 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
    */