You are here

function filter_perms_admin_perm_filter in Filter Permissions 6

Same name and namespace in other branches
  1. 7 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_perm form.

File

./filter_perms.module, line 29
This module adds a role and module filter to the user permissions page. Best used when you have an unruly amount of roles or permissions on your site and want to more efficiently manage them without loading a gigantic grid of checkboxes.

Code

function filter_perms_admin_perm_filter() {
  $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();
  foreach (module_list(FALSE, FALSE, TRUE) as $module) {
    if ($module == 'content_permissions') {
      $module_options[$module] = $module . ' (' . t('or select individual content types below') . ')';
      $content_types = node_get_types('types');
      foreach ($content_types as $content_type) {
        $content_type_info = content_types($content_type->type);

        // Only show content types with fields.
        if (count($content_type_info['fields'])) {
          $module_options['content_permissions_' . $content_type->type] = '- ' . $content_type->name;
        }
      }
    }
    elseif (module_invoke($module, 'perm')) {
      $module_options[$module] = $module;
    }
  }

  // Displays all modules which implement hook_perm().
  $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;
}