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);
}
}