3 namespace Drupal\system\Plugin\migrate\destination\d7;
5 use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
6 use Drupal\Core\Config\ConfigFactoryInterface;
7 use Drupal\migrate\Plugin\MigrationInterface;
8 use Drupal\migrate\Row;
9 use Drupal\migrate\Plugin\migrate\destination\DestinationBase;
10 use Symfony\Component\DependencyInjection\ContainerInterface;
13 * Persist theme settings to the config system.
15 * @MigrateDestination(
16 * id = "d7_theme_settings"
19 class ThemeSettings extends DestinationBase implements ContainerFactoryPluginInterface {
22 * The configuration factory.
24 * @var \Drupal\Core\Config\ConfigFactoryInterface
26 protected $configFactory;
29 * Constructs a theme settings destination object.
31 * @param array $configuration
32 * Plugin configuration.
33 * @param string $plugin_id
35 * @param mixed $plugin_definition
36 * The plugin definition.
37 * @param \Drupal\migrate\Plugin\MigrationInterface $migration
38 * The current migration.
39 * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
40 * The configuration factory.
42 public function __construct(array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration, ConfigFactoryInterface $config_factory) {
43 parent::__construct($configuration, $plugin_id, $plugin_definition, $migration);
44 $this->configFactory = $config_factory;
50 public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) {
56 $container->get('config.factory')
63 public function import(Row $row, array $old_destination_id_values = []) {
65 $config = $this->configFactory->getEditable($row->getDestinationProperty('configuration_name'));
66 $theme_settings = $row->getDestination();
67 // Remove keys not in theme settings.
68 unset($theme_settings['configuration_name']);
69 unset($theme_settings['theme_name']);
70 if (isset($theme_settings)) {
71 theme_settings_convert_to_config($theme_settings, $config);
81 public function getIds() {
82 $ids['name']['type'] = 'string';
89 public function fields(MigrationInterface $migration = NULL) {
90 // Theme settings vary by theme, so no specific fields are defined.