diff --git a/core/core.services.yml b/core/core.services.yml index 5c38b4b2ebcc9a784c812acf0b5135f62180dd3b..f00c4502e3f443fdff025c71ffb7cefe5d74782d 100644 --- a/core/core.services.yml +++ b/core/core.services.yml @@ -519,10 +519,6 @@ services: tags: - { name: event_subscriber } arguments: ['@module_handler'] - config_global_override_subscriber: - class: Drupal\Core\EventSubscriber\ConfigGlobalOverrideSubscriber - tags: - - { name: event_subscriber } config_import_subscriber: class: Drupal\Core\EventSubscriber\ConfigImportSubscriber tags: diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc index 0259cec80db4979c2d772d492f5d06c25c34c2fd..24d3269407c5f7365fec742e6a4bc5260c8cf05e 100644 --- a/core/includes/install.core.inc +++ b/core/includes/install.core.inc @@ -482,7 +482,7 @@ function install_begin_request(&$install_state) { // ConfigFactory to try to load language override configuration which is not // supported by \Drupal\Core\Config\InstallStorage since loading a // non-existing file would throw an exception. - $container->get('config.factory')->disableOverrides(); + $container->get('config.factory')->setOverrideState(FALSE); } // Set the request in the kernel to the new created Request above diff --git a/core/includes/menu.inc b/core/includes/menu.inc index c3a2162dfbc6e753b28e10ff099a86a009f6ac97..d54fe068cf1ae4514f18de8ca92adb5208716a77 100644 --- a/core/includes/menu.inc +++ b/core/includes/menu.inc @@ -2556,7 +2556,8 @@ function menu_router_rebuild() { function menu_router_build($save = FALSE) { // Ensure that all configuration used to build the menu items are loaded // without overrides. - \Drupal::configFactory()->disableOverrides(); + $old_state = \Drupal::configFactory()->getOverrideState(); + \Drupal::configFactory()->setOverrideState(FALSE); // We need to manually call each module so that we can know which module // a given item came from. $callbacks = array(); @@ -2571,8 +2572,7 @@ function menu_router_build($save = FALSE) { } // Alter the menu as defined in modules, keys are like user/%user. drupal_alter('menu', $callbacks); - // Re-enable configuration overrides. - \Drupal::configFactory()->enableOverrides(); + \Drupal::configFactory()->setOverrideState($old_state); foreach ($callbacks as $path => $router_item) { // If the menu item is a default local task and incorrectly references a // route, remove it. diff --git a/core/lib/Drupal/Core/Config/ConfigFactory.php b/core/lib/Drupal/Core/Config/ConfigFactory.php index 9e0c3ffa1b66b7a9bb2be32bb836028a587e9e6e..1fca06558e012758d0b0e6c1bc9d98ab3c05e224 100644 --- a/core/lib/Drupal/Core/Config/ConfigFactory.php +++ b/core/lib/Drupal/Core/Config/ConfigFactory.php @@ -92,25 +92,27 @@ public function __construct(StorageInterface $storage, EventDispatcherInterface } /** - * Disable overrides when loading configuration objects. + * Set the override state. + * + * @param bool $state + * TRUE if overrides should be applied, FALSE otherwise. * * @return \Drupal\Core\Config\ConfigFactory * The config factory object. */ - public function disableOverrides() { - $this->useOverrides = FALSE; + public function setOverrideState($state) { + $this->useOverrides = $state; return $this; } /** - * Enable overrides when loading configuration objects. + * Get the override state. * - * @return \Drupal\Core\Config\ConfigFactory - * The config factory object. + * @return bool + * TRUE if overrides are applied, FALSE otherwise. */ - public function enableOverrides() { - $this->useOverrides = TRUE; - return $this; + public function getOverrideState() { + return $this->useOverrides; } /** diff --git a/core/lib/Drupal/Core/Config/ConfigInstaller.php b/core/lib/Drupal/Core/Config/ConfigInstaller.php index dc4f3b928cd8ddc5b40eec67e13ad59d489bd4a7..20d45fa4a2ed57b07e2b44ae2cec1770a03fee93 100644 --- a/core/lib/Drupal/Core/Config/ConfigInstaller.php +++ b/core/lib/Drupal/Core/Config/ConfigInstaller.php @@ -101,7 +101,8 @@ public function installDefaultConfig($type, $name) { } if (!empty($config_to_install)) { - $this->configFactory->disableOverrides(); + $old_state = $this->configFactory->getOverrideState(); + $this->configFactory->setOverrideState(FALSE); foreach ($config_to_install as $name) { // Only import new config. if ($this->activeStorage->exists($name)) { @@ -123,7 +124,7 @@ public function installDefaultConfig($type, $name) { $new_config->save(); } } - $this->configFactory->enableOverrides(); + $this->configFactory->setOverrideState($old_state); } } diff --git a/core/lib/Drupal/Core/EventSubscriber/ConfigGlobalOverrideSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/ConfigGlobalOverrideSubscriber.php deleted file mode 100644 index 02bf2cbfad7894f1a75488eeab562e2ef8984f63..0000000000000000000000000000000000000000 --- a/core/lib/Drupal/Core/EventSubscriber/ConfigGlobalOverrideSubscriber.php +++ /dev/null @@ -1,42 +0,0 @@ -<?php - -/** - * @file - * Contains \Drupal\Core\EventSubscriber\ConfigGlobalOverrideSubscriber. - */ - -namespace Drupal\Core\EventSubscriber; - -use Drupal\Core\Config\Config; -use Drupal\Core\Config\ConfigEvent; -use Symfony\Component\EventDispatcher\EventSubscriberInterface; - -/** - * Defines a configuration global override for contexts. - */ -class ConfigGlobalOverrideSubscriber implements EventSubscriberInterface { - - /** - * Overrides configuration values with values in global $conf variable. - * - * @param \Drupal\Core\Config\ConfigEvent $event - * The Event to process. - */ - public function configInit(ConfigEvent $event) { - global $conf; - - $config = $event->getConfig(); - if (isset($conf[$config->getName()])) { - $config->setOverride($conf[$config->getName()]); - } - } - - /** - * Implements EventSubscriberInterface::getSubscribedEvents(). - */ - static function getSubscribedEvents() { - $events['config.init'][] = array('configInit', 30); - return $events; - } - -} diff --git a/core/lib/Drupal/Core/Form/ConfigFormBase.php b/core/lib/Drupal/Core/Form/ConfigFormBase.php index 91a91d5d54baaec355d9417dc17018893764f0c4..5a4abb22a07f7961d2f7b6dd23e911a7fc55360f 100644 --- a/core/lib/Drupal/Core/Form/ConfigFormBase.php +++ b/core/lib/Drupal/Core/Form/ConfigFormBase.php @@ -74,9 +74,10 @@ public function submitForm(array &$form, array &$form_state) { * configuration. */ protected function config($name) { - $this->configFactory->disableOverrides(); + $old_state = $this->configFactory->getOverrideState(); + $this->configFactory->setOverrideState(FALSE); $config = $this->configFactory->get($name); - $this->configFactory->enableOverrides(); + $this->configFactory->setOverrideState($old_state); return $config; } } diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigLanguageOverride.php b/core/modules/config/lib/Drupal/config/Tests/ConfigLanguageOverride.php index 2f939507ae8f48516c7414537610b0d4e64857e9..12ff3cd2d9ee78638e167a2f30370aae1d097eda 100644 --- a/core/modules/config/lib/Drupal/config/Tests/ConfigLanguageOverride.php +++ b/core/modules/config/lib/Drupal/config/Tests/ConfigLanguageOverride.php @@ -82,10 +82,11 @@ function testConfigLanguageOverride() { $config = \Drupal::config('config_test.new'); $this->assertTrue($config->isNew(), 'The configuration object config_test.new is new'); $this->assertIdentical($config->get('language'), 'override'); - \Drupal::configFactory()->disableOverrides(); + $old_state = \Drupal::configFactory()->getOverrideState(); + \Drupal::configFactory()->setOverrideState(FALSE); $config = \Drupal::config('config_test.new'); $this->assertIdentical($config->get('language'), NULL); - \Drupal::configFactory()->enableOverrides(); + \Drupal::configFactory()->setOverrideState($old_state); // Ensure that language configuration overrides can not be overridden. global $conf; diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigModuleOverridesTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigModuleOverridesTest.php index 0d4569374b8365588dadaa937932ce7a1d52cd33..c5c7190c378887e3d05b740c838bdcb242ee402a 100644 --- a/core/modules/config/lib/Drupal/config/Tests/ConfigModuleOverridesTest.php +++ b/core/modules/config/lib/Drupal/config/Tests/ConfigModuleOverridesTest.php @@ -38,25 +38,31 @@ public function testSimpleModuleOverrides() { ->set('slogan', $non_overridden_slogan) ->save(); - $config_factory->disableOverrides(); + $this->assertTrue($config_factory->getOverrideState(), 'By default ConfigFactory has overrides enabled.'); + + $old_state = $config_factory->getOverrideState(); + + $config_factory->setOverrideState(FALSE); + $this->assertFalse($config_factory->getOverrideState(), 'ConfigFactory can disable overrides.'); $this->assertEqual($non_overridden_name, $config_factory->get('system.site')->get('name')); $this->assertEqual($non_overridden_slogan, $config_factory->get('system.site')->get('slogan')); - $config_factory->enableOverrides(); + $config_factory->setOverrideState(TRUE); + $this->assertTrue($config_factory->getOverrideState(), 'ConfigFactory can enable overrides.'); $this->assertEqual($overridden_name, $config_factory->get('system.site')->get('name')); $this->assertEqual($overridden_slogan, $config_factory->get('system.site')->get('slogan')); // Test overrides of completely new configuration objects. In normal runtime // this should only happen for configuration entities as we should not be // creating simple configuration objects on the fly. - $config = \Drupal::config('config_override.new'); + $config = $config_factory->get('config_override.new'); $this->assertTrue($config->isNew(), 'The configuration object config_override.new is new'); $this->assertIdentical($config->get('module'), 'override'); - \Drupal::configFactory()->disableOverrides(); + $config_factory->setOverrideState(FALSE); $config = \Drupal::config('config_override.new'); $this->assertIdentical($config->get('module'), NULL); - \Drupal::configFactory()->enableOverrides(); + $config_factory->setOverrideState($old_state); unset($GLOBALS['config_test_run_module_overrides']); } } diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigOverrideTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigOverrideTest.php index f6f3f46c79e3cd493f00bfe3e12b89b27d75dd13..a5356514535215793b768bd121cd617d829e7a6f 100644 --- a/core/modules/config/lib/Drupal/config/Tests/ConfigOverrideTest.php +++ b/core/modules/config/lib/Drupal/config/Tests/ConfigOverrideTest.php @@ -122,14 +122,15 @@ function testConfOverride() { $config = \Drupal::config('config_test.new'); $this->assertTrue($config->isNew(), 'The configuration object config_test.new is new'); $this->assertIdentical($config->get('key'), 'override'); - \Drupal::configFactory()->disableOverrides(); + $old_state = \Drupal::configFactory()->getOverrideState(); + \Drupal::configFactory()->setOverrideState(FALSE); $config_raw = \Drupal::config('config_test.new'); $this->assertIdentical($config_raw->get('key'), NULL); $config_raw ->set('key', 'raw') ->set('new_key', 'new_value') ->save(); - \Drupal::configFactory()->enableOverrides(); + \Drupal::configFactory()->setOverrideState($old_state); // Ensure override is preserved but all other data has been updated // accordingly. $this->assertIdentical($config->get('key'), 'override'); diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigOverridesPriorityTest.php b/core/modules/config/lib/Drupal/config/Tests/ConfigOverridesPriorityTest.php index 76573765d32c56f308c17d982290dfe661ebb1ec..b0567311252d4fa6a6aed0356e5a30ba014cadf5 100644 --- a/core/modules/config/lib/Drupal/config/Tests/ConfigOverridesPriorityTest.php +++ b/core/modules/config/lib/Drupal/config/Tests/ConfigOverridesPriorityTest.php @@ -92,11 +92,13 @@ public function testOverridePriorities() { $this->assertEqual($language_overridden_mail, $config_factory->get('system.site')->get('mail')); $this->assertEqual(50, $config_factory->get('system.site')->get('weight_select_max')); - $config_factory->disableOverrides(); + $old_state = $config_factory->getOverrideState(); + $config_factory->setOverrideState(FALSE); $this->assertEqual($non_overridden_name, $config_factory->get('system.site')->get('name')); $this->assertEqual($non_overridden_slogan, $config_factory->get('system.site')->get('slogan')); $this->assertEqual($non_overridden_mail, $config_factory->get('system.site')->get('mail')); $this->assertEqual(50, $config_factory->get('system.site')->get('weight_select_max')); + $config_factory->setOverrideState($old_state); unset($GLOBALS['config_test_run_module_overrides']); } diff --git a/core/modules/config_translation/lib/Drupal/config_translation/Form/ConfigTranslationFormBase.php b/core/modules/config_translation/lib/Drupal/config_translation/Form/ConfigTranslationFormBase.php index 9295b81af4a480ae44c275244eb9d522acfbb602..30413add05c8af422b8c3704d40ada5801c7aff8 100644 --- a/core/modules/config_translation/lib/Drupal/config_translation/Form/ConfigTranslationFormBase.php +++ b/core/modules/config_translation/lib/Drupal/config_translation/Form/ConfigTranslationFormBase.php @@ -163,12 +163,13 @@ public function buildForm(array $form, array &$form_state, Request $request = NU $this->language = $language; $this->sourceLanguage = $this->mapper->getLanguageWithFallback(); - // Get base language configuration to display in the form before entering - // into the language context for the form. This avoids repetitively going - // in and out of the language context to get original values later. - $this->configFactory->disableOverrides(); + // Get base language configuration to display in the form before setting the + // language to use for the form. This avoids repetitively settings and + // resetting the language to get original values later. + $old_state = $this->configFactory->getOverrideState(); + $this->configFactory->setOverrideState(FALSE); $this->baseConfigData = $this->mapper->getConfigData(); - $this->configFactory->enableOverrides(); + $this->configFactory->setOverrideState($old_state); // Set the translation target language on the configuration factory. $original_language = $this->configFactory->getLanguage(); @@ -210,7 +211,9 @@ public function submitForm(array &$form, array &$form_state) { $form_values = $form_state['values']['config_names']; // For the form submission handling, use the raw data. - $this->configFactory->disableOverrides(); + $old_state = $this->configFactory->getOverrideState(); + $this->configFactory->setOverrideState(FALSE); + foreach ($this->mapper->getConfigNames() as $name) { // Set configuration values based on form submission and source values. $base_config = $this->config($name); @@ -229,7 +232,7 @@ public function submitForm(array &$form, array &$form_state) { $translation_config->save(); } } - $this->configFactory->enableOverrides(); + $this->configFactory->setOverrideState($old_state); $form_state['redirect_route'] = array( 'route_name' => $this->mapper->getOverviewRoute(), diff --git a/core/modules/locale/lib/Drupal/locale/ParamConverter/LocaleAdminPathConfigEntityConverter.php b/core/modules/locale/lib/Drupal/locale/ParamConverter/LocaleAdminPathConfigEntityConverter.php index 6488eb4733b278d9341d1d805008f0bd4645e1c6..2eca5dda759fd68fd14abb253ae6e74e06a23fb6 100644 --- a/core/modules/locale/lib/Drupal/locale/ParamConverter/LocaleAdminPathConfigEntityConverter.php +++ b/core/modules/locale/lib/Drupal/locale/ParamConverter/LocaleAdminPathConfigEntityConverter.php @@ -55,9 +55,10 @@ public function convert($value, $definition, $name, array $defaults, Request $re $entity_type = substr($definition['type'], strlen('entity:')); if ($storage = $this->entityManager->getStorageController($entity_type)) { // Make sure no overrides are loaded. - $this->configFactory->disableOverrides(); + $old_state = $this->configFactory->getOverrideState(); + $this->configFactory->setOverrideState(FALSE); $entity = $storage->load($value); - $this->configFactory->enableOverrides(); + $this->configFactory->setOverrideState($old_state); return $entity; } } diff --git a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateSystemConfigsTest.php b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateSystemConfigsTest.php index 36b0fa628d8c3ba5605a106542b882643a582a33..0764d72adb0458f00accf2c570233224c42a15dc 100644 --- a/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateSystemConfigsTest.php +++ b/core/modules/migrate_drupal/lib/Drupal/migrate_drupal/Tests/d6/MigrateSystemConfigsTest.php @@ -181,11 +181,12 @@ public function testSystemFile() { $this->prepare($migration, $dumps); $executable = new MigrateExecutable($migration, new MigrateMessage()); $executable->import(); - \Drupal::configFactory()->disableOverrides(); + $old_state = \Drupal::configFactory()->getOverrideState(); + \Drupal::configFactory()->setOverrideState(FALSE); $config = \Drupal::config('system.file'); $this->assertIdentical($config->get('path.private'), 'files/test'); $this->assertIdentical($config->get('path.temporary'), 'files/temp'); - \Drupal::configFactory()->enableOverrides(); + \Drupal::configFactory()->setOverrideState($old_state); } } diff --git a/core/modules/search/lib/Drupal/search/SearchPageListController.php b/core/modules/search/lib/Drupal/search/SearchPageListController.php index e7a7d8b2bd4acbdea98c341bb2f47bbe10270037..4586a6b954e03625945ad8a41544466aaf93a41c 100644 --- a/core/modules/search/lib/Drupal/search/SearchPageListController.php +++ b/core/modules/search/lib/Drupal/search/SearchPageListController.php @@ -138,8 +138,9 @@ public function buildRow(EntityInterface $entity) { */ public function buildForm(array $form, array &$form_state) { $form = parent::buildForm($form, $form_state); - $search_settings = $this->configFactory->disableOverrides()->get('search.settings'); - $this->configFactory->enableOverrides(); + $old_state = $this->configFactory->getOverrideState(); + $search_settings = $this->configFactory->setOverrideState(FALSE)->get('search.settings'); + $this->configFactory->setOverrideState($old_state); // Collect some stats. $remaining = 0; $total = 0;