function role_delegation_form_user_admin_role_submit in Role Delegation 6
Same name and namespace in other branches
- 7 role_delegation.module \role_delegation_form_user_admin_role_submit()
Submit function for the user_admin_role form: When a role is renamed or deleted, rename or delete the permission to assign that role.
1 string reference to 'role_delegation_form_user_admin_role_submit'
- role_delegation_form_user_admin_role_alter in ./
role_delegation.module - Implementation of hook_form_FORM_ID_alter() for user_admin_role().
File
- ./
role_delegation.module, line 173 - This module allows site administrators to grant some roles the authority to assign selected roles to users, without them needing the 'administer access control' permission.
Code
function role_delegation_form_user_admin_role_submit($form, $form_state) {
$op = $form_state['values']['op'];
if ($op != t('Save role') && $op != t('Delete role')) {
return;
}
$oldrole = $form['name']['#default_value'];
$newrole = $form_state['values']['name'];
if ($op == t('Save role') && $oldrole == $newrole) {
return;
}
// Role is being renamed or deleted.
// Loop through permission lists for all roles, renaming or deleting the
// 'assign' permission for this role.
$oldperm = _role_delegation_make_perm($oldrole);
$result = db_query('SELECT * FROM {permission}');
while ($row = db_fetch_object($result)) {
$perms = explode(', ', $row->perm);
for ($i = 0; $i < count($perms); ++$i) {
if ($perms[$i] == $oldperm) {
switch ($op) {
case t('Save role'):
$perms[$i] = _role_delegation_make_perm($newrole);
break;
case t('Delete role'):
unset($perms[$i]);
break;
}
if (count($perms)) {
db_query("UPDATE {permission} SET perm = '%s' WHERE pid = %d", implode(', ', $perms), $row->pid);
}
else {
db_query("DELETE FROM {permission} WHERE pid = %d", $row->pid);
}
break;
}
}
}
}