diff options
Diffstat (limited to 'modules/user/user.admin.inc')
-rw-r--r-- | modules/user/user.admin.inc | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/modules/user/user.admin.inc b/modules/user/user.admin.inc index b7f3ff4a1..1ec1221b2 100644 --- a/modules/user/user.admin.inc +++ b/modules/user/user.admin.inc @@ -938,3 +938,41 @@ function theme_user_filters($form) { return $output; } + +/** + * Implementation of hook_modules_installed(). + */ +function user_modules_installed($modules) { + // Assign all available permissions to the administrator role. + $rid = variable_get('user_admin_role', 0); + if ($rid) { + foreach ($modules as $module) { + if ($permissions = module_invoke($module, 'permission')) { + foreach (array_keys($permissions) as $permission) { + db_insert('role_permission') + ->fields(array( + 'rid' => $rid, + 'permission' => $permission, + ))->execute(); + } + } + } + } +} + +/** + * Implement hook_modules_uninstalled(). + */ +function user_modules_uninstalled($modules) { + $permissions = array(); + foreach ($modules as $module) { + if (drupal_function_exists($module . '_permission')) { + $permissions = array_merge($permissions, array_keys(module_invoke($module, 'permission'))); + } + } + if (!empty($permissions)) { + db_delete('role_permission') + ->condition('permission', $permissions, 'IN') + ->execute(); + } +} |