migration = $migration; $this->migrationPlugin = $migration_plugin; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) { // Configure the migration process plugin to look up migrated IDs from // a d6 file migration. $migration_plugin_configuration = $configuration + [ 'migration' => 'd6_file', 'source' => ['fid'], ]; return new static( $configuration, $plugin_id, $plugin_definition, $migration, $container->get('plugin.manager.migrate.process')->createInstance('migration', $migration_plugin_configuration, $migration) ); } /** * {@inheritdoc} */ public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) { $options = unserialize($value['data']); // Try to look up the ID of the migrated file. If one cannot be found, it // means the file referenced by the current field item did not migrate for // some reason -- file migration is notoriously brittle -- and we do NOT // want to send invalid file references into the field system (it causes // fatals), so return an empty item instead. if ($fid = $this->migrationPlugin->transform($value['fid'], $migrate_executable, $row, $destination_property)) { return [ 'target_id' => $fid, 'display' => $value['list'], 'description' => isset($options['description']) ? $options['description'] : '', 'alt' => isset($options['alt']) ? $options['alt'] : '', 'title' => isset($options['title']) ? $options['title'] : '', ]; } else { return []; } } }