You are here

function crm_core_user_sync_user_insert in CRM Core 7

Same name and namespace in other branches
  1. 8.3 modules/crm_core_user_sync/crm_core_user_sync.module \crm_core_user_sync_user_insert()
  2. 8 modules/crm_core_user_sync/crm_core_user_sync.module \crm_core_user_sync_user_insert()
  3. 8.2 modules/crm_core_user_sync/crm_core_user_sync.module \crm_core_user_sync_user_insert()

Implements hook_user_insert().

File

modules/crm_core_user_sync/crm_core_user_sync.module, line 143

Code

function crm_core_user_sync_user_insert(&$edit, $account, $category) {
  if (variable_get('crm_core_user_sync_auto_sync_user_create', 1)) {

    // We want to try to search for existing contact.
    if (variable_get('crm_core_user_sync_auto_sync_user_match', 1)) {
      $contact_types = entity_load('crm_core_contact_type');
      $match = FALSE;
      foreach ($contact_types as $contact_type) {
        if (isset($contact_type->primary_fields) && !empty($contact_type->primary_fields['email'])) {
          $email_field = $contact_type->primary_fields['email'];
          $email_field_info = field_info_field($email_field);
          reset($email_field_info['columns']);
          $column = key($email_field_info['columns']);
          $query = new EntityFieldQuery();
          $query
            ->entityCondition('entity_type', 'crm_core_contact')
            ->entityCondition('bundle', $contact_type->type)
            ->fieldCondition($email_field, $column, $account->mail);
          $results = $query
            ->execute();
          if (!empty($results['crm_core_contact'])) {
            $match = TRUE;
            $cids = array_keys($results['crm_core_contact']);
            $contact_id = array_shift($cids);
            crm_core_user_sync_sync($account, crm_core_contact_load($contact_id));
            break;
          }
        }
      }
      if (!$match) {
        crm_core_user_sync_sync($account);
      }
    }
    else {
      crm_core_user_sync_sync($account);
    }
  }
}