You are here

function webform_configure_form_submit in Webform 7.4

Same name and namespace in other branches
  1. 6.3 includes/webform.pages.inc \webform_configure_form_submit()
  2. 7.3 includes/webform.pages.inc \webform_configure_form_submit()

Submit handler for webform_configure_form().

1 string reference to 'webform_configure_form_submit'
webform_configure_form in includes/webform.pages.inc
Main configuration form for editing a webform node.

File

includes/webform.pages.inc, line 436
Menu callbacks and functions for configuring and editing webforms.

Code

function webform_configure_form_submit($form, &$form_state) {

  // Edit the node by reference just to shorten it up.
  $node =& $form['#node'];

  // Save the confirmation.
  $node->webform['confirmation'] = $form_state['values']['confirmation']['value'];
  $node->webform['confirmation_format'] = $form_state['values']['confirmation']['format'];

  // Save the redirect URL.
  $node->webform['redirect_url'] = $form_state['values']['redirect_url'];

  // Overall form status.
  $node->webform['status'] = $form_state['values']['status'];

  // Save roles.
  $node->webform['roles'] = array_keys(array_filter($form_state['values']['roles']));

  // Set the block option.
  $node->webform['block'] = $form_state['values']['block'];

  // Set the draft option.
  $node->webform['allow_draft'] = $form_state['values']['allow_draft'];

  // Set the auto-save draft option.
  $node->webform['auto_save'] = $form_state['values']['auto_save'];

  // Set the submit limit to -1 if set to unlimited.
  if ($form_state['values']['enforce_limit'] == 'no') {
    $node->webform['submit_limit'] = -1;
    $node->webform['submit_interval'] = -1;
  }
  else {
    $node->webform['submit_limit'] = (int) $form_state['values']['submit_limit'];
    $node->webform['submit_interval'] = (int) $form_state['values']['submit_interval'];
  }

  // Set the total submit limit to -1 if set to unlimited.
  if ($form_state['values']['enforce_total_limit'] == 'no') {
    $node->webform['total_submit_limit'] = -1;
    $node->webform['total_submit_interval'] = -1;
  }
  else {
    $node->webform['total_submit_limit'] = (int) $form_state['values']['total_submit_limit'];
    $node->webform['total_submit_interval'] = (int) $form_state['values']['total_submit_interval'];
  }

  // Set the progress bar preferences.
  $progress_bar_settings = array_filter($form_state['values']['webform_progressbar_style']);
  $node->webform['progressbar_page_number'] = in_array('progressbar_page_number', $progress_bar_settings);
  $node->webform['progressbar_percent'] = in_array('progressbar_percent', $progress_bar_settings);
  $node->webform['progressbar_bar'] = in_array('progressbar_bar', $progress_bar_settings);
  $node->webform['progressbar_pagebreak_labels'] = in_array('progressbar_pagebreak_labels', $progress_bar_settings);
  $node->webform['progressbar_include_confirmation'] = in_array('progressbar_include_confirmation', $progress_bar_settings);
  $node->webform['progressbar_label_first'] = $form_state['values']['progressbar_label_first'];
  $node->webform['progressbar_label_confirmation'] = $form_state['values']['progressbar_label_confirmation'];

  // Set the preview settings.
  $node->webform['preview'] = (int) $form_state['values']['preview'];
  $node->webform['preview_next_button_label'] = $form_state['values']['preview_next_button_label'];
  $node->webform['preview_prev_button_label'] = $form_state['values']['preview_prev_button_label'];
  $node->webform['preview_title'] = $form_state['values']['preview_title'];
  $node->webform['preview_message'] = $form_state['values']['preview_message']['value'];
  $node->webform['preview_message_format'] = $form_state['values']['preview_message']['format'];

  // Save the list of included preview components.
  // We actually maintain an *exclusion* list, so any new components will
  // default to being included in the preview until unchecked.
  $included = array_keys(array_filter((array) $form_state['values']['preview_components']));
  $excluded = array_diff(array_keys($node->webform['components']), $included);
  $node->webform['preview_excluded_components'] = $excluded;

  // Set submit notice.
  $node->webform['submit_notice'] = $form_state['values']['submit_notice'];

  // Set confidential.
  $node->webform['confidential'] = $form_state['values']['confidential'];

  // Set submit button text.
  $node->webform['submit_text'] = $form_state['values']['submit_text'];

  // Set next serial number. It must be a positive integer greater than any
  // existing serial number, which could have increased while this form was
  // being edited.
  $next_min = _webform_submission_serial_next_value_used($node->nid);
  $next_serial = (int) $form_state['values']['next_serial'];
  if ($next_serial < $next_min) {
    drupal_set_message(t('The next submission number was increased to @min to make it higher than existing submissions.', array(
      '@min' => $next_min,
    )));
    $next_serial = $next_min;
  }
  $node->webform['next_serial'] = $next_serial;
}