diff --git a/webform_rules.module b/webform_rules.module index e328022..e6c0a2f 100644 --- a/webform_rules.module +++ b/webform_rules.module @@ -77,17 +77,25 @@ function webform_rules_client_form_submit($form, &$form_state) { return; } if ($form['#is_draft'] && isset($form_state['values']['details']['sid'])) { - $submission = $form['#submission']; - // Map submitted data to submission data. - foreach ($form_state['values']['submitted'] as $cid => $value) { - if (isset($submission->data[$cid])) { - if (isset($value['value'])) { - $submission->data[$cid]['value'] = $value; - } - else { - $submission->data[$cid] = $value; + if ($form_state['input']['details']['page_count'] == 1) { + $submission = $form['#submission']; + // Map submitted data to submission data. + foreach ($form_state['values']['submitted'] as $cid => $value) { + if (isset($submission->data[$cid])) { + if (isset($value['value'])) { + $submission->data[$cid]['value'] = $value; + } + else { + $submission->data[$cid] = $value; + } } } + $submission->data['page_break'] = FALSE; + } + else { + // load submission data from database to load previous data in case of multiple-page submission + $submission = webform_get_submission($form['#submission']->nid, $form['#submission']->sid); + $submission->data['page_break'] = TRUE; } // Invoke event. webform_rules_rules_invoke_event($submission, $form['#node'], 'submit'); @@ -128,9 +136,23 @@ function webform_rules_rules_invoke_event($submission, $node, $op = 'insert') { } $data['components'][$component['form_key']]['component'] = $component; } + if (!isset($submission->data['page_break'])) { + $insert = 'insert'; + } + else { + $submit = 'submit'; + } + + if (isset($submission->data['page_break'])) { + $insert = 'submit'; + } + else { + $submit = 'insert'; + } + // Invoke the rules event. switch ($op) { - case 'insert': + case $insert: if ($is_draft) { rules_invoke_event('webform_rules_submit_as_draft', $user, $node, $data, $form_id); } @@ -138,7 +160,7 @@ function webform_rules_rules_invoke_event($submission, $node, $op = 'insert') { rules_invoke_event('webform_rules_submit', $user, $node, $data, $form_id); } break; - case 'submit': + case $submit: rules_invoke_event('webform_rules_insert', $user, $node, $data, $form_id); break; case 'update':