You are here

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