You are here

public function MigrationDataImport::buildFieldCollectionMapping in CRM Core 7

Build field collection mapping.

1 call to MigrationDataImport::buildFieldCollectionMapping()
MigrationDataImport::__construct in modules/crm_core_data_import/includes/controllers/MigrationDataImport.inc
General initialization of a Migration object.

File

modules/crm_core_data_import/includes/controllers/MigrationDataImport.inc, line 431
Handler for migration process.

Class

MigrationDataImport
@file Handler for migration process.

Code

public function buildFieldCollectionMapping() {
  if (!empty($this->collection_items)) {
    $collection_items = $this->collection_items;
    foreach ($collection_items as $collection_item) {
      $collection_mapping = array();
      foreach ($this->fields_mapping as $mapping_item) {
        if (!empty($mapping_item['source_field']) && !empty($mapping_item['destination_field'])) {
          $source_raw = explode(':', $mapping_item['source_field']);
          $destination_raw = explode(':', $mapping_item['destination_field']);
          $source = array(
            'type' => !empty($source_raw[0]) ? $source_raw[0] : NULL,
            'bundle' => !empty($source_raw[1]) ? $source_raw[1] : NULL,
            'main_field' => !empty($source_raw[2]) ? $source_raw[2] : NULL,
            'sub_field' => !empty($source_raw[3]) ? $source_raw[3] : NULL,
          );
          $destination = array(
            'type' => $this
              ->getEntityType(),
            'bundle' => $this
              ->getEntityBundle(),
            'main_field' => !empty($destination_raw[0]) ? $destination_raw[0] : NULL,
            'sub_field' => !empty($destination_raw[1]) ? $destination_raw[1] : NULL,
            'part' => !empty($destination_raw[2]) ? $destination_raw[2] : NULL,
            'default_value' => !empty($mapping_item['default_value']) ? $mapping_item['default_value'] : NULL,
          );
          if (!empty($destination['main_field']) && $destination['main_field'] == $collection_item) {
            $collection_mapping[] = array(
              'source' => $source,
              'destination' => $destination,
            );
            if (!empty($source['main_field'])) {
              $main_source_field = $source['type'] . ':' . $source['bundle'] . ':' . $source['main_field'];
            }
          }
        }
      }
      if (!empty($collection_mapping) && !empty($main_source_field)) {
        $this->collection_mapping[$collection_item] = array(
          'mapping' => $collection_mapping,
          'main_field' => $main_source_field,
        );
      }
    }
  }
}