From 9f44a59c8a089d54e001496beacc81fd988f635c Mon Sep 17 00:00:00 2001
From: Jimmy Berry <jimmy@boombatower.com>
Date: Sun, 22 May 2011 06:27:50 -0500
Subject: Patch #1153072: Admin role doesn't provide all permissions.

---
 modules/user/user.module |   20 +++++++++-----------
 1 files changed, 9 insertions(+), 11 deletions(-)

diff --git a/modules/user/user.module b/modules/user/user.module
index de72baf..d081399 100644
--- a/modules/user/user.module
+++ b/modules/user/user.module
@@ -3751,21 +3751,19 @@ function user_register_submit($form, &$form_state) {
 }
 
 /**
- * Implements hook_modules_installed().
+ * Implements hook_flush_caches().
  */
-function user_modules_installed($modules) {
+function user_flush_caches() {
   // Assign all available permissions to the administrator role.
-  $rid = variable_get('user_admin_role', 0);
-  if ($rid) {
-    $permissions = array();
-    foreach ($modules as $module) {
-      if ($module_permissions = module_invoke($module, 'permission')) {
-        $permissions = array_merge($permissions, array_keys($module_permissions));
+  if ($rid = variable_get('user_admin_role')) {
+    $permissions = drupal_map_assoc(array_keys(module_invoke_all('permission')));
+    $current = user_role_permissions(array($rid => $rid));
+    foreach ($current[$rid] as $permission => $status) {
+      if (!isset($permissions[$permission])) {
+        $permissions[$permission] = FALSE;
       }
     }
-    if (!empty($permissions)) {
-      user_role_grant_permissions($rid, $permissions);
-    }
+    user_role_change_permissions($rid, $permissions);
   }
 }
 
-- 
1.7.4.2

