X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FCore%2FPermission%2FDrupal.php;h=a6dbdd7a41e8e7cf6248305a6e34e7ff6def1ed7;hb=e7c85426a847d0f693170027e72d3fef90d9673b;hp=73179d457505f413b310c6c267f7bc2d2577cf31;hpb=d2302f91322946564de5bb6021d4b3c8ce46128b;p=civicrm-core.git diff --git a/CRM/Core/Permission/Drupal.php b/CRM/Core/Permission/Drupal.php index 73179d4575..a6dbdd7a41 100644 --- a/CRM/Core/Permission/Drupal.php +++ b/CRM/Core/Permission/Drupal.php @@ -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 */