3 namespace Drupal\field\Plugin\migrate\process;
5 use Drupal\Component\Plugin\Exception\PluginNotFoundException;
6 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
7 use Drupal\migrate\MigrateExecutableInterface;
8 use Drupal\migrate\Plugin\MigrationInterface;
9 use Drupal\migrate\Plugin\migrate\process\StaticMap;
10 use Drupal\migrate\Row;
11 use Drupal\migrate_drupal\Plugin\MigrateCckFieldPluginManagerInterface;
12 use Drupal\migrate_drupal\Plugin\MigrateFieldPluginManagerInterface;
13 use Symfony\Component\DependencyInjection\ContainerInterface;
16 * @MigrateProcessPlugin(
20 class FieldType extends StaticMap implements ContainerFactoryPluginInterface {
23 * The cckfield plugin manager.
25 * @var \Drupal\migrate_drupal\Plugin\MigrateCckFieldPluginManagerInterface
27 protected $cckPluginManager;
30 * The field plugin manager.
32 * @var \Drupal\migrate_drupal\Plugin\MigrateFieldPluginManagerInterface
34 protected $fieldPluginManager;
37 * The migration object.
39 * @var \Drupal\migrate\Plugin\MigrationInterface
44 * Constructs a FieldType plugin.
46 * @param array $configuration
47 * The plugin configuration.
48 * @param string $plugin_id
50 * @param mixed $plugin_definition
51 * The plugin definition.
52 * @param \Drupal\migrate_drupal\Plugin\MigrateCckFieldPluginManagerInterface $cck_plugin_manager
53 * The cckfield plugin manager.
54 * @param \Drupal\migrate_drupal\Plugin\MigrateFieldPluginManagerInterface $field_plugin_manager
55 * The field plugin manager.
56 * @param \Drupal\migrate\Plugin\MigrationInterface $migration
57 * The migration being run.
59 public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrateCckFieldPluginManagerInterface $cck_plugin_manager, MigrateFieldPluginManagerInterface $field_plugin_manager, MigrationInterface $migration = NULL) {
60 parent::__construct($configuration, $plugin_id, $plugin_definition);
61 $this->cckPluginManager = $cck_plugin_manager;
62 $this->fieldPluginManager = $field_plugin_manager;
63 $this->migration = $migration;
69 public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) {
74 $container->get('plugin.manager.migrate.cckfield'),
75 $container->get('plugin.manager.migrate.field'),
83 public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
84 $field_type = is_array($value) ? $value[0] : $value;
86 $plugin_id = $this->fieldPluginManager->getPluginIdFromFieldType($field_type, [], $this->migration);
87 return $this->fieldPluginManager->createInstance($plugin_id, [], $this->migration)->getFieldType($row);
89 catch (PluginNotFoundException $e) {
91 $plugin_id = $this->cckPluginManager->getPluginIdFromFieldType($field_type, [], $this->migration);
92 return $this->cckPluginManager->createInstance($plugin_id, [], $this->migration)->getFieldType($row);
94 catch (PluginNotFoundException $e) {
95 return parent::transform($value, $migrate_executable, $row, $destination_property);