You are here

node.inc in Date Reminder 6.2

Same filename and directory in other branches
  1. 7 includes/node.inc

Support for node operations for Date Reminder. These are all administrative operations (insert, update, delete). The common view operations are in datereminder.module.

These are D7-format functions. They'll be called directly from core in D7. They're called from datereminder_node_api() in D6.

File

includes/node.inc
View source
<?php

/**
 * @file
 * Support for node operations for Date Reminder. These are all administrative
 * operations (insert, update, delete). The common view operations are in
 * datereminder.module.
 *
 * These are D7-format functions. They'll be called directly from core
 * in D7. They're called from datereminder_node_api() in D6.
 */

/**
 * Implements hook_node_insert().
 *
 * Set default enabled for the node.
 *
 * @param node $node
 *   The node being added.
 */
function datereminder_node_insert($node) {
  module_load_include('inc', 'datereminder', 'includes/defines');
  module_load_include('inc', 'datereminder', DATEREMINDER_DB);
  $enabled = _datereminder_type_enabled($node->type);
  if ($enabled >= DATEREMINDER_TYPE_ALLOWED) {

    // This will return the appropriate "enabledness,", but also set
    // node enabled in the database. But this really shouldn't be necessary.
    // {datereminder_enabled} should have been set on node form submit.
    $en = _datereminder_get_node_enabled($node);
    if ($en == NULL) {

      // Need to get default from type.
      $en = $enabled == DATEREMINDER_TYPE_ON ? DATEREMINDER_TYPE_ON : DATEREMINDER_TYPE_DISABLED;
      _datereminder_set_node_enabled($node, $en);
    }
    $node->datereminder_enabled = $en;
  }
}

/**
 * Implements hook_node_update().
 *
 * Update any reminders that might have changed when the node
 * (its date, in particular) changed.
 *
 * @param node $node
 *   The node being updated.
 */
function datereminder_node_update($node) {
  module_load_include('inc', 'datereminder', 'includes/defines');
  $enabled = _datereminder_type_enabled($node->type);
  if ($enabled >= DATEREMINDER_TYPE_ALLOWED) {
    _datereminder_update_node_reminders($node);
  }
}

/**
 * Implements hook_node_delete().
 *
 * Called just before a node is deleted.
 *
 * @param node $node
 *   The node to be deleted.
 *
 * @todo Delete node enabled.
 */
function datereminder_node_delete($node) {
  module_load_include('inc', 'datereminder', 'includes/defines');
  module_load_include('inc', 'datereminder', DATEREMINDER_DB);

  // This will clear the enable flag for the node, plus clean out any
  // existing reminders.
  _datereminder_set_node_enabled($node);
}

/**
 * Update all reminders for a node if the node is updated.
 *
 * @param node $node
 *   Node that's being written back.
 */
function _datereminder_update_node_reminders($node) {
  module_load_include('inc', 'datereminder', 'includes/defines');
  module_load_include('inc', 'datereminder', DATEREMINDER_DB);
  $rems = _datereminder_load_reminders(array(
    'nid' => $node->nid,
  ), $node);
  _datereminder_update_reminder_nexts($rems);
}

/**
 * Recompute "next" time and write back a group of reminders.
 *
 * This might be reminders associated with a node when the node changes,
 * or a set of reminders whose time has expired and we need to move on
 * to the next occurance.
 *
 * Note that reminders that are past last occurance of this node
 * will be deleted.
 *
 * @param array $rems
 *   list of reminders
 */
function _datereminder_update_reminder_nexts($rems) {
  module_load_include('inc', 'datereminder', 'includes/date');
  module_load_include('inc', 'datereminder', 'includes/defines');
  module_load_include('inc', 'datereminder', DATEREMINDER_DB);
  foreach ($rems as $r) {
    _datereminder_complete_reminder($r);
    _datereminder_get_next_reminder($r);
  }
  _datereminder_set_reminders($rems);
}

Functions

Namesort descending Description
datereminder_node_delete Implements hook_node_delete().
datereminder_node_insert Implements hook_node_insert().
datereminder_node_update Implements hook_node_update().
_datereminder_update_node_reminders Update all reminders for a node if the node is updated.
_datereminder_update_reminder_nexts Recompute "next" time and write back a group of reminders.