You are here

function civicrm_entity_reference_field_field_load in CiviCRM Entity 7.2

Implements hook_field_load().

Parameters

$entity_type:

$entities:

$field:

$instances:

$langcode:

$items:

$age:

File

modules/civicrm_entity_reference_field/civicrm_entity_reference_field.module, line 204
Provide CiviCRM entity reference field type

Code

function civicrm_entity_reference_field_field_load($entity_type, $entities, $field, $instances, $langcode, &$items, $age) {
  if (!civicrm_initialize()) {
    return;
  }
  foreach ($entities as $id => $entity) {
    if (!empty($entity->{$field['settings']['host_source_id']})) {
      try {
        $params = array(
          $field['settings']['target_id_column'] => $entity->{$field['settings']['host_source_id']},
        );
        $is_primary_entities = array(
          'address',
          'phone',
          'email',
          'im',
        );
        if (in_array($field['settings']['target_entity_type'], $is_primary_entities)) {
          $params['options'] = array(
            'sort' => 'is_primary DESC',
          );
        }
        $result = civicrm_api3($field['settings']['target_entity_type'], 'get', $params);
      } catch (CiviCRM_API3_Exception $e) {
        $error = $e
          ->getMessage();
        drupal_set_message($error, 'error');
        continue;
      }
      if ($result['count']) {
        $delta = 0;
        foreach ($result['values'] as $target_id => $data) {
          $items[$id][$delta]['target_id'] = $target_id;
          $delta += 1;
        }
      }
    }
  }
}