private function WebformCivicrmPostProcess::processSharedAddresses in Webform CiviCRM Integration 8.5
Process shared addresses
1 call to WebformCivicrmPostProcess::processSharedAddresses()
- 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 1337 - Front-end form validation and post-processing.
Class
Namespace
Drupal\webform_civicrmCode
private function processSharedAddresses() {
$utils = \Drupal::service('webform_civicrm.utils');
foreach ($this->shared_address as $cid => $shared) {
foreach ($shared as $i => $addr) {
if (!empty($this->ent['contact'][$addr['mc']]['id'])) {
$masters = $utils
->wf_civicrm_api('address', 'get', [
'contact_id' => $this->ent['contact'][$addr['mc']]['id'],
'options' => [
'sort' => 'is_primary DESC',
],
]);
if (!empty($masters['values'])) {
$masters = array_values($masters['values']);
// Pick the address with the same location type; default to primary.
$params = $masters[0];
foreach ($masters as $m) {
if ($m['location_type_id'] == $addr['loc']) {
$params = $m;
break;
}
}
$params['master_id'] = $params['id'];
$params['id'] = $addr['id'];
$params['contact_id'] = $cid;
$params['is_primary'] = $addr['pri'];
$utils
->wf_civicrm_api('address', 'create', $params);
}
}
}
}
}