You are here

function webform_civicrm_webform_submission_load in Webform CiviCRM Integration 7.2

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

Implements hook_webform_submission_load(). Add CiviCRM contact info to submission objects.

1 call to webform_civicrm_webform_submission_load()
webform_civicrm_process_submission in ./webform_civicrm_forms.inc
Webform submission handler Create/update CiviCRM contacts and related data Called by presave, insert and update webform hooks

File

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

Code

function webform_civicrm_webform_submission_load(&$submissions) {
  if (empty($submissions)) {
    return;
  }
  $db = db_query('SELECT * FROM {webform_civicrm_submissions} WHERE sid IN (' . implode(',', array_keys($submissions)) . ')');
  $contacts = array();
  foreach ($db as $row) {
    $sid = $row->sid;
    unset($row->sid);
    if ($cid = $row->contact_id) {
      $cid = explode('-', rtrim($cid, '-'));
      unset($cid[0]);
      $row->contact_id = $cid;
      $contacts[$cid[1]] = '';
    }
    $submissions[$sid]->civicrm = (array) $row;
  }
  if ($contacts) {

    // Retrieve contact names and add to submission objects
    civicrm_initialize();
    $sql = 'SELECT id, display_name FROM civicrm_contact WHERE id IN (' . implode(',', array_keys($contacts)) . ')';
    $dao =& CRM_Core_DAO::executeQuery($sql);
    while ($dao
      ->fetch()) {
      $contacts[$dao->id] = $dao->display_name;
    }
    foreach ($submissions as &$s) {
      if (isset($s->civicrm['contact_id'])) {
        $s->civicrm['display_name'] = $contacts[$s->civicrm['contact_id'][1]];
      }
    }
  }
}