'. t('This module automatically manages the administrator role.') .'

'; } return $output; } /** * Implementation of hook_menu(). */ function adminrole_menu() { $items['admin/user/adminrole'] = array( 'title' => t('Administrator Role'), 'description' => 'Change which role is the (full access) administrator role.', 'page callback' => 'drupal_get_form', 'page arguments' => array('adminrole_admin_settings'), 'access callback' => 'user_access', 'access argument' => array('administer permissions'), 'type' => MENU_NORMAL_ITEM ); return $items; } /** * Implementation of hook_enable(). */ function adminrole_enable() { $admin_role = variable_get('adminrole_adminrole', 0); if ($admin_role == 0) { $role = db_fetch_object(db_query("SELECT rid FROM {role} WHERE name = 'admin' OR name = 'administrator'")); if (is_object($role)) { $admin_role = $role->rid; } variable_set('adminrole_adminrole', $admin_role); } adminrole_update_perms(); } /** * Grant full access for administrators. */ function adminrole_update_perms() { $admin_role = variable_get('adminrole_adminrole', 0); if ($admin_role == 0) { return; } $perms = array(); foreach (module_list(FALSE, FALSE, TRUE) as $module) { if ($permissions = module_invoke($module, 'perm')) { $perms = array_merge($perms, $permissions); } } db_query('DELETE FROM {permission} WHERE rid = %d', $admin_role); if (count($perms)) { db_query("INSERT INTO {permission} (rid, perm) VALUES (%d, '%s')", $admin_role, implode(', ', $perms)); } drupal_set_message(t('Granted full access for administrator role.')); } /** * Admin role selection form. */ function adminrole_admin_settings() { $form = array(); $user_roles = user_roles(); unset($user_roles[DRUPAL_AUTHENTICATED_RID]); unset($user_roles[DRUPAL_ANONYMOUS_RID]); ksort($user_roles); $form['adminrole_adminrole'] = array( '#type' => 'select', '#default_value' => variable_get('adminrole_adminrole', 0), '#description' => t('Select the administrator role.'), '#options' => array_merge(array(0 => t('none')), $user_roles), ); $form['submit'] = array( '#type' => 'submit', '#value' => t('Save'), ); return $form; } /** * Admin role settings submit. */ function adminrole_admin_settings_submit($form, &$form_state) { $settings = array(); $admin_role = $form_state['values']['adminrole_adminrole']; variable_set('adminrole_adminrole', $admin_role); drupal_set_message('Administrator role changed.'); adminrole_update_perms(); } /** * Update admin permission when modules are enabled/disabled. */ function adminrole_form_alter(&$form, $form_state, $form_id) { if ($form_id == 'system_modules') { $form['#submit'][] = 'adminrole_update_perms'; } }