You are here

function ack_node_form_node_form_alter in Access Control Kit 7

Implements hook_form_BASE_FORM_ID_alter().

Alters the node form to filter the options on ACK-related elements.

File

ack_node/ack_node.module, line 121
The ACK node module.

Code

function ack_node_form_node_form_alter(&$form, &$form_state, $form_id) {
  global $user;

  // Don't filter anything if the user can bypass access controls.
  if (user_access('bypass node access')) {
    return;
  }
  $node = $form_state['node'];
  $schemes = access_object_schemes('node');

  // Only filter the create form if the user lacks global create permission.
  if (empty($node->nid) && !user_access('create ' . $node->type . ' content')) {

    // Get the list of realms in which the user can create this type of node.
    $realms = access_user_permission_realms('ack create ' . $node->type . ' content', $user, $schemes);
    _ack_node_form_node_form_alter($form, $form_state, $form_id, $schemes, $realms);
  }
  elseif (!empty($node->nid) && !(user_access('edit any ' . $node->type . ' content') || user_access('edit own ' . $node->type . ' content') && $user->uid == $node->uid)) {
    _ack_node_form_node_form_alter($form, $form_state, $form_id, $schemes);
  }
}