You are here

function vppn_form_node_form_alter in View Permission Per Node 7

Implements hook_form_BASE_FORM_ID_alter().

File

./vppn.module, line 54
Configuration for VPPN.

Code

function vppn_form_node_form_alter(&$form) {

  // Make sure it's a valid type.
  if (empty($form['type']['#value']) || !variable_get('vppn_node_' . $form['type']['#value'], 0)) {

    // Not a VPPN form.
    return;
  }

  // VPPN vertical tab settings.
  $form['vppn'] = array(
    '#type' => 'fieldset',
    '#access' => user_access('use vppn'),
    '#title' => t('View Access'),
    '#collapsible' => TRUE,
    '#collapsed' => TRUE,
    // Make it a vtab.
    '#group' => 'additional_settings',
    '#attributes' => array(
      'class' => array(
        'node-form-vppn',
      ),
    ),
    // Put just below publishing options et al.
    '#weight' => !empty($form['options']['#weight']) ? $form['options']['#weight'] + 1 : 96,
  );

  // Add a description.
  $form['vppn']['description'] = array(
    // Consistent spacing is nice.
    '#prefix' => '<div class="form-item">',
    '#suffix' => '</div>',
    '#markup' => t('Select which roles can view this node.  Select none for default.'),
  );

  // Get the default roles.
  $default_roles = _vppn_get_node_defaults($form['#node']);
  $default_roles = $default_roles ? $default_roles : array();

  // Role checkboxes.
  $form['vppn']['vppn_roles'] = array(
    '#type' => 'checkboxes',
    '#title' => t('Select roles'),
    '#title_display' => 'invisible',
    '#options' => array(),
    '#default_value' => $default_roles,
  );

  // Get all user roles.
  $user_roles = user_roles();

  // Get users that can bypass access control (skip anon - that would be weird).
  $user_roles_bypass = user_roles(TRUE, 'bypass node access');

  // Remove the users that can bypass access control.
  $user_roles = array_diff_key($user_roles, $user_roles_bypass);

  // Each non-bypass role.
  foreach ($user_roles as $role_id => $role_name) {
    $form['vppn']['vppn_roles']['#options'][$role_id] = $role_name;
  }

  // Add submission handler.
  $form['actions']['submit']['#submit'][] = 'vppn_node_form_submit';
}