diff --git a/core/modules/node/node.views.inc b/core/modules/node/node.views.inc index 597878a..01a63cf 100644 --- a/core/modules/node/node.views.inc +++ b/core/modules/node/node.views.inc @@ -695,7 +695,7 @@ function node_views_analyze($view) { $roles = array(); $roles['anonymous'] = array(); $roles['authenticated'] = array(); - $roles_result = user_permission_roles('access content', array('anonymous' => TRUE, 'authenticated' => TRUE)); + $roles_result = user_permission_roles('access content', array('anonymous', 'authenticated')); foreach ($roles_result as $rid) { $roles[$rid]['safe'] = TRUE; } diff --git a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php index b169013..53b9af1 100644 --- a/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php +++ b/core/modules/simpletest/lib/Drupal/simpletest/WebTestBase.php @@ -497,7 +497,7 @@ protected function drupalCreateRole(array $permissions, $rid = NULL, $name = NUL if (!empty($permissions)) { user_role_grant_permissions($role->rid, $permissions); - $assigned_permissions = user_role_permissions(array($role->rid => TRUE)); + $assigned_permissions = user_role_permissions(array($role->rid)); $missing_permissions = array_diff($permissions, array_keys($assigned_permissions[$role->rid])); if (!$missing_permissions) { $this->pass(t('Created permissions: @perms', array('@perms' => implode(', ', $permissions))), t('Role')); diff --git a/core/modules/system/lib/Drupal/system/Tests/Module/UninstallTest.php b/core/modules/system/lib/Drupal/system/Tests/Module/UninstallTest.php index 3d9edd5..0914a54 100644 --- a/core/modules/system/lib/Drupal/system/Tests/Module/UninstallTest.php +++ b/core/modules/system/lib/Drupal/system/Tests/Module/UninstallTest.php @@ -39,6 +39,7 @@ function testUserPermsUninstalled() { module_uninstall(array('module_test')); // Are the perms defined by module_test removed. - $this->assertFalse(user_permission_roles('module_test perm', user_roles()), 'Permissions were all removed.'); + $roles = array_keys(user_roles()); + $this->assertFalse(user_permission_roles('module_test perm', $roles), 'Permissions were all removed.'); } } diff --git a/core/modules/user/lib/Drupal/user/Plugin/views/field/Permissions.php b/core/modules/user/lib/Drupal/user/Plugin/views/field/Permissions.php index 62e6b9c..572094c 100644 --- a/core/modules/user/lib/Drupal/user/Plugin/views/field/Permissions.php +++ b/core/modules/user/lib/Drupal/user/Plugin/views/field/Permissions.php @@ -53,7 +53,7 @@ function pre_render(&$values) { $account = $this->get_entity($row); // Get a list of roles of all the users to load all permissions of each // user. - $role_permissions = user_role_permissions($account->roles); + $role_permissions = user_role_permissions(array_keys($account->roles)); foreach ($role_permissions as $role => $permissions) { foreach ($permissions as $permission => $value) { $this->items[$account->uid][$permission]['permission'] = $all_permissions[$permission]['title']; diff --git a/core/modules/user/user.admin.inc b/core/modules/user/user.admin.inc index a8e7f55..4d7e6ee 100644 --- a/core/modules/user/user.admin.inc +++ b/core/modules/user/user.admin.inc @@ -649,7 +649,7 @@ function user_admin_permissions($form, $form_state, $rid = NULL) { $role_names = array($rid => $role_names[$rid]); } // Fetch permissions for all roles or the one selected role. - $role_permissions = user_role_permissions($role_names); + $role_permissions = user_role_permissions(array_keys($role_names)); // Store $role_names for use when saving the data. $form['role_names'] = array( diff --git a/core/modules/user/user.module b/core/modules/user/user.module index 3e50c82..303cf92 100644 --- a/core/modules/user/user.module +++ b/core/modules/user/user.module @@ -393,25 +393,33 @@ function user_password($length = 10) { /** * Determine the permissions for one or more roles. * - * @param $roles - * An array whose keys are the role IDs of interest, such as $user->roles. + * @param array $roles + * An array of role IDs. * - * @return + * @return array * An array indexed by role ID. Each value is an array whose keys are the * permission strings for the given role ID. */ function user_role_permissions($roles = array()) { $cache = &drupal_static(__FUNCTION__, array()); - foreach ($roles as $rid => $name) { + foreach ($roles as $rid) { if (!isset($cache[$rid])) { $cache[$rid] = config('user.permissions.' . $rid)->get() ?: array(); } } - return array_intersect_key($cache, $roles); + return array_intersect_key($cache, array_flip($roles)); } /** - * Filters the given roles for a given permission. + * Filters the given roles for a permission. + * + * @param string $permission + * The permission, such as "administer nodes", being checked for. + * @param array $roles + * An array of role IDs. + * + * @return array + * An array of role IDs that have the given permission. */ function user_permission_roles($permission, $roles = array()) { $return = array_filter(user_role_permissions($roles), function ($permissions) use ($permission) { @@ -456,7 +464,7 @@ function user_access($string, $account = NULL) { } $perm = &$drupal_static_fast['perm']; if (!isset($perm[$account->uid])) { - $role_permissions = user_role_permissions($account->roles); + $role_permissions = user_role_permissions(array_keys($account->roles)); $perms = array(); foreach ($role_permissions as $one_role) { $perms += $one_role; @@ -2522,7 +2530,8 @@ function user_build_filter_query(SelectInterface $query) { continue; } - $roles = user_permission_roles($value, user_roles()); + $rids = array_keys(user_roles()); + $roles = user_permission_roles($value, $rids); $users_roles_alias = $query->join('users_roles', 'ur', '%alias.uid = u.uid'); $query->condition($users_roles_alias . '.rid', $roles ?: NULL); } @@ -2836,14 +2845,15 @@ function user_modules_installed($modules) { */ function user_modules_uninstalled($modules) { // Delete all permissions that are no longer available. - foreach (user_role_permissions(user_roles()) as $role => $permissions) { + $roles = array_keys(user_roles()); + foreach (user_role_permissions($roles) as $role => $permissions) { $permissions = array_filter($permissions, function ($module) use ($modules) { return in_array($module, $modules); }); if (!empty($permissions)) { user_role_revoke_permissions($role, array_keys($permissions)); } - }g + } // Remove any potentially orphan module data stored for users. drupal_container()->get('user.data')->delete($modules); }