You are here

function webform_configure_form_validate in Webform 7.4

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

Validate handler for webform_configure_form().

File

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

Code

function webform_configure_form_validate($form, &$form_state) {

  // Ensure the entered redirect URL is valid.
  if ($form_state['values']['redirect'] == 'url') {
    $redirect_url = trim($form_state['values']['redirect_url']);
    if (empty($redirect_url)) {
      form_error($form['submission']['redirection']['redirect_url'], t('A valid URL is required for custom redirection.'));
    }
    elseif (strpos($redirect_url, 'http') === 0 && !valid_url(webform_replace_tokens($redirect_url, $form['#node']), TRUE)) {
      form_error($form['submission']['redirection']['redirect_url'], t('The entered URL is not a valid address.'));
    }
    else {
      form_set_value($form['submission']['redirection']['redirect_url'], $redirect_url, $form_state);
    }
  }
  elseif ($form_state['values']['redirect'] == 'confirmation') {
    form_set_value($form['submission']['redirection']['redirect_url'], '<confirmation>', $form_state);
  }
  else {
    form_set_value($form['submission']['redirection']['redirect_url'], '<none>', $form_state);
  }

  // Ensure only positive integers are entered as submission limits.
  foreach (array(
    'total_submit_limit' => 'enforce_total_limit',
    'submit_limit' => 'enforce_limit',
  ) as $field => $enforce_fk) {
    $limit = $form['submission'][$field][$field]['#value'];
    if ($form['submission'][$field][$enforce_fk]['#value'] !== 'no' && $limit !== '' && (int) $limit < 1 && (int) $limit !== -1) {
      form_error($form['submission'][$field][$field], t('The submission limit must be at least 1.'));
    }
  }

  // Prohibit the combination of confidential + per-user limit + ip-only
  // submission tracking for anonymous users as it would not be enforceable.
  if (webform_variable_get('webform_tracking_mode') == 'ip_address' && $form_state['values']['confidential'] && $form_state['values']['enforce_limit'] == 'yes') {

    // Note that FAPI doesn't actually support error highlighting on radio or
    // checkbox form elements.
    form_error($form['advanced']['confidential'], t('Choose a "Per user submission limit" or "Confidential submissions", but not both. Or ask the adminstrator to track anonymous users by cookie, rather than IP address only.'));
  }
}