You are here

function datereminder_nodeapi in Date Reminder 6

Same name and namespace in other branches
  1. 6.2 datereminder.module \datereminder_nodeapi()
  2. 7 datereminder.module \datereminder_nodeapi()

Implements hook_nodeapi().

Parameters

node &$node: The node in question

string $op: What are we doing to the node?

boolean $teaser: Set if we're working with teaser.

boolean $page: Set if we're working with page.

File

./datereminder.module, line 128
Support for reminders for nodes with dates.

Code

function datereminder_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
  module_load_include('inc', 'datereminder', 'includes/defines');
  $ret = array();

  // Are reminders enabled for this node type?
  $enabled = _datereminder_type_enabled($node->type);
  switch ($op) {
    case 'delete':

      // Clean up anything for this node, even if we don't think the node type
      // or node has any reminders.
      _datereminder_clean_node_reminders($node->nid);
      break;
    case 'load':

      // Return array of items to add to node.
      if ($enabled >= DATEREMINDER_TYPE_ALLOWED) {
        $dflt = $enabled == DATEREMINDER_TYPE_ON ? DATEREMINDER_TYPE_ON : DATEREMINDER_TYPE_DISABLED;
        $enabled = _datereminder_get_node_enabled($node->nid, $dflt);
        $ret = array(
          'datereminder_enabled' => $enabled,
        );
        $node->datereminder_enabled = $enabled;

        // We'll defer loading the actual reminders until we need them.
      }
      return $ret;
    case 'view':
      if ($page && $enabled >= DATEREMINDER_TYPE_ALLOWED && !variable_get('datereminder_as_tab', FALSE)) {
        $content = _datereminder_node_output($node, 'node');
        $node->content['reminder'] = array(
          '#value' => $content,
          '#weight' => 50,
        );
      }
      break;
    case 'insert':

      // Node was just inserted into the database.
      if ($enabled >= DATEREMINDER_TYPE_ALLOWED) {
        $enabled = $node->datereminder_enabled;
        _datereminder_set_node_enabled($node, $enabled);
      }
      break;
    case 'update':

      // Node has been edited. Writing back now.
      if ($enabled >= DATEREMINDER_TYPE_ALLOWED) {
        _datereminder_update_node_reminders($node);
      }
      break;
  }
}