function context_node_nodeapi in Context Node 6
Implements hook_nodeapi()
File
- ./
context_node.module, line 143
Code
function context_node_nodeapi(&$node, $op, $teaser, $page) {
// Check if this content type is enabled to use 'context node'
$option = variable_get("context_node_default_" . $node->type, '');
if ($option == "none" || empty($option)) {
return;
}
switch ($op) {
case 'load':
$node->context = db_result(db_query('SELECT context FROM {context_node} WHERE vid = %d', $node->vid));
return $node->context;
break;
case 'insert':
db_query("INSERT INTO {context_node} (nid, vid, context) VALUES (%d, %d, '%s')", $node->nid, $node->vid, $node->context);
break;
case 'update':
// Check for a new revision
if ($node->revision) {
db_query("INSERT INTO {context_node} (nid, vid, context) VALUES (%d, %d, '%s')", $node->nid, $node->vid, $node->context);
}
elseif (_context_node_check_for_context($node)) {
db_query("UPDATE {context_node} SET context = '%s' WHERE vid = %d", $node->context, $node->vid);
}
else {
db_query("INSERT INTO {context_node} (nid, vid, context) VALUES (%d, %d, '%s')", $node->nid, $node->vid, $node->context);
}
break;
case 'delete':
db_query('DELETE FROM {context_node} WHERE nid = %d', $node->nid);
break;
case 'delete revision':
// Notice that we're matching a single revision based on the node's vid.
db_query('DELETE FROM {node_example} WHERE vid = %d', $node->vid);
break;
case 'view':
// Get the context in $node->context
$name = $node->context;
if ($name == "none" || empty($name) || $name == "default") {
return;
}
// Load the context
$context = context_load($name);
// Set the context
context_set('context', "context_node", $context);
break;
}
}