user_admin_role
- Versions
- 4.6 – 7
user_admin_role()
Menu callback: administer roles.
Code
modules/user.module, line 1569
<?php
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);
}
?>Login or register to post comments 