Same name and namespace in other branches
- 4.7.x modules/user.module \user_admin_role()
- 5.x modules/user/user.module \user_admin_role()
- 6.x modules/user/user.admin.inc \user_admin_role()
- 7.x modules/user/user.admin.inc \user_admin_role()
Menu callback: administer roles.
1 string reference to 'user_admin_role'
- user_menu in modules/
user.module - Implementation of hook_menu().
File
- modules/
user.module, line 1569 - Enables the user registration and login system.
Code
function user_admin_role() {
$edit = $_POST['edit'];
$op = $_POST['op'];
$id = arg(4);
if ($op == t('Save role')) {
if ($edit['name']) {
db_query("UPDATE {role} SET name = '%s' WHERE rid = %d", $edit['name'], $id);
drupal_set_message(t('The changes have been saved.'));
}
else {
form_set_error('name', t('You must specify a valid role name.'));
}
}
else {
if ($op == t('Delete role')) {
db_query('DELETE FROM {role} WHERE rid = %d', $id);
db_query('DELETE FROM {permission} WHERE rid = %d', $id);
// Update the users who have this role set:
$result = db_query('SELECT DISTINCT(ur1.uid) FROM {users_roles} ur1 LEFT JOIN {users_roles} ur2 ON ur2.uid = ur1.uid WHERE ur1.rid = %d AND ur2.rid != ur1.rid', $id);
$uid = array();
while ($u = db_fetch_object($result)) {
$uid[] = $u->uid;
}
if ($uid) {
db_query('DELETE FROM {users_roles} WHERE rid = %d AND uid IN (%s)', $id, implode(', ', $uid));
}
// Users with only the deleted role are put back in the authenticated users pool.
db_query('UPDATE {users_roles} SET rid = %d WHERE rid = %d', _user_authenticated_id(), $id);
drupal_set_message(t('The role has been deleted.'));
drupal_goto('admin/access/roles');
}
else {
if ($op == t('Add role')) {
if ($edit['name']) {
db_query("INSERT INTO {role} (name) VALUES ('%s')", $edit['name']);
drupal_set_message(t('The role has been added.'));
drupal_goto('admin/access/roles');
}
else {
form_set_error('name', t('You must specify a valid role name.'));
}
}
else {
if ($id) {
// Display the role form.
$role = db_fetch_object(db_query('SELECT * FROM {role} WHERE rid = %d', $id));
$output .= form_textfield(t('Role name'), 'name', $role->name, 32, 64, t('The name for this role. Example: "moderator", "editorial board", "site architect".'));
$output .= form_submit(t('Save role'));
$output .= form_submit(t('Delete role'));
$output = form($output);
}
}
}
}
if (!$output) {
// Render the role overview.
$result = db_query('SELECT * FROM {role} ORDER BY name');
$header = array(
t('Name'),
t('Operations'),
);
while ($role = db_fetch_object($result)) {
if ($role->name != 'anonymous user' && $role->name != 'authenticated user') {
$rows[] = array(
$role->name,
l(t('edit'), 'admin/access/roles/edit/' . $role->rid),
);
}
else {
$rows[] = array(
$role->name,
'<span class="disabled">' . t('locked') . '</span>',
);
}
}
$rows[] = array(
'<input type="text" size="32" maxlength="64" name="edit[name]" />',
'<input type="submit" name="op" value="' . t('Add role') . '" />',
);
$output = theme('table', $header, $rows);
$output = form($output);
}
print theme('page', $output);
}