You are here

function workbench_scheduler_admin_edit_schedule_submit in Workbench Scheduler 7

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

Submit function for adding/editing a schedule.

File

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

Code

function workbench_scheduler_admin_edit_schedule_submit($form, &$form_state) {

  // Check to see if the delete button was clicked.
  if ($form_state['clicked_button']['#id'] == 'edit-delete') {

    // Redirect to the delete form.
    drupal_goto('admin/config/workbench/scheduler/schedules/' . $form['#schedule']->name . '/delete');
  }
  else {

    // Build the array of schedule data.
    $schedule_data = array(
      'label' => trim(strip_tags($form_state['values']['label'])),
      'start_state' => $form_state['values']['start_state'],
      'end_state' => $form_state['values']['end_state'],
      // Add the checked types to the schedule data.
      'types' => array_intersect($form['#types'], $form_state['values']['types']),
    );

    // Updating an existing schedule?
    if (isset($form['#schedule'])) {

      // Fetch the machine name form the object.
      $machine_name = $form['#schedule']->name;
    }
    else {

      // Fetch the new machine name from passed values.
      $machine_name = $form_state['values']['name'];
    }

    // Attempt a save/update
    if ($result = workbench_scheduler_save_schedule($machine_name, $schedule_data)) {
      drupal_set_message(t('Schedule @status', array(
        '@status' => $result == 1 ? t('Saved') : t('Updated'),
      )), 'status', FALSE);

      // Redirect back to the schedules table.
      $form_state['redirect'] = 'admin/config/workbench/scheduler/schedules';
    }
    else {
      drupal_set_message(t('Error saving schedule'), 'error', FALSE);
    }
  }
}