summaryrefslogtreecommitdiff
path: root/modules/user/user.admin.inc
diff options
context:
space:
mode:
Diffstat (limited to 'modules/user/user.admin.inc')
-rw-r--r--modules/user/user.admin.inc38
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();
+ }
+}