| Versions | |
|---|---|
| 4.7 – 6 | node_access_example_nodeapi(&$node, $op, $arg = 0) |
Implementation of hook_nodeapi().
Most of a node access module's work will be done via this hook. Several values of $op will require responses:
developer/
<?php
function node_access_example_nodeapi(&$node, $op, $arg = 0) {
switch ($op) {
case 'delete':
// When a node is deleted, delete any relevant grants.
db_query('DELETE FROM {node_access} WHERE nid = %d AND realm = \'example\'', $node->nid);
break;
case 'insert':
case 'update':
// Clear out any existing grants for the node, and set new ones.
db_query('DELETE FROM {node_access} WHERE nid = %d AND realm = \'example\'', $node->nid);
$node->access_example = isset($node->access_example) ? $node->access_example : 0;
if ($node->access_example == 0) {
// If the node is public, we need to grant access to everyone.
db_query('INSERT INTO {node_access} (nid, gid, realm, grant_view, grant_update, grant_delete) VALUES (%d, %d, \'example\', %d, %d, %d)', $node->nid, 0, 1, 0, 0);
}
break;
}
}
?>