1.20.x user.admin.inc | user_admin_permissions($form, $form_state, $role_name = NULL) |
Menu callback: administer permissions.
See also
user_admin_permissions_submit()
theme_user_admin_permissions()
Related topics
File
- modules/
user/ user.admin.inc, line 405 - Admin page callbacks for the User module.
Code
function user_admin_permissions($form, $form_state, $role_name = NULL) {
// Retrieve role names for columns.
$roles = user_roles(FALSE, NULL, TRUE);
if (isset($roles[$role_name])) {
$roles = array($role_name => $roles[$role_name]);
}
$form['roles'] = array(
'#type' => 'value',
'#value' => $roles,
);
// Render role/permission overview:
$options = array();
$module_info = system_get_info('module');
// Get a list of all the modules implementing a hook_permission() and sort by
// display name.
$modules = array();
foreach (module_implements('permission') as $module) {
$modules[$module] = $module_info[$module]['name'];
}
asort($modules);
foreach ($modules as $module => $display_name) {
if ($permissions = module_invoke($module, 'permission')) {
$form['permission'][] = array(
'#markup' => $module_info[$module]['name'],
'#id' => $module,
);
foreach ($permissions as $perm => $perm_item) {
// Fill in default values for the permission.
$perm_item += array(
'description' => '',
'restrict access' => FALSE,
'warning' => !empty($perm_item['restrict access']) ? t('Warning: Give to trusted roles only; this permission has security implications.') : '',
);
$options[$perm] = '';
$form['permission'][$perm] = array(
'#type' => 'item',
'#markup' => $perm_item['title'],
'#description' => theme('user_permission_description', array('permission_item' => $perm_item)),
);
foreach ($roles as $role_name => $role) {
// Builds arrays for checked boxes for each role
if (in_array($perm, $role->permissions)) {
$status[$role_name][] = $perm;
}
}
}
}
}
// Have to build checkboxes here after checkbox arrays are built
foreach ($roles as $role_name => $role) {
$form['checkboxes'][$role_name] = array(
'#type' => 'checkboxes',
'#options' => $options,
'#default_value' => isset($status[$role_name]) ? $status[$role_name] : array(),
'#attributes' => array('class' => array('role-' . $role_name)),
);
$form['role_names'][$role_name] = array(
'#markup' => check_plain($role->label),
'#tree' => TRUE,
);
}
$form['actions'] = array('#type' => 'actions');
$form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Save permissions'));
$form['#attached']['js'][] = backdrop_get_path('module', 'user') . '/js/user.permissions.js';
return $form;
}