You are here

function civicrm_entity_contact_group_assign_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_contact_group_assign_field/civicrm_entity_contact_group_assign_field.module, line 116
Provide CiviCRM Entity Contact Group Assign Field Type. Provides a widget for adding/removing a contact to a selected list of groups.

Code

function civicrm_entity_contact_group_assign_field_field_load($entity_type, $entities, $field, $instances, $langcode, &$items, $age) {
  if ($entity_type == 'civicrm_contact') {
    $field_group_ids = array_keys($field['settings']['groups']);
    civicrm_initialize();
    foreach ($entities as $entity_id => $entity) {
      $contact_id = $entity->contact_id;
      try {
        $result = civicrm_api3('GroupContact', 'get', array(
          'contact_id' => $contact_id,
        ));
      } catch (CiviCRM_API3_Exception $e) {
        continue;
      }
      $api_contact_groups = array();
      foreach ($result['values'] as $group_contact_id => $data) {
        if (in_array($data['group_id'], $field_group_ids)) {
          $api_contact_groups[] = $data['group_id'];
        }
      }
      foreach ($field_group_ids as $group_id) {
        if (in_array($group_id, $api_contact_groups)) {
          $items[$entity_id][0]['groups'][$group_id] = $group_id;
        }
        else {
          $items[$entity_id][0]['groups'][$group_id] = 0;
        }
      }
    }
  }
}