You are here

private function WebformCivicrmPostProcess::createContact in Webform CiviCRM Integration 8.5

Create a new contact

Parameters

array $contact:

Return value

int

2 calls to WebformCivicrmPostProcess::createContact()
WebformCivicrmPostProcess::createBillingContact in src/WebformCivicrmPostProcess.php
Create contact 1 if not already existing (required by contribution.transact)
WebformCivicrmPostProcess::preSave in src/WebformCivicrmPostProcess.php
Process webform submission when it is about to be saved. Called by the following hook:

File

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

Class

WebformCivicrmPostProcess

Namespace

Drupal\webform_civicrm

Code

private function createContact($contact) {
  $params = $contact['contact'][1];
  $utils = \Drupal::service('webform_civicrm.utils');

  // CiviCRM API is too picky about this, imho
  $params['contact_type'] = ucfirst($params['contact_type']);
  unset($params['contact_id'], $params['id']);
  if (!isset($params['source'])) {
    $params['source'] = $this->settings['new_contact_source'];
  }

  // If creating individual with no first/last name,
  // set display name and sort_name
  if ($params['contact_type'] == 'Individual' && empty($params['first_name']) && empty($params['last_name'])) {
    $params['display_name'] = $params['sort_name'] = empty($params['nick_name']) ? $contact['email'][1]['email'] : $params['nick_name'];
  }
  $result = $utils
    ->wf_civicrm_api('contact', 'create', $params);
  return wf_crm_aval($result, 'id', 0);
}