You are here

function webform_rules_rules_invoke_event in Webform Rules 6

Same name and namespace in other branches
  1. 7 webform_rules.module \webform_rules_rules_invoke_event()

Invoke rules event with submitted data.

Parameters

$submission_data: Data from webform prepared by webform_submission_data().

$node: The submitted webform node.

$op: Type of submission: 'insert', 'update', 'delete', 'submit.

4 calls to webform_rules_rules_invoke_event()
webform_rules_client_form_submit in ./webform_rules.module
Custom submit handler for webform submissions.
webform_rules_webform_submission_delete in ./webform_rules.module
Implementation of hook_webform_submission_update().
webform_rules_webform_submission_insert in ./webform_rules.module
Implementation of hook_webform_submission_insert().
webform_rules_webform_submission_update in ./webform_rules.module
Implementation of hook_webform_submission_update().

File

./webform_rules.module, line 103
Adds rules integration for webform submissions.

Code

function webform_rules_rules_invoke_event($submission, $node, $op = 'insert') {
  global $user;
  if (!is_array($submission->data) || count($submission->data) == 0) {
    return;
  }
  $is_draft = isset($submission->is_draft) && $submission->is_draft;
  $webform = $node->webform;
  $data = array(
    'op' => $op,
    'sid' => $submission->sid,
    'components' => array(),
  );
  $form_id = 'webform-client-form-' . $webform['nid'];

  // Map values to field names.
  foreach ($submission->data as $cid => $value) {
    $component = $webform['components'][$cid];
    $data['components'][$component['form_key']]['value'] = $value['value'];
    $data['components'][$component['form_key']]['component'] = $component;
  }

  // Invoke the rules event.
  switch ($op) {
    case 'insert':
      if ($is_draft) {
        rules_invoke_event('webform_rules_submit_as_draft', array(
          'user' => $user,
          'node' => $node,
          'data' => $data,
          'form_id' => $form_id,
        ));
      }
      else {
        rules_invoke_event('webform_rules_submit', array(
          'user' => $user,
          'node' => $node,
          'data' => $data,
          'form_id' => $form_id,
        ));
      }
      break;
    case 'submit':
      rules_invoke_event('webform_rules_insert', array(
        'user' => $user,
        'node' => $node,
        'data' => $data,
        'form_id' => $form_id,
      ));
      break;
    case 'update':
      rules_invoke_event('webform_rules_update', array(
        'user' => $user,
        'node' => $node,
        'data' => $data,
        'form_id' => $form_id,
      ));
      break;
    case 'delete':
      rules_invoke_event('webform_rules_delete', array(
        'user' => $user,
        'node' => $node,
        'data' => $data,
        'form_id' => $form_id,
      ));
      break;
  }
}