You are here

function webform_civicrm_civicrm_merge in Webform CiviCRM Integration 8.5

Same name and namespace in other branches
  1. 6.2 webform_civicrm.module \webform_civicrm_civicrm_merge()
  2. 6 webform_civicrm.module \webform_civicrm_civicrm_merge()
  3. 7.5 webform_civicrm.module \webform_civicrm_civicrm_merge()
  4. 7 webform_civicrm.module \webform_civicrm_civicrm_merge()
  5. 7.2 webform_civicrm.module \webform_civicrm_civicrm_merge()
  6. 7.3 webform_civicrm.module \webform_civicrm_civicrm_merge()
  7. 7.4 webform_civicrm.module \webform_civicrm_civicrm_merge()

Implements hook_civicrm_merge(). Update submission data to reflect new cids when contacts are merged.

File

./webform_civicrm.module, line 362
Webform CiviCRM Integration Module: Links webform submissions to contacts in a CiviCRM database. @author Coleman Watts

Code

function webform_civicrm_civicrm_merge($type, $data, $new_id = NULL, $old_id = NULL, $tables = NULL) {
  if (!empty($new_id) && !empty($old_id) && $type == 'sqls') {
    $connection = \Drupal::database();
    $connection
      ->update('webform_civicrm_submissions')
      ->expression('contact_id', 'REPLACE(contact_id, :old, :new)', [
      ':old' => '-' . $old_id . '-',
      ':new' => '-' . $new_id . '-',
    ])
      ->condition('contact_id', '%-' . $old_id . '-%', 'LIKE')
      ->execute();
    $connection
      ->update('webform_submission_data')
      ->expression('value', ':new_cid', [
      ':new_cid' => $new_id,
    ])
      ->condition('value', $old_id)
      ->condition('name', '%contact_id', 'LIKE')
      ->execute();
  }
}