You are here

function workbench_scheduler_admin_edit_revision_schedule in Workbench Scheduler 7

Same name and namespace in other branches
  1. 7.2 workbench_scheduler.admin.inc \workbench_scheduler_admin_edit_revision_schedule()

Form to edit the schedule for an existing node revision.

1 string reference to 'workbench_scheduler_admin_edit_revision_schedule'
workbench_scheduler_menu in ./workbench_scheduler.module
Implements hook_menu().

File

./workbench_scheduler.admin.inc, line 479
Provides admin functions for Workbench Scheduler.

Code

function workbench_scheduler_admin_edit_revision_schedule($form, &$form_state, $node, $vid) {
  $form['nid'] = array(
    '#type' => 'hidden',
    '#value' => $node->nid,
  );
  $form['vid'] = array(
    '#type' => 'hidden',
    '#value' => $vid,
  );
  $type_schedules = workbench_scheduler_load_type_schedules($node->type);
  $schedule_options = array();
  $schedule_options[] = array(
    'label' => t('No Schedule'),
    'start_state' => '',
    'end_state' => '',
  );
  $moderation_states = workbench_scheduler_state_labels();

  // Add each type schedule to the options array.
  foreach ($type_schedules as $schedule) {
    if (user_access('set any workbench schedule') || user_access('set workbench schedule for ' . $schedule->name)) {
      $schedule_options[$schedule->sid] = array(
        'label' => $schedule->label,
        'start_state' => isset($moderation_states[$schedule->start_state]) ? $moderation_states[$schedule->start_state] : '',
        'end_state' => isset($moderation_states[$schedule->end_state]) ? $moderation_states[$schedule->end_state] : '',
      );
    }
  }
  $form['workbench_scheduler_sid'] = array(
    '#type' => 'tableselect',
    '#title' => t('Select Schedule'),
    '#description' => t('Select the schedule to use for this node.'),
    '#options' => $schedule_options,
    '#multiple' => FALSE,
    '#header' => array(
      'label' => t('Name'),
      'start_state' => t('Start State'),
      'end_state' => t('End State'),
    ),
  );

  // Dates.
  $form['workbench_scheduler_start_date'] = array(
    '#type' => 'date_popup',
    '#date_format' => 'Y-m-d H:i',
    '#title' => t('Start date'),
    '#description' => t('Select the date to switch this node to the scheduled "start state".'),
  );
  $form['workbench_scheduler_end_date'] = array(
    '#type' => 'date_popup',
    '#date_format' => 'Y-m-d H:i',
    '#title' => t('End date'),
    '#description' => t('Select the date to switch this node to the scheduled "end state".'),
  );

  // Node only allow most recent revision schedule?
  $type_settings = variable_get('workbench_scheduler_' . $node->type, array());

  // Check if only process latest revision.
  if (in_array('workbench_scheduler_limit_current_revision', $type_settings)) {

    // Getting the latest revision.
    $rev_list = node_revision_list($node);
    $latest_vid = max(array_keys($rev_list));

    // Is this vid not the most recent?
    if ($latest_vid != $vid) {
      $form['note'] = array(
        '#type' => 'item',
        '#title' => t('Note'),
        '#markup' => t('THIS SCHEDULE WILL NOT BE RUN. This node type is set to run the schedule for only the most !link', array(
          '!link' => l(t('recent revision'), 'node/' . $node->nid . '/manage_schedules/' . $latest_vid . '/edit'),
        )),
      );
    }
  }

  // Add existing node schedule as defaults.
  $node_schedule = workbench_scheduler_load_node_schedule($node->nid, $vid);
  if ($node_schedule) {
    $form['workbench_scheduler_sid']['#default_value'] = $node_schedule->sid;
    if ($node_schedule->start_date) {
      $start_date = format_date($node_schedule->start_date, 'custom', 'Y-m-d H:i:s');
      $form['workbench_scheduler_start_date']['#default_value'] = $start_date;
    }
    if ($node_schedule->end_date) {
      $end_date = format_date($node_schedule->end_date, 'custom', 'Y-m-d H:i:s');
      $form['workbench_scheduler_end_date']['#default_value'] = $end_date;
    }
  }
  $form['actions'] = array(
    '#type' => 'actions',
  );
  $form['actions']['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Update'),
    '#validate' => array(
      'workbench_scheduler_node_form_validate',
    ),
  );
  return $form;
}