Loading core/core.services.yml +2 −0 Original line number Diff line number Diff line Loading @@ -409,6 +409,8 @@ services: - { name: service_collector, tag: 'config.factory.override', call: addOverride } arguments: ['@config.storage', '@event_dispatcher', '@config.typed'] Drupal\Core\Config\ConfigFactoryInterface: '@config.factory' Drupal\Core\Config\ConfigImporterFactory: autowire: true config.importer_subscriber: class: Drupal\Core\Config\Importer\FinalMissingContentSubscriber config.installer: Loading core/includes/install.core.inc +3 −27 Original line number Diff line number Diff line Loading @@ -8,8 +8,8 @@ use Drupal\Component\Utility\UrlHelper; use Drupal\Core\Batch\BatchBuilder; use Drupal\Core\Cache\NullBackend; use Drupal\Core\Config\ConfigImporter; use Drupal\Core\Config\ConfigImporterException; use Drupal\Core\Config\ConfigImporterFactory; use Drupal\Core\Config\Importer\ConfigImporterBatch; use Drupal\Core\Config\FileStorage; use Drupal\Core\Config\StorageComparer; Loading Loading @@ -2389,19 +2389,7 @@ function install_config_import_batch() { // Create the storage comparer and the config importer. $storage_comparer = new StorageComparer($sync, \Drupal::service('config.storage')); $storage_comparer->createChangelist(); $config_importer = new ConfigImporter( $storage_comparer, \Drupal::service('event_dispatcher'), \Drupal::service('config.manager'), \Drupal::service('lock.persistent'), \Drupal::service('config.typed'), \Drupal::service('module_handler'), \Drupal::service('module_installer'), \Drupal::service('theme_handler'), \Drupal::service('string_translation'), \Drupal::service('extension.list.module'), \Drupal::service('extension.list.theme') ); $config_importer = \Drupal::service(ConfigImporterFactory::class)->get($storage_comparer); try { $sync_steps = $config_importer->initialize(); Loading Loading @@ -2463,19 +2451,7 @@ function install_config_revert_install_changes(): void { $storage_comparer = new StorageComparer(\Drupal::service('config.storage.sync'), \Drupal::service('config.storage')); $storage_comparer->createChangelist(); if ($storage_comparer->hasChanges()) { $config_importer = new ConfigImporter( $storage_comparer, \Drupal::service('event_dispatcher'), \Drupal::service('config.manager'), \Drupal::service('lock.persistent'), \Drupal::service('config.typed'), \Drupal::service('module_handler'), \Drupal::service('module_installer'), \Drupal::service('theme_handler'), \Drupal::service('string_translation'), \Drupal::service('extension.list.module'), \Drupal::service('extension.list.theme') ); $config_importer = \Drupal::service(ConfigImporterFactory::class)->get($storage_comparer); try { $config_importer->import(); } Loading core/lib/Drupal/Core/Config/ConfigImporterFactory.php 0 → 100644 +88 −0 Original line number Diff line number Diff line <?php namespace Drupal\Core\Config; use Drupal\Core\Extension\ModuleExtensionList; use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Extension\ModuleInstallerInterface; use Drupal\Core\Extension\ThemeExtensionList; use Drupal\Core\Extension\ThemeHandlerInterface; use Drupal\Core\Lock\LockBackendInterface; use Drupal\Core\StringTranslation\TranslationInterface; use Symfony\Component\DependencyInjection\Attribute\Autowire; use Symfony\Component\EventDispatcher\EventDispatcherInterface; /** * Factory class to create config importer objects. * * This class is declared as final because the ConfigImporter class is not * intended to be swappable. */ final class ConfigImporterFactory { /** * Creates a ConfigImporterFactory instance. * * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $eventDispatcher * The event dispatcher service. * @param \Drupal\Core\Config\ConfigManagerInterface $configManager * The config manager. * @param \Drupal\Core\Lock\LockBackendInterface $lock * The lock backend to prevent multiple imports occurring at the same time. * @param \Drupal\Core\Config\TypedConfigManagerInterface $typedConfigManager * The typed config manager. * @param \Drupal\Core\Extension\ModuleHandlerInterface $moduleHandler * The module handler. * @param \Drupal\Core\Extension\ModuleInstallerInterface $moduleInstaller * The module installer service. * @param \Drupal\Core\Extension\ThemeHandlerInterface $themeHandler * The theme handler service. * @param \Drupal\Core\StringTranslation\TranslationManager $stringTranslation * The string translation service. * @param \Drupal\Core\Extension\ModuleExtensionList $moduleExtensionList * The module extension list service. * @param \Drupal\Core\Extension\ThemeExtensionList $themeExtensionList * The theme extension list service. */ public function __construct( protected EventDispatcherInterface $eventDispatcher, protected ConfigManagerInterface $configManager, #[Autowire(service: 'lock.persistent')] protected LockBackendInterface $lock, protected TypedConfigManagerInterface $typedConfigManager, protected ModuleHandlerInterface $moduleHandler, protected ModuleInstallerInterface $moduleInstaller, protected ThemeHandlerInterface $themeHandler, protected TranslationInterface $stringTranslation, protected ModuleExtensionList $moduleExtensionList, protected ThemeExtensionList $themeExtensionList, ) {} /** * Creates a ConfigImporter instance. * * @param \Drupal\Core\Config\StorageComparer $storage_comparer * The storage comparer object. The type is the class and not * StorageComparerInterface because that is due to be removed: see * https://www.drupal.org/project/drupal/issues/3410037. * * @return \Drupal\Core\Config\ConfigImporter * A config importer instance. */ public function get(StorageComparer $storage_comparer): ConfigImporter { return new ConfigImporter( $storage_comparer, $this->eventDispatcher, $this->configManager, $this->lock, $this->typedConfigManager, $this->moduleHandler, $this->moduleInstaller, $this->themeHandler, $this->stringTranslation, $this->moduleExtensionList, $this->themeExtensionList, ); } } core/modules/config/src/Form/ConfigSingleImportForm.php +6 −60 Original line number Diff line number Diff line Loading @@ -5,28 +5,19 @@ use Drupal\Component\Serialization\Exception\InvalidDataTypeException; use Drupal\config\StorageReplaceDataWrapper; use Drupal\Core\Batch\BatchBuilder; use Drupal\Core\Config\ConfigImporter; use Drupal\Core\Config\ConfigImporterException; use Drupal\Core\Config\ConfigManagerInterface; use Drupal\Core\Config\ConfigImporterFactory; use Drupal\Core\Config\Entity\ConfigEntityInterface; use Drupal\Core\Config\Importer\ConfigImporterBatch; use Drupal\Core\Config\StorageComparer; use Drupal\Core\Config\StorageInterface; use Drupal\Core\Config\TypedConfigManagerInterface; use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Extension\ModuleExtensionList; use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Extension\ModuleInstallerInterface; use Drupal\Core\Extension\ThemeExtensionList; use Drupal\Core\Extension\ThemeHandlerInterface; use Drupal\Core\Form\ConfirmFormBase; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Lock\LockBackendInterface; use Drupal\Core\Render\RendererInterface; use Drupal\Core\Serialization\Yaml; use Drupal\Core\Url; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; /** * Provides a form for importing a single configuration file. Loading Loading @@ -58,39 +49,14 @@ class ConfigSingleImportForm extends ConfirmFormBase { * The config storage. * @param \Drupal\Core\Render\RendererInterface $renderer * The renderer service. * @param \Symfony\Contracts\EventDispatcher\EventDispatcherInterface $eventDispatcher * The event dispatcher used to notify subscribers of config import events. * @param \Drupal\Core\Config\ConfigManagerInterface $configManager * The configuration manager. * @param \Drupal\Core\Lock\LockBackendInterface $lock * The lock backend to ensure multiple imports do not occur at the same * time. * @param \Drupal\Core\Config\TypedConfigManagerInterface $typedConfigManager * The typed configuration manager. * @param \Drupal\Core\Extension\ModuleHandlerInterface $moduleHandler * The module handler. * @param \Drupal\Core\Extension\ModuleInstallerInterface $moduleInstaller * The module installer. * @param \Drupal\Core\Extension\ThemeHandlerInterface $themeHandler * The theme handler. * @param \Drupal\Core\Extension\ModuleExtensionList $moduleExtensionList * The module extension list. * @param \Drupal\Core\Extension\ThemeExtensionList $themeExtensionList * The theme extension list. * @param \Drupal\Core\Config\ConfigImporterFactory $configImporterFactory * The config importer factory. */ public function __construct( protected EntityTypeManagerInterface $entityTypeManager, protected StorageInterface $configStorage, protected RendererInterface $renderer, protected EventDispatcherInterface $eventDispatcher, protected ConfigManagerInterface $configManager, protected LockBackendInterface $lock, protected TypedConfigManagerInterface $typedConfigManager, protected ModuleHandlerInterface $moduleHandler, protected ModuleInstallerInterface $moduleInstaller, protected ThemeHandlerInterface $themeHandler, protected ModuleExtensionList $moduleExtensionList, protected ThemeExtensionList $themeExtensionList, protected ConfigImporterFactory $configImporterFactory, ) { } Loading @@ -102,15 +68,7 @@ public static function create(ContainerInterface $container) { $container->get('entity_type.manager'), $container->get('config.storage'), $container->get('renderer'), $container->get('event_dispatcher'), $container->get('config.manager'), $container->get('lock.persistent'), $container->get('config.typed'), $container->get('module_handler'), $container->get('module_installer'), $container->get('theme_handler'), $container->get('extension.list.module'), $container->get('extension.list.theme') $container->get(ConfigImporterFactory::class), ); } Loading Loading @@ -288,19 +246,7 @@ public function validateForm(array &$form, FormStateInterface $form_state) { $form_state->setErrorByName('import', $this->t('There are no changes to import.')); } else { $config_importer = new ConfigImporter( $storage_comparer, $this->eventDispatcher, $this->configManager, $this->lock, $this->typedConfigManager, $this->moduleHandler, $this->moduleInstaller, $this->themeHandler, $this->getStringTranslation(), $this->moduleExtensionList, $this->themeExtensionList ); $config_importer = $this->configImporterFactory->get($storage_comparer); try { $config_importer->validate(); Loading core/modules/config/src/Form/ConfigSync.php +6 −59 Original line number Diff line number Diff line Loading @@ -4,24 +4,15 @@ use Drupal\Core\Batch\BatchBuilder; use Drupal\Core\Config\ConfigImporterException; use Drupal\Core\Config\ConfigImporter; use Drupal\Core\Config\ConfigImporterFactory; use Drupal\Core\Config\Importer\ConfigImporterBatch; use Drupal\Core\Config\ImportStorageTransformer; use Drupal\Core\Config\TypedConfigManagerInterface; use Drupal\Core\Extension\ModuleExtensionList; use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Extension\ModuleInstallerInterface; use Drupal\Core\Extension\ThemeExtensionList; use Drupal\Core\Extension\ThemeHandlerInterface; use Drupal\Core\Config\ConfigManagerInterface; use Drupal\Core\Form\FormBase; use Drupal\Core\Config\StorageInterface; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Lock\LockBackendInterface; use Drupal\Core\Config\StorageComparer; use Drupal\Core\Render\RendererInterface; use Drupal\Core\Url; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; use Symfony\Component\DependencyInjection\ContainerInterface; /** Loading @@ -40,44 +31,20 @@ class ConfigSync extends FormBase { * The target storage. * @param \Drupal\Core\Config\StorageInterface $snapshotStorage * The snapshot storage. * @param \Drupal\Core\Lock\LockBackendInterface $lock * The lock object. * @param \Symfony\Contracts\EventDispatcher\EventDispatcherInterface $eventDispatcher * Event dispatcher. * @param \Drupal\Core\Config\ConfigManagerInterface $configManager * Configuration manager. * @param \Drupal\Core\Config\TypedConfigManagerInterface $typedConfigManager * The typed configuration manager. * @param \Drupal\Core\Extension\ModuleHandlerInterface $moduleHandler * The module handler. * @param \Drupal\Core\Extension\ModuleInstallerInterface $moduleInstaller * The module installer. * @param \Drupal\Core\Extension\ThemeHandlerInterface $themeHandler * The theme handler. * @param \Drupal\Core\Render\RendererInterface $renderer * The renderer. * @param \Drupal\Core\Extension\ModuleExtensionList $moduleExtensionList * The module extension list. * @param \Drupal\Core\Config\ImportStorageTransformer $importTransformer * The import transformer service. * @param \Drupal\Core\Extension\ThemeExtensionList $themeExtensionList * The theme extension list. * @param \Drupal\Core\Config\ConfigImporterFactory $configImporterFactory * The config importer factory. */ public function __construct( protected StorageInterface $syncStorage, protected StorageInterface $activeStorage, protected StorageInterface $snapshotStorage, protected LockBackendInterface $lock, protected EventDispatcherInterface $eventDispatcher, protected ConfigManagerInterface $configManager, protected TypedConfigManagerInterface $typedConfigManager, protected ModuleHandlerInterface $moduleHandler, protected ModuleInstallerInterface $moduleInstaller, protected ThemeHandlerInterface $themeHandler, protected RendererInterface $renderer, protected ModuleExtensionList $moduleExtensionList, protected ImportStorageTransformer $importTransformer, protected ThemeExtensionList $themeExtensionList, protected ConfigImporterFactory $configImporterFactory, ) { } Loading @@ -89,17 +56,9 @@ public static function create(ContainerInterface $container) { $container->get('config.storage.sync'), $container->get('config.storage'), $container->get('config.storage.snapshot'), $container->get('lock.persistent'), $container->get('event_dispatcher'), $container->get('config.manager'), $container->get('config.typed'), $container->get('module_handler'), $container->get('module_installer'), $container->get('theme_handler'), $container->get('renderer'), $container->get('extension.list.module'), $container->get('config.import_transformer'), $container->get('extension.list.theme') $container->get(ConfigImporterFactory::class), ); } Loading Loading @@ -262,19 +221,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { $config_importer = new ConfigImporter( $form_state->get('storage_comparer'), $this->eventDispatcher, $this->configManager, $this->lock, $this->typedConfigManager, $this->moduleHandler, $this->moduleInstaller, $this->themeHandler, $this->getStringTranslation(), $this->moduleExtensionList, $this->themeExtensionList ); $config_importer = $this->configImporterFactory->get($form_state->get('storage_comparer')); if ($config_importer->alreadyImporting()) { $this->messenger()->addStatus($this->t('Another request may be synchronizing configuration already.')); } Loading Loading
core/core.services.yml +2 −0 Original line number Diff line number Diff line Loading @@ -409,6 +409,8 @@ services: - { name: service_collector, tag: 'config.factory.override', call: addOverride } arguments: ['@config.storage', '@event_dispatcher', '@config.typed'] Drupal\Core\Config\ConfigFactoryInterface: '@config.factory' Drupal\Core\Config\ConfigImporterFactory: autowire: true config.importer_subscriber: class: Drupal\Core\Config\Importer\FinalMissingContentSubscriber config.installer: Loading
core/includes/install.core.inc +3 −27 Original line number Diff line number Diff line Loading @@ -8,8 +8,8 @@ use Drupal\Component\Utility\UrlHelper; use Drupal\Core\Batch\BatchBuilder; use Drupal\Core\Cache\NullBackend; use Drupal\Core\Config\ConfigImporter; use Drupal\Core\Config\ConfigImporterException; use Drupal\Core\Config\ConfigImporterFactory; use Drupal\Core\Config\Importer\ConfigImporterBatch; use Drupal\Core\Config\FileStorage; use Drupal\Core\Config\StorageComparer; Loading Loading @@ -2389,19 +2389,7 @@ function install_config_import_batch() { // Create the storage comparer and the config importer. $storage_comparer = new StorageComparer($sync, \Drupal::service('config.storage')); $storage_comparer->createChangelist(); $config_importer = new ConfigImporter( $storage_comparer, \Drupal::service('event_dispatcher'), \Drupal::service('config.manager'), \Drupal::service('lock.persistent'), \Drupal::service('config.typed'), \Drupal::service('module_handler'), \Drupal::service('module_installer'), \Drupal::service('theme_handler'), \Drupal::service('string_translation'), \Drupal::service('extension.list.module'), \Drupal::service('extension.list.theme') ); $config_importer = \Drupal::service(ConfigImporterFactory::class)->get($storage_comparer); try { $sync_steps = $config_importer->initialize(); Loading Loading @@ -2463,19 +2451,7 @@ function install_config_revert_install_changes(): void { $storage_comparer = new StorageComparer(\Drupal::service('config.storage.sync'), \Drupal::service('config.storage')); $storage_comparer->createChangelist(); if ($storage_comparer->hasChanges()) { $config_importer = new ConfigImporter( $storage_comparer, \Drupal::service('event_dispatcher'), \Drupal::service('config.manager'), \Drupal::service('lock.persistent'), \Drupal::service('config.typed'), \Drupal::service('module_handler'), \Drupal::service('module_installer'), \Drupal::service('theme_handler'), \Drupal::service('string_translation'), \Drupal::service('extension.list.module'), \Drupal::service('extension.list.theme') ); $config_importer = \Drupal::service(ConfigImporterFactory::class)->get($storage_comparer); try { $config_importer->import(); } Loading
core/lib/Drupal/Core/Config/ConfigImporterFactory.php 0 → 100644 +88 −0 Original line number Diff line number Diff line <?php namespace Drupal\Core\Config; use Drupal\Core\Extension\ModuleExtensionList; use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Extension\ModuleInstallerInterface; use Drupal\Core\Extension\ThemeExtensionList; use Drupal\Core\Extension\ThemeHandlerInterface; use Drupal\Core\Lock\LockBackendInterface; use Drupal\Core\StringTranslation\TranslationInterface; use Symfony\Component\DependencyInjection\Attribute\Autowire; use Symfony\Component\EventDispatcher\EventDispatcherInterface; /** * Factory class to create config importer objects. * * This class is declared as final because the ConfigImporter class is not * intended to be swappable. */ final class ConfigImporterFactory { /** * Creates a ConfigImporterFactory instance. * * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $eventDispatcher * The event dispatcher service. * @param \Drupal\Core\Config\ConfigManagerInterface $configManager * The config manager. * @param \Drupal\Core\Lock\LockBackendInterface $lock * The lock backend to prevent multiple imports occurring at the same time. * @param \Drupal\Core\Config\TypedConfigManagerInterface $typedConfigManager * The typed config manager. * @param \Drupal\Core\Extension\ModuleHandlerInterface $moduleHandler * The module handler. * @param \Drupal\Core\Extension\ModuleInstallerInterface $moduleInstaller * The module installer service. * @param \Drupal\Core\Extension\ThemeHandlerInterface $themeHandler * The theme handler service. * @param \Drupal\Core\StringTranslation\TranslationManager $stringTranslation * The string translation service. * @param \Drupal\Core\Extension\ModuleExtensionList $moduleExtensionList * The module extension list service. * @param \Drupal\Core\Extension\ThemeExtensionList $themeExtensionList * The theme extension list service. */ public function __construct( protected EventDispatcherInterface $eventDispatcher, protected ConfigManagerInterface $configManager, #[Autowire(service: 'lock.persistent')] protected LockBackendInterface $lock, protected TypedConfigManagerInterface $typedConfigManager, protected ModuleHandlerInterface $moduleHandler, protected ModuleInstallerInterface $moduleInstaller, protected ThemeHandlerInterface $themeHandler, protected TranslationInterface $stringTranslation, protected ModuleExtensionList $moduleExtensionList, protected ThemeExtensionList $themeExtensionList, ) {} /** * Creates a ConfigImporter instance. * * @param \Drupal\Core\Config\StorageComparer $storage_comparer * The storage comparer object. The type is the class and not * StorageComparerInterface because that is due to be removed: see * https://www.drupal.org/project/drupal/issues/3410037. * * @return \Drupal\Core\Config\ConfigImporter * A config importer instance. */ public function get(StorageComparer $storage_comparer): ConfigImporter { return new ConfigImporter( $storage_comparer, $this->eventDispatcher, $this->configManager, $this->lock, $this->typedConfigManager, $this->moduleHandler, $this->moduleInstaller, $this->themeHandler, $this->stringTranslation, $this->moduleExtensionList, $this->themeExtensionList, ); } }
core/modules/config/src/Form/ConfigSingleImportForm.php +6 −60 Original line number Diff line number Diff line Loading @@ -5,28 +5,19 @@ use Drupal\Component\Serialization\Exception\InvalidDataTypeException; use Drupal\config\StorageReplaceDataWrapper; use Drupal\Core\Batch\BatchBuilder; use Drupal\Core\Config\ConfigImporter; use Drupal\Core\Config\ConfigImporterException; use Drupal\Core\Config\ConfigManagerInterface; use Drupal\Core\Config\ConfigImporterFactory; use Drupal\Core\Config\Entity\ConfigEntityInterface; use Drupal\Core\Config\Importer\ConfigImporterBatch; use Drupal\Core\Config\StorageComparer; use Drupal\Core\Config\StorageInterface; use Drupal\Core\Config\TypedConfigManagerInterface; use Drupal\Core\Entity\EntityTypeManagerInterface; use Drupal\Core\Extension\ModuleExtensionList; use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Extension\ModuleInstallerInterface; use Drupal\Core\Extension\ThemeExtensionList; use Drupal\Core\Extension\ThemeHandlerInterface; use Drupal\Core\Form\ConfirmFormBase; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Lock\LockBackendInterface; use Drupal\Core\Render\RendererInterface; use Drupal\Core\Serialization\Yaml; use Drupal\Core\Url; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; /** * Provides a form for importing a single configuration file. Loading Loading @@ -58,39 +49,14 @@ class ConfigSingleImportForm extends ConfirmFormBase { * The config storage. * @param \Drupal\Core\Render\RendererInterface $renderer * The renderer service. * @param \Symfony\Contracts\EventDispatcher\EventDispatcherInterface $eventDispatcher * The event dispatcher used to notify subscribers of config import events. * @param \Drupal\Core\Config\ConfigManagerInterface $configManager * The configuration manager. * @param \Drupal\Core\Lock\LockBackendInterface $lock * The lock backend to ensure multiple imports do not occur at the same * time. * @param \Drupal\Core\Config\TypedConfigManagerInterface $typedConfigManager * The typed configuration manager. * @param \Drupal\Core\Extension\ModuleHandlerInterface $moduleHandler * The module handler. * @param \Drupal\Core\Extension\ModuleInstallerInterface $moduleInstaller * The module installer. * @param \Drupal\Core\Extension\ThemeHandlerInterface $themeHandler * The theme handler. * @param \Drupal\Core\Extension\ModuleExtensionList $moduleExtensionList * The module extension list. * @param \Drupal\Core\Extension\ThemeExtensionList $themeExtensionList * The theme extension list. * @param \Drupal\Core\Config\ConfigImporterFactory $configImporterFactory * The config importer factory. */ public function __construct( protected EntityTypeManagerInterface $entityTypeManager, protected StorageInterface $configStorage, protected RendererInterface $renderer, protected EventDispatcherInterface $eventDispatcher, protected ConfigManagerInterface $configManager, protected LockBackendInterface $lock, protected TypedConfigManagerInterface $typedConfigManager, protected ModuleHandlerInterface $moduleHandler, protected ModuleInstallerInterface $moduleInstaller, protected ThemeHandlerInterface $themeHandler, protected ModuleExtensionList $moduleExtensionList, protected ThemeExtensionList $themeExtensionList, protected ConfigImporterFactory $configImporterFactory, ) { } Loading @@ -102,15 +68,7 @@ public static function create(ContainerInterface $container) { $container->get('entity_type.manager'), $container->get('config.storage'), $container->get('renderer'), $container->get('event_dispatcher'), $container->get('config.manager'), $container->get('lock.persistent'), $container->get('config.typed'), $container->get('module_handler'), $container->get('module_installer'), $container->get('theme_handler'), $container->get('extension.list.module'), $container->get('extension.list.theme') $container->get(ConfigImporterFactory::class), ); } Loading Loading @@ -288,19 +246,7 @@ public function validateForm(array &$form, FormStateInterface $form_state) { $form_state->setErrorByName('import', $this->t('There are no changes to import.')); } else { $config_importer = new ConfigImporter( $storage_comparer, $this->eventDispatcher, $this->configManager, $this->lock, $this->typedConfigManager, $this->moduleHandler, $this->moduleInstaller, $this->themeHandler, $this->getStringTranslation(), $this->moduleExtensionList, $this->themeExtensionList ); $config_importer = $this->configImporterFactory->get($storage_comparer); try { $config_importer->validate(); Loading
core/modules/config/src/Form/ConfigSync.php +6 −59 Original line number Diff line number Diff line Loading @@ -4,24 +4,15 @@ use Drupal\Core\Batch\BatchBuilder; use Drupal\Core\Config\ConfigImporterException; use Drupal\Core\Config\ConfigImporter; use Drupal\Core\Config\ConfigImporterFactory; use Drupal\Core\Config\Importer\ConfigImporterBatch; use Drupal\Core\Config\ImportStorageTransformer; use Drupal\Core\Config\TypedConfigManagerInterface; use Drupal\Core\Extension\ModuleExtensionList; use Drupal\Core\Extension\ModuleHandlerInterface; use Drupal\Core\Extension\ModuleInstallerInterface; use Drupal\Core\Extension\ThemeExtensionList; use Drupal\Core\Extension\ThemeHandlerInterface; use Drupal\Core\Config\ConfigManagerInterface; use Drupal\Core\Form\FormBase; use Drupal\Core\Config\StorageInterface; use Drupal\Core\Form\FormStateInterface; use Drupal\Core\Lock\LockBackendInterface; use Drupal\Core\Config\StorageComparer; use Drupal\Core\Render\RendererInterface; use Drupal\Core\Url; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; use Symfony\Component\DependencyInjection\ContainerInterface; /** Loading @@ -40,44 +31,20 @@ class ConfigSync extends FormBase { * The target storage. * @param \Drupal\Core\Config\StorageInterface $snapshotStorage * The snapshot storage. * @param \Drupal\Core\Lock\LockBackendInterface $lock * The lock object. * @param \Symfony\Contracts\EventDispatcher\EventDispatcherInterface $eventDispatcher * Event dispatcher. * @param \Drupal\Core\Config\ConfigManagerInterface $configManager * Configuration manager. * @param \Drupal\Core\Config\TypedConfigManagerInterface $typedConfigManager * The typed configuration manager. * @param \Drupal\Core\Extension\ModuleHandlerInterface $moduleHandler * The module handler. * @param \Drupal\Core\Extension\ModuleInstallerInterface $moduleInstaller * The module installer. * @param \Drupal\Core\Extension\ThemeHandlerInterface $themeHandler * The theme handler. * @param \Drupal\Core\Render\RendererInterface $renderer * The renderer. * @param \Drupal\Core\Extension\ModuleExtensionList $moduleExtensionList * The module extension list. * @param \Drupal\Core\Config\ImportStorageTransformer $importTransformer * The import transformer service. * @param \Drupal\Core\Extension\ThemeExtensionList $themeExtensionList * The theme extension list. * @param \Drupal\Core\Config\ConfigImporterFactory $configImporterFactory * The config importer factory. */ public function __construct( protected StorageInterface $syncStorage, protected StorageInterface $activeStorage, protected StorageInterface $snapshotStorage, protected LockBackendInterface $lock, protected EventDispatcherInterface $eventDispatcher, protected ConfigManagerInterface $configManager, protected TypedConfigManagerInterface $typedConfigManager, protected ModuleHandlerInterface $moduleHandler, protected ModuleInstallerInterface $moduleInstaller, protected ThemeHandlerInterface $themeHandler, protected RendererInterface $renderer, protected ModuleExtensionList $moduleExtensionList, protected ImportStorageTransformer $importTransformer, protected ThemeExtensionList $themeExtensionList, protected ConfigImporterFactory $configImporterFactory, ) { } Loading @@ -89,17 +56,9 @@ public static function create(ContainerInterface $container) { $container->get('config.storage.sync'), $container->get('config.storage'), $container->get('config.storage.snapshot'), $container->get('lock.persistent'), $container->get('event_dispatcher'), $container->get('config.manager'), $container->get('config.typed'), $container->get('module_handler'), $container->get('module_installer'), $container->get('theme_handler'), $container->get('renderer'), $container->get('extension.list.module'), $container->get('config.import_transformer'), $container->get('extension.list.theme') $container->get(ConfigImporterFactory::class), ); } Loading Loading @@ -262,19 +221,7 @@ public function buildForm(array $form, FormStateInterface $form_state) { * {@inheritdoc} */ public function submitForm(array &$form, FormStateInterface $form_state) { $config_importer = new ConfigImporter( $form_state->get('storage_comparer'), $this->eventDispatcher, $this->configManager, $this->lock, $this->typedConfigManager, $this->moduleHandler, $this->moduleInstaller, $this->themeHandler, $this->getStringTranslation(), $this->moduleExtensionList, $this->themeExtensionList ); $config_importer = $this->configImporterFactory->get($form_state->get('storage_comparer')); if ($config_importer->alreadyImporting()) { $this->messenger()->addStatus($this->t('Another request may be synchronizing configuration already.')); } Loading