function revisioning_scheduler_node_presave in Revisioning 8
Same name and namespace in other branches
- 7 revisioning_scheduler/revisioning_scheduler.module \revisioning_scheduler_node_presave()
Implements hook_node_presave().
Called when saving, be it an edit or when creating a node.
Picks up the value for the scheduled publication date (if entered) and decides whether the node should be published immediately or scheduled for a later date.
File
- revisioning_scheduler/
revisioning_scheduler.module, line 257 - Allows revisions to be published at specified dates and times.
Code
function revisioning_scheduler_node_presave($node) {
if (!isset($node->nid)) {
// This may happen when importing files using Feeds module.
return;
}
if (empty($node->revision_moderation) || !empty($node->auto_publish)) {
_revisioning_scheduler_unschedule_all_revisions($node->nid);
}
elseif (!empty($node->publication_date)) {
$datetime = explode(' ', trim($node->publication_date));
$date = $datetime[0];
$time = isset($datetime[1]) ? $datetime[1] : '00:00';
$node->publication_date = "{$date} {$time}";
$scheduled_time = strtotime($node->publication_date);
if ($date == 'now' || $scheduled_time > time() - REVISIONING_SCHEDULER_SLACK && $scheduled_time <= time()) {
// Publish immediately without scheduling.
// Follow the default saving process making this revision current and
// published, as opposed to pending.
unset($node->revision_moderation);
$node->status = NODE_PUBLISHED;
_revisioning_scheduler_unschedule_all_revisions($node->nid);
}
else {
// Schedule publication date.
return;
}
}
// Publication date does not apply in this situation.
unset($node->publication_date);
}