You are here

public function CivicrmDataSourceHandler::getEntitiesForReferences in CRM Core 7

Returns related list entities from migration results for references.

Overrides CRMCoreDataSourceHandler::getEntitiesForReferences

File

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

Class

CivicrmDataSourceHandler

Code

public function getEntitiesForReferences($settings, $item, $importer) {
  $list = array();
  if (!empty($settings)) {
    foreach ($settings['fields'] as $plugin_data) {
      if (!$this
        ->entityIsSourceReference($item['entity_type'], $item['bundle'], $item['delta'], $plugin_data['source'])) {
        continue;
      }
      $data = array(
        'destination' => array(),
        'source' => array(),
      );

      // Get types, bundles and deltas of drupal entity.
      list($data['source']['type'], $data['source']['bundle'], $data['source']['delta']) = explode(':', $plugin_data['source']);
      list($data['destination']['type'], $data['destination']['bundle'], $data['destination']['delta']) = explode(':', $plugin_data['destination']);

      // Get source data.
      $this
        ->getSourceResourceData($data, $item, $importer);

      // Fill civicrm_destination_ids with source ids and list of items.
      $civicrm_destination_ids = array();
      $this
        ->getReferenceCiviCrmDestinationIds($civicrm_destination_ids, $data['remote_source_id'], $importer, $plugin_data);
      $civicrm_destination_ids = array_unique($civicrm_destination_ids);
      if (!empty($data['table']) && !empty($civicrm_destination_ids)) {
        $this
          ->buildItemList($list, $data, $civicrm_destination_ids, $plugin_data);
      }
    }
  }
  return $list;
}