node.inc in Date Reminder 6.2
Same filename and directory in other branches
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.incView 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
Name![]() |
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. |