languageManager = $language_manager; $this->configFactory = $config_factory; $this->fieldTypePluginManager = $field_type_plugin_manager; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) { $entity_type_id = static::getEntityTypeId($plugin_id); return new static( $configuration, $plugin_id, $plugin_definition, $migration, $container->get('entity.manager')->getStorage($entity_type_id), array_keys($container->get('entity.manager')->getBundleInfo($entity_type_id)), $container->get('language_manager'), $container->get('config.factory'), $container->get('plugin.manager.field.field_type') ); } /** * {@inheritdoc} */ public function calculateDependencies() { $this->dependencies = parent::calculateDependencies(); // Add a dependency on the module that provides the field type using the // source plugin configuration. $source_configuration = $this->migration->getSourceConfiguration(); if (isset($source_configuration['constants']['type'])) { $field_type = $this->fieldTypePluginManager->getDefinition($source_configuration['constants']['type']); $this->addDependency('module', $field_type['provider']); } return $this->dependencies; } /** * {@inheritdoc} */ protected static function getEntityTypeId($plugin_id) { return 'field_storage_config'; } }