You are here

public function Location::defineValueProcessPipeline in Geolocation Field 8.3

Same name in this branch
  1. 8.3 src/Plugin/migrate/field/Location.php \Drupal\geolocation\Plugin\migrate\field\Location::defineValueProcessPipeline()
  2. 8.3 modules/geolocation_address/src/Plugin/migrate/field/Location.php \Drupal\geolocation_address\Plugin\migrate\field\Location::defineValueProcessPipeline()

Apply any custom processing to the field bundle migrations.

Parameters

\Drupal\migrate\Plugin\MigrationInterface $migration: The migration entity.

string $field_name: The field name we're processing the value for.

array $data: The array of field data from FieldValues::fieldData().

Overrides AddressField::defineValueProcessPipeline

File

modules/geolocation_address/src/Plugin/migrate/field/Location.php, line 43

Class

Location
A migrate field plugin for Drupal 7 Location CCK field values.

Namespace

Drupal\geolocation_address\Plugin\migrate\field

Code

public function defineValueProcessPipeline(MigrationInterface $migration, $field_name, $data) {
  parent::defineValueProcessPipeline($migration, $field_name, $data);

  // Address cannot store geographical locations, so we need a separate
  // geolocation field.
  $geolocation_field_name = self::getGeolocationFieldName($field_name);
  $migration
    ->mergeProcessOfProperty($geolocation_field_name, [
    'plugin' => 'location_to_geolocation',
    'source' => $field_name,
  ]);

  // Add the new geolocation field's migration as a required dependency.
  $migration_dependencies = $migration
    ->getMigrationDependencies() + [
    'required' => [],
  ];
  $geolocation_field_instance_migration_plugin_id = implode(PluginBase::DERIVATIVE_SEPARATOR, [
    'd7_field_instance_location',
    $data['entity_type'],
    $data['bundle'],
  ]);
  $geolocation_field_widget_migration_plugin_id = implode(PluginBase::DERIVATIVE_SEPARATOR, [
    'd7_field_instance_widget_settings_location',
    $data['entity_type'],
    $data['bundle'],
  ]);
  $migration_dependencies['required'] = array_unique(array_merge(array_values($migration_dependencies['required']), [
    $geolocation_field_instance_migration_plugin_id,
    $geolocation_field_widget_migration_plugin_id,
  ]));
  $migration
    ->set('migration_dependencies', $migration_dependencies);
}