You are here

public function CivicrmDataSourceHandler::getEntitiesForRelationships in CRM Core 7

Returns list of entities which has relationships.

Overrides CRMCoreDataSourceHandler::getEntitiesForRelationships

File

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

Class

CivicrmDataSourceHandler

Code

public function getEntitiesForRelationships($settings, $item, $importer) {
  $list = array();
  if (!empty($settings['relations_values'])) {
    foreach ($settings['relations_values'] as $relationship_type_id => $relation) {
      $civicrm_destination_ids = array();
      if (!empty($relation['relation_type'])) {
        $data = array(
          'source' => $this
            ->getDrupalEntityInfoFromMapping($importer
            ->getMappingSettings(), 'Contact', $relation['source_entity']),
          'destination' => $this
            ->getDrupalEntityInfoFromMapping($importer
            ->getMappingSettings(), 'Contact', $relation['destination_entity']),
        );

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

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