function webform_conditional_confirmation_webform_client_form_submit in Webform Conditional Confirmation Messages 7
Same name and namespace in other branches
- 7.2 webform_conditional_confirmation.module \webform_conditional_confirmation_webform_client_form_submit()
Submit handler; Load our conditional confirmation messages if required.
1 string reference to 'webform_conditional_confirmation_webform_client_form_submit'
- webform_conditional_confirmation_form_webform_client_form_alter in ./
webform_conditional_confirmation.module - Implements hook_form_FORMID_alter().
File
- ./
webform_conditional_confirmation.module, line 239
Code
function webform_conditional_confirmation_webform_client_form_submit($form, &$form_state) {
$node = $form['#node'];
$sid = $form_state['values']['details']['sid'];
// Don't trigger this if the webform isn't completed, i.e. final step of a
// multi-step form.
if (empty($form_state['save_draft']) && empty($form_state['webform_completed'])) {
return;
}
// If we have no sid, return.
if (empty($sid)) {
return;
}
module_load_include('inc', 'webform', 'includes/webform.submissions');
$submission = webform_get_submission($node->nid, $sid);
webform_conditional_confirmation_get_message($node, $submission);
// Strip out empty tags added by WYSIWYG editors if needed.
$confirmation = strlen(trim(strip_tags($node->webform['confirmation']))) ? $node->webform['confirmation'] : '';
// Clean up the redirect URL and filter it for webform tokens.
$redirect_url = trim($node->webform['redirect_url']);
$redirect_url = _webform_filter_values($redirect_url, $node, $submission, NULL, FALSE, TRUE);
// Check if user is submitting as a draft.
$is_draft = (int) (!empty($form_state['save_draft']));
// Remove the domain name from the redirect.
$redirect_url = preg_replace('/^' . preg_quote($GLOBALS['base_url'], '/') . '\\//', '', $redirect_url);
// Check confirmation and redirect_url fields.
$message = NULL;
$redirect = NULL;
$external_url = FALSE;
if (isset($form['actions']['draft']['#value']) && $form_state['values']['op'] == $form['actions']['draft']['#value']) {
$message = t('Submission saved. You may return to this form later and it will restore the current values.');
}
elseif ($is_draft) {
$redirect = NULL;
}
elseif (!empty($form_state['values']['details']['finished'])) {
$message = t('Submission updated.');
}
elseif ($redirect_url == '<none>') {
$redirect = NULL;
}
elseif ($redirect_url == '<confirmation>') {
$redirect = array(
'node/' . $node->nid . '/done',
array(
'query' => array(
'sid' => $sid,
),
),
);
}
elseif (valid_url($redirect_url, TRUE)) {
$redirect = $redirect_url;
$external_url = TRUE;
}
elseif ($redirect_url && strpos($redirect_url, 'http') !== 0) {
$parts = drupal_parse_url($redirect_url);
$parts['query'] ? $parts['query']['sid'] = $sid : ($parts['query'] = array(
'sid' => $sid,
));
$query = $parts['query'];
$redirect = array(
$parts['path'],
array(
'query' => $query,
'fragment' => $parts['fragment'],
),
);
}
// Show a message if manually set.
if (isset($message)) {
drupal_set_message($message);
}
elseif (!$is_draft && !$external_url && (!empty($redirect_url) && $redirect_url != '<confirmation>') && !empty($confirmation)) {
drupal_set_message(check_markup($confirmation, $node->webform['confirmation_format'], '', TRUE));
}
$form_state['redirect'] = $redirect;
}