function notifications_content_nodeapi in Notifications 6
Same name and namespace in other branches
- 5 notifications_content/notifications_content.module \notifications_content_nodeapi()
- 6.4 notifications_content/notifications_content.module \notifications_content_nodeapi()
- 6.2 notifications_content/notifications_content.module \notifications_content_nodeapi()
- 6.3 notifications_content/notifications_content.module \notifications_content_nodeapi()
Implementation of hook_nodeapi()
File
- notifications_content/
notifications_content.module, line 622 - Subscriptions to content events
Code
function notifications_content_nodeapi(&$node, $op, $arg = 0) {
global $user;
switch ($op) {
case 'load':
// Store current status for later reference
$node->old_status = $node->status;
break;
case 'update':
case 'insert':
// Notifications just for published nodes. If we don't have any option enabled for this content type, skip the event
if ($node->status && empty($node->notifications_content_disable) && notifications_content_type_enabled($node->type)) {
$event = array(
'module' => 'node',
'uid' => $node->uid,
'oid' => $node->nid,
'type' => 'node',
'action' => $op,
'node' => $node,
'params' => array(
'nid' => $node->nid,
),
);
if ($op == 'update') {
// If the node has been published the 'update' will become a 'insert' (first post)
if (!isset($node->old_status)) {
// We try to find out previous status with the cached node.
$oldnode = node_load($node->nid);
$node->old_status = $oldnode->status;
}
if (!$node->old_status) {
$event['action'] = 'insert';
}
// If immediate sending is active, need to reset the node cache so we don't send old versions of the node
if (variable_get('notifications_send_immediate', 0)) {
node_load(0, NULL, TRUE);
}
}
notifications_event($event);
}
break;
case 'delete':
// Remove all subscriptions for this node
notifications_delete_subscriptions(array(
'event_type' => 'node',
), array(
'nid' => $node->nid,
), FALSE);
}
}