diff --git a/core/modules/user/src/PermissionHandler.php b/core/modules/user/src/PermissionHandler.php index d8fe021..e27f1d4 100644 --- a/core/modules/user/src/PermissionHandler.php +++ b/core/modules/user/src/PermissionHandler.php @@ -80,7 +80,7 @@ class PermissionHandler implements PermissionHandlerInterface { * * @var array */ - protected $permisisonsCache; + protected $permissionsCache; /** * Constructs a new PermissionHandler. @@ -103,14 +103,25 @@ public function __construct(ModuleHandlerInterface $module_handler, TranslationI /** * Gets the YAML discovery. * + * @param string $module_name + * (optional) The module name to get YAML discovery for. If omitted, returns + * YAML discovery for all modules. + * * @return \Drupal\Component\Discovery\YamlDiscovery * The YAML discovery. */ - protected function getYamlDiscovery() { - if (!isset($this->yamlDiscovery)) { - $this->yamlDiscovery = new YamlDiscovery('permissions', $this->moduleHandler->getModuleDirectories()); + protected function getYamlDiscovery($module_name = NULL) { + if (!isset($this->yamlDiscovery[$module_name])) { + $directories = $this->moduleHandler->getModuleDirectories(); + if ($module_name) { + // Just discover the single module. + if (!empty($directories[$module_name])) { + $directories = [$module_name => $directories[$module_name]]; + } + } + $this->yamlDiscovery[$module_name] = new YamlDiscovery('permissions', $directories); } - return $this->yamlDiscovery; + return $this->yamlDiscovery[$module_name]; } /** @@ -126,17 +137,17 @@ public function getPermissions($module_name = NULL) { * {@inheritdoc} */ public function moduleProvidesPermissions($module_name) { - if (!isset($this->permisisonsCache[$module_name])) { + if (!isset($this->permissionsCache[$module_name])) { $permissions = $this->getPermissions($module_name); } - $this->permisisonsCache[$module_name] = FALSE; + $this->permissionsCache[$module_name] = FALSE; foreach ($permissions as $permission) { if ($permission['provider'] == $module_name) { - $this->permisisonsCache[$module_name] = TRUE; + $this->permissionsCache[$module_name] = TRUE; break; } } - return $this->permisisonsCache[$module_name]; + return $this->permissionsCache[$module_name]; } /** @@ -155,19 +166,7 @@ protected function buildPermissionsYaml($module_name = NULL) { $all_permissions = array(); $all_callback_permissions = array(); - if ($module_name) { - // Just discover the single module. - $directories = $this->moduleHandler->getModuleDirectories(); - $module_directories = []; - if (!empty($directories[$module_name])) { - $module_directories = [$module_name => $directories[$module_name]]; - } - $discovery = new YamlDiscovery('permissions', $module_directories); - } - else { - // Use the default discovery - which handles all enabled modules. - $discovery = $this->getYamlDiscovery(); - } + $discovery = $this->getYamlDiscovery($module_name); foreach ($discovery->findAll() as $provider => $permissions) { // The top-level 'permissions_callback' is a list of methods in controller // syntax, see \Drupal\Core\Controller\ControllerResolver. These methods