You are here

public function WebformCivicrmPostProcess::postSave in Webform CiviCRM Integration 8.5

Process webform submission after it is has been saved. Called by the following hooks:

Parameters

stdClass $submission:

Overrides WebformCivicrmPostProcessInterface::postSave

See also

webform_civicrm_webform_submission_insert

webform_civicrm_webform_submission_update

File

src/WebformCivicrmPostProcess.php, line 277
Front-end form validation and post-processing.

Class

WebformCivicrmPostProcess

Namespace

Drupal\webform_civicrm

Code

public function postSave(WebformSubmissionInterface $webform_submission) {
  $this->submission = $webform_submission;
  if (empty($this->submission
    ->isDraft())) {

    // Save cases
    if (!empty($this->data['case']['number_of_case'])) {
      $this
        ->processCases();
    }

    // Save activities
    if (!empty($this->data['activity']['number_of_activity'])) {
      $this
        ->processActivities();
    }

    // Save grants
    if (isset($this->data['grant']['number_of_grant'])) {
      $this
        ->processGrants();
    }

    // Save contribution line-items
    if (!empty($this->ent['contribution'][1]['id'])) {
      $this
        ->processContribution();
    }
  }

  // Write record; we do this when creating, updating, or saving a draft of a webform submission.
  $record = $this
    ->formatSubmission();
  $this->database
    ->merge('webform_civicrm_submissions')
    ->key('sid', $record['sid'])
    ->fields($record)
    ->execute();

  // Calling an IPN payment processor will result in a redirect so this happens after everything else
  if ($this->contributionIsIncomplete && !$this->contributionIsPayLater && !empty($this->ent['contribution'][1]['id']) && !$this->submission
    ->isDraft()) {

    //      webform_submission_send_mail($this->node, $this->submission);
    $this
      ->submitIPNPayment();
  }
  $isEmailReceipt = wf_crm_aval($this->data, "receipt:number_number_of_receipt", FALSE);

  // Send receipt
  if (empty($this->submission
    ->isDraft()) && !empty($this->ent['contribution'][1]['id']) && !empty($isEmailReceipt) && (!$this->contributionIsIncomplete || $this->contributionIsPayLater)) {
    $this
      ->sendReceipt();
  }
}