You are here

function workbench_scheduler_save_node_schedule in Workbench Scheduler 7

Same name and namespace in other branches
  1. 7.2 workbench_scheduler.module \workbench_scheduler_save_node_schedule()

Saves the schedule data for a given node revision.

Parameters

int $nid: The node id.

int $vid: The node revision id.

array $schedule_data: Array of schedule data to set/update.

Return value

bool Boolean TRUE/TRUE on success of query.

4 calls to workbench_scheduler_save_node_schedule()
workbench_scheduler_admin_edit_revision_schedule_submit in ./workbench_scheduler.admin.inc
Submit function for editing the schedule applied to a node's revision.
workbench_scheduler_node_form_submit in ./workbench_scheduler.module
Submit function for editing a scheduled node.
workbench_scheduler_node_insert in ./workbench_scheduler.module
Implements hook_node_insert().
workbench_scheduler_node_update in ./workbench_scheduler.module
Implements hook_node_update().

File

./workbench_scheduler.module, line 736
Content scheduling for Workbench.

Code

function workbench_scheduler_save_node_schedule($nid, $vid, $schedule_data) {

  // Need to have the sid and start date  or end date data.
  if (isset($schedule_data['sid']) && ($schedule_data['sid'] == 0 || $schedule_data['start_date'] || $schedule_data['end_date'])) {
    if ($schedule_data['sid'] != 0) {

      // Run a merge query to insert or update the row.
      $merge = db_merge('workbench_scheduler_nodes')
        ->key(array(
        'nid' => $nid,
        'vid' => $vid,
      ))
        ->fields(array(
        'sid' => $schedule_data['sid'],
        // Start date if it was passed.
        'start_date' => $schedule_data['start_date'] ? $schedule_data['start_date'] : 0,
        // End if it was passed.
        'end_date' => $schedule_data['end_date'] ? $schedule_data['end_date'] : 0,
      ))
        ->execute();

      // Was the merge successful?
      if ($merge) {

        // Apply update hooks.
        module_invoke_all('workbench_scheduler_post_save_node_schedule', $nid, $vid, $schedule_data);
        return TRUE;
      }
    }
    elseif ($schedule_data['sid'] == 0) {

      // Make sure the this revision has no schedule.
      workbench_scheduler_delete_node_schedule($nid, $vid);

      // Schedule_data removed.
      return TRUE;
    }
  }

  // Return boolean false if missing fields or failed query.
  return FALSE;
}