function webform_conditional_confirmation_webform_client_form_submit in Webform Conditional Confirmation Messages 7.2
Same name and namespace in other branches
- 7 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 307
Code
function webform_conditional_confirmation_webform_client_form_submit($form, &$form_state) {
global $user;
$node = $form['#node'];
$sid = $form_state['values']['details']['sid'];
$is_draft = !empty($form_state['save_draft']);
// 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);
// Clean up the redirect URL and filter it for webform tokens.
$redirect_url = trim($node->webform['redirect_url']);
$redirect_url = webform_replace_tokens($redirect_url, $node, $submission, NULL, FALSE, TRUE);
// Remove the domain name from the redirect.
$redirect_url = preg_replace('/^' . preg_quote($GLOBALS['base_url'], '/') . '\\//', '', $redirect_url);
// Check confirmation and redirect_url fields.
$redirect = $form_state['redirect'];
$external_url = FALSE;
$message = 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 (!empty($form_state['values']['details']['finished'])) {
$message = t('Submission updated.');
}
elseif ($redirect_url == '<none>') {
$redirect = NULL;
}
elseif ($redirect_url == '<confirmation>') {
// No confirmation message needed because it will be shown on the
// confirmation page.
$message = FALSE;
$query = array(
'sid' => $sid,
);
if ((int) $user->uid === 0) {
$query['token'] = webform_get_submission_access_token($submission);
}
$redirect = array(
'node/' . $node->nid . '/done',
array(
'query' => $query,
),
);
}
elseif (valid_url($redirect_url, TRUE)) {
$redirect = $redirect_url;
$external_url = TRUE;
}
elseif ($redirect_url && strpos($redirect_url, 'http://') !== FALSE) {
$url_parts = drupal_parse_url($redirect_url);
$url_parts['query'] ? $url_parts['query']['sid'] = $sid : ($url_parts['query'] = array(
'sid' => $sid,
));
$redirect = array(
$url_parts['path'],
array(
'query' => $url_parts['query'],
'fragment' => $url_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;
}