function filter_perms_admin_perm_filter in Filter Permissions 7
Same name and namespace in other branches
- 6 filter_perms.module \filter_perms_admin_perm_filter()
Form providing a multiple select for roles and modules for filtering permissions.
1 string reference to 'filter_perms_admin_perm_filter'
- filter_perms_admin_perm in ./
filter_perms.module - Page callback which appends a filter form to the standard user_admin_permissions form.
File
- ./
filter_perms.module, line 138
Code
function filter_perms_admin_perm_filter() {
// @todo: Move this handling to a more appropriate place prior to drupal_goto().
$url_parts = explode('/', request_uri());
$url_last = $url_parts[count($url_parts) - 1];
if (is_numeric($url_last)) {
// Role Ids will come from role page referral.
$_SESSION['filter_perm_roles'] = array(
$url_last => $url_last,
);
// Show selected role for all modules.
foreach (module_list(FALSE, FALSE, TRUE) as $module) {
if (module_invoke($module, 'permission')) {
$_SESSION['filter_perm_modules'][$module] = $module;
}
}
}
elseif (strstr($url_last, 'module-')) {
// module- prefix indicates module page referral.
$single_module = str_replace('module-', '', $url_last);
$_SESSION['filter_perm_modules'] = array(
$single_module => $single_module,
);
// Show all roles for selected module.
$user_roles = user_roles();
foreach ($user_roles as $user_role_key => $user_role) {
$_SESSION['filter_perm_roles'][$user_role_key] = $user_role_key;
}
}
if ($url_last != 'permissions' && strpos($url_last, 'permissions?') === FALSE) {
drupal_goto('admin/people/permissions');
}
$form['filters'] = array(
'#type' => 'fieldset',
'#title' => t('Permission Filters'),
'#collapsible' => TRUE,
'#collapsed' => FALSE,
);
$role_options = user_roles();
// Displays all user roles.
$form['filters']['roles'] = array(
'#title' => t('Roles to display'),
'#type' => 'select',
'#options' => array(
'-1' => '--All Roles',
) + $role_options,
'#default_value' => isset($_SESSION['filter_perm_roles']) ? $_SESSION['filter_perm_roles'] : '',
'#size' => 8,
'#multiple' => TRUE,
);
$module_options = array();
// TRUE for the 3rd parameter forces name sorting instead of by module weight.
foreach (module_list(FALSE, FALSE, TRUE) as $module) {
if (module_invoke($module, 'permission')) {
$module_options[$module] = $module;
}
}
// Displays all modules which implement hook_permission().
$form['filters']['modules'] = array(
'#title' => t('Modules to display'),
'#type' => 'select',
'#options' => array(
'-1' => '--All Modules',
) + $module_options,
'#default_value' => isset($_SESSION['filter_perm_modules']) ? $_SESSION['filter_perm_modules'] : '',
'#size' => 8,
'#multiple' => TRUE,
);
$form['filters']['submit'] = array(
'#type' => 'submit',
'#value' => t('Filter Permissions'),
);
return $form;
}