You are here

function subpermissions_config_form in Permissions subset 7

Subpermissions settings form

1 string reference to 'subpermissions_config_form'
subpermissions_menu in ./subpermissions.module
Implementation of hook_menu

File

./subpermissions.admin.inc, line 167

Code

function subpermissions_config_form($form, $form_state) {
  $role_names = array(
    0 => "Add to Permissions subset",
  );

  // Store $role_names for use when saving the data.
  $form['role_names'] = array(
    '#type' => 'value',
    '#value' => $role_names,
  );

  // Render role/permission overview:
  $options = array();
  $module_info = system_get_info('module');
  $hide_descriptions = system_admin_compact_mode();

  // 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,
      );
      $set_a_permission = FALSE;
      foreach ($permissions as $perm => $perm_item) {

        // Fill in default values for the permission.
        $perm_item += array(
          'description' => '',
          'restrict access' => FALSE,
        );
        if ($perm_item['restrict access']) {
          continue;
        }
        $set_a_permission = TRUE;
        $options[$perm] = '';
        $form['permission'][$perm] = array(
          '#type' => 'item',
          '#markup' => $perm_item['title'],
          '#description' => theme('user_permission_description', array(
            'permission_item' => $perm_item,
            'hide' => $hide_descriptions,
          )),
        );
      }
      if (!$set_a_permission) {

        // There are no alterable permissions for this module, we should unset
        // the markup
        array_pop($form['permission']);
      }
    }
  }

  // Have to build checkboxes here after checkbox arrays are built
  $form['checkboxes'][0] = array(
    '#type' => 'checkboxes',
    '#options' => $options,
    '#default_value' => variable_get('subpermissions_config', array()),
  );
  $form['role_names'][0] = array(
    '#markup' => $role_names[0],
    '#tree' => TRUE,
  );
  $form['actions'] = array(
    '#type' => 'actions',
  );
  $form['actions']['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Save permissions'),
  );
  $form['#attached']['js'][] = drupal_get_path('module', 'user') . '/user.permissions.js';
  return $form;
}