You are here

public function CivicrmDataSourceHandler::getReferenceCiviCrmDestinationIds in CRM Core 7

Add destination id for references.

1 call to CivicrmDataSourceHandler::getReferenceCiviCrmDestinationIds()
CivicrmDataSourceHandler::getEntitiesForReferences in modules/crm_core_data_import/plugins/source/CivicrmDataSourceHandler.inc
Returns related list entities from migration results for references.

File

modules/crm_core_data_import/plugins/source/CivicrmDataSourceHandler.inc, line 276

Class

CivicrmDataSourceHandler

Code

public function getReferenceCiviCrmDestinationIds(&$civicrm_destination_ids, $source_id, $importer, $reference) {
  $mapping = $importer
    ->getMappingSettings();
  list($entity_type, $entity_bundle, $delta, $drupal_field_name) = explode(':', $reference['reference_type']);
  $civicrm_fields = $this
    ->getAppropriateCiviCrmField($entity_type, $entity_bundle, $delta, $drupal_field_name, $mapping);
  if (!empty($civicrm_fields)) {
    $options = array(
      'activity_id' => $source_id,
      'sequential' => 1,
    );
    foreach ($civicrm_fields as $civicrm_field) {
      $options['return.' . $civicrm_field] = 1;
    }
    $civicrm_activity = crm_core_data_import_civicrm_api('Activity', 'get', $options);
    $civicrm_activity = reset($civicrm_activity);
    foreach ($civicrm_fields as $civicrm_field) {
      if (!empty($civicrm_activity[$civicrm_field])) {
        if (is_array($civicrm_activity[$civicrm_field])) {
          foreach ($civicrm_activity[$civicrm_field] as $target) {
            $civicrm_destination_ids[] = $target;
          }
        }
        else {
          $civicrm_destination_ids[] = $civicrm_activity[$civicrm_field];
        }
      }
    }
  }
}