Updated to Drupal 8.5. Core Media not yet in use.
[yaffs-website] / web / core / modules / field / src / Plugin / migrate / process / FieldType.php
1 <?php
2
3 namespace Drupal\field\Plugin\migrate\process;
4
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;
14
15 /**
16  * @MigrateProcessPlugin(
17  *   id = "field_type"
18  * )
19  */
20 class FieldType extends StaticMap implements ContainerFactoryPluginInterface {
21
22   /**
23    * The cckfield plugin manager.
24    *
25    * @var \Drupal\migrate_drupal\Plugin\MigrateCckFieldPluginManagerInterface
26    */
27   protected $cckPluginManager;
28
29   /**
30    * The field plugin manager.
31    *
32    * @var \Drupal\migrate_drupal\Plugin\MigrateFieldPluginManagerInterface
33    */
34   protected $fieldPluginManager;
35
36   /**
37    * The migration object.
38    *
39    * @var \Drupal\migrate\Plugin\MigrationInterface
40    */
41   protected $migration;
42
43   /**
44    * Constructs a FieldType plugin.
45    *
46    * @param array $configuration
47    *   The plugin configuration.
48    * @param string $plugin_id
49    *   The 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.
58    */
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;
64   }
65
66   /**
67    * {@inheritdoc}
68    */
69   public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) {
70     return new static(
71       $configuration,
72       $plugin_id,
73       $plugin_definition,
74       $container->get('plugin.manager.migrate.cckfield'),
75       $container->get('plugin.manager.migrate.field'),
76       $migration
77     );
78   }
79
80   /**
81    * {@inheritdoc}
82    */
83   public function transform($value, MigrateExecutableInterface $migrate_executable, Row $row, $destination_property) {
84     $field_type = is_array($value) ? $value[0] : $value;
85     try {
86       $plugin_id = $this->fieldPluginManager->getPluginIdFromFieldType($field_type, [], $this->migration);
87       return $this->fieldPluginManager->createInstance($plugin_id, [], $this->migration)->getFieldType($row);
88     }
89     catch (PluginNotFoundException $e) {
90       try {
91         $plugin_id = $this->cckPluginManager->getPluginIdFromFieldType($field_type, [], $this->migration);
92         return $this->cckPluginManager->createInstance($plugin_id, [], $this->migration)->getFieldType($row);
93       }
94       catch (PluginNotFoundException $e) {
95         return parent::transform($value, $migrate_executable, $row, $destination_property);
96       }
97     }
98   }
99
100 }