function _role_delegation_add_roles_to_form in Role Delegation 7
Helper function to create the role options.
2 calls to _role_delegation_add_roles_to_form()
- role_delegation_form_alter in ./
role_delegation.module - Implements hook_form_alter().
- role_delegation_roles_form in ./
role_delegation.module - Provides a form for assigning roles to the current user.
File
- ./
role_delegation.module, line 71 - This module allows site administrators to grant some roles the authority to change roles assigned to users, without them needing the 'administer access control' permission.
Code
function _role_delegation_add_roles_to_form(&$form, $account) {
$roles_current = $account->roles;
$roles_delegate = array();
$roles = _role_delegation_roles();
foreach ($roles as $rid => $role) {
if (user_access('assign all roles') || user_access("assign {$role} role")) {
$roles_delegate[$rid] = isset($form['account']['roles']['#options'][$rid]) ? $form['account']['roles']['#options'][$rid] : $role;
}
}
if (empty($roles_delegate)) {
// No role can be assigned.
return;
}
if (!isset($form['account'])) {
$form['account'] = array(
'#type' => 'value',
'#value' => $account,
);
}
// Generate the form items.
$form['account']['roles_change'] = array(
'#type' => 'checkboxes',
'#title' => isset($form['account']['roles']['#title']) ? $form['account']['roles']['#title'] : t('Roles'),
'#options' => $roles_delegate,
'#default_value' => array_keys(array_intersect_key($roles_current, $roles_delegate)),
'#description' => isset($form['account']['roles']['#description']) ? $form['account']['roles']['#description'] : t('Change roles assigned to user.'),
);
}