Updated to Drupal 8.6.4, which is PHP 7.3 friendly. Also updated HTMLaw library....
[yaffs-website] / web / core / modules / system / src / Plugin / migrate / destination / d7 / ThemeSettings.php
1 <?php
2
3 namespace Drupal\system\Plugin\migrate\destination\d7;
4
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;
11
12 /**
13  * Persist theme settings to the config system.
14  *
15  * @MigrateDestination(
16  *   id = "d7_theme_settings"
17  * )
18  */
19 class ThemeSettings extends DestinationBase implements ContainerFactoryPluginInterface {
20
21   /**
22    * The configuration factory.
23    *
24    * @var \Drupal\Core\Config\ConfigFactoryInterface
25    */
26   protected $configFactory;
27
28   /**
29    * Constructs a theme settings destination object.
30    *
31    * @param array $configuration
32    *   Plugin configuration.
33    * @param string $plugin_id
34    *   The 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.
41    */
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;
45   }
46
47   /**
48    * {@inheritdoc}
49    */
50   public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition, MigrationInterface $migration = NULL) {
51     return new static(
52       $configuration,
53       $plugin_id,
54       $plugin_definition,
55       $migration,
56       $container->get('config.factory')
57     );
58   }
59
60   /**
61    * {@inheritdoc}
62    */
63   public function import(Row $row, array $old_destination_id_values = []) {
64     $imported = FALSE;
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);
72       $config->save();
73       $imported = TRUE;
74     }
75     return $imported;
76   }
77
78   /**
79    * {@inheritdoc}
80    */
81   public function getIds() {
82     $ids['name']['type'] = 'string';
83     return $ids;
84   }
85
86   /**
87    * {@inheritdoc}
88    */
89   public function fields(MigrationInterface $migration = NULL) {
90     // Theme settings vary by theme, so no specific fields are defined.
91     return [];
92   }
93
94 }