function _civicrm_entity_contact_assign_rel_contact_field_process_field_items in CiviCRM Entity 7.2
Helper function to process field items on entity insert or update
Parameters
$contact_a_id:
$field:
$items:
2 calls to _civicrm_entity_contact_assign_rel_contact_field_process_field_items()
- civicrm_entity_contact_assign_rel_contact_field_field_insert in modules/
civicrm_entity_contact_assign_rel_contact_field/ civicrm_entity_contact_assign_rel_contact_field.module - Implements hook_field_insert().
- civicrm_entity_contact_assign_rel_contact_field_field_update in modules/
civicrm_entity_contact_assign_rel_contact_field/ civicrm_entity_contact_assign_rel_contact_field.module - Implements hook_field_update().
File
- modules/
civicrm_entity_contact_assign_rel_contact_field/ civicrm_entity_contact_assign_rel_contact_field.module, line 571 - Provide CiviCRM Entity Contact Assign Relationship Contacts List Field Type. Provides a widget for adding/removing a contacts relationships to a list of contacts.
Code
function _civicrm_entity_contact_assign_rel_contact_field_process_field_items($contact_a_id, $field, &$items) {
$field_settings_contacts = array_keys(_civicrm_entity_contact_assign_rel_contact_field_get_field_settings_contacts($field));
$relationship_type_id = $field['settings']['relationship_type'];
if (!is_array($items[0]['contacts'])) {
$set_value = $items[0]['contacts'];
$items[0]['contacts'] = array();
foreach ($field_settings_contacts as $contact_b_id) {
if ($contact_b_id == $set_value) {
$items[0]['contacts'][$contact_b_id] = $set_value;
}
else {
$items[0]['contacts'][$contact_b_id] = 0;
}
}
}
foreach ($items[0]['contacts'] as $contact_b_id => $value) {
// ignore any programmatically added contact id keys that aren't in the field settings list
if (in_array($contact_b_id, $field_settings_contacts)) {
// if group id has a non-zero, check to see if contact has relationship, and if not, create it
if ($value) {
if (!_civicrm_entity_contact_assign_rel_contact_field_contact_has_relationship($contact_a_id, $contact_b_id, $relationship_type_id)) {
_civicrm_entity_contact_assign_rel_contact_field_add_contact_relationship($contact_a_id, $contact_b_id, $relationship_type_id);
}
}
else {
if (_civicrm_entity_contact_assign_rel_contact_field_contact_has_relationship($contact_a_id, $contact_b_id, $relationship_type_id)) {
_civicrm_entity_contact_assign_rel_contact_field_remove_contact_relationship($contact_a_id, $contact_b_id, $relationship_type_id);
}
}
}
}
}