From c0a7453aefe71998ca05b3a0d88de216c3f53eb6 Mon Sep 17 00:00:00 2001 From: Nathaniel Catchpole Date: Mon, 22 Sep 2014 11:43:19 +0100 Subject: [PATCH] Issue #2339435 by YesCT, alexpott: Default no longer needs to be a property on Language or ConfigurableLanguage. --- core/includes/install.core.inc | 6 +- core/lib/Drupal/Core/DrupalKernel.php | 2 +- core/lib/Drupal/Core/Language/Language.php | 21 +++--- .../Drupal/Core/Language/LanguageDefault.php | 1 - .../Tests/Authentication/BasicAuthTest.php | 3 +- .../Tests/ConfigLanguageOverrideWebTest.php | 4 +- core/modules/language/language.module | 8 +- core/modules/language/language.services.yml | 1 + .../src/Entity/ConfigurableLanguage.php | 73 +------------------ .../src/EventSubscriber/ConfigSubscriber.php | 36 +++++++++ .../language/src/Form/NegotiationUrlForm.php | 6 +- .../language/src/LanguageServiceProvider.php | 2 +- .../LanguageConfigurationElementTest.php | 8 +- .../Tests/LanguageDependencyInjectionTest.php | 13 +--- .../LanguageUILanguageNegotiationTest.php | 9 +-- .../src/Tests/LocaleLocaleLookupTest.php | 6 +- .../menu_ui/src/Tests/MenuLanguageTest.php | 4 +- .../src/Tests/Common/FormatDateTest.php | 4 +- .../system/src/Tests/Theme/TwigTransTest.php | 4 +- .../taxonomy/src/Tests/TermLanguageTest.php | 4 +- .../Tests/Wizard/WizardPluginBaseUnitTest.php | 5 +- .../Tests/Core/Language/LanguageUnitTest.php | 21 +++++- 22 files changed, 105 insertions(+), 136 deletions(-) diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc index 6e7194caf47..391732b8a96 100644 --- a/core/includes/install.core.inc +++ b/core/includes/install.core.inc @@ -1550,12 +1550,12 @@ function install_import_translations(&$install_state) { $langcode = $install_state['parameters']['langcode']; $language = ConfigurableLanguage::createFromLangcode($langcode); - $language->set('default', TRUE); $language->save(); - // If a non-English language was selected, remove English and import the - // translations. + // If a non-English language was selected, change the default language, + // remove English and import the translations. if ($langcode != 'en') { + \Drupal::config('system.site')->set('langcode', $langcode)->save(); entity_delete_multiple('configurable_language', array('en')); // Set up a batch to import translations for the newly added language. diff --git a/core/lib/Drupal/Core/DrupalKernel.php b/core/lib/Drupal/Core/DrupalKernel.php index 065afae8889..39119cd20c8 100644 --- a/core/lib/Drupal/Core/DrupalKernel.php +++ b/core/lib/Drupal/Core/DrupalKernel.php @@ -1040,7 +1040,7 @@ class DrupalKernel implements DrupalKernelInterface, TerminableInterface { $default_language_values = Language::$defaultValues; if ($system = $this->getConfigStorage()->read('system.site')) { if ($default_language_values['id'] != $system['langcode']) { - $default_language_values = array('id' => $system['langcode'], 'default' => TRUE); + $default_language_values = array('id' => $system['langcode']); } } $container->setParameter('language.default_values', $default_language_values); diff --git a/core/lib/Drupal/Core/Language/Language.php b/core/lib/Drupal/Core/Language/Language.php index 8f72cdc5c66..9e040775475 100644 --- a/core/lib/Drupal/Core/Language/Language.php +++ b/core/lib/Drupal/Core/Language/Language.php @@ -25,7 +25,6 @@ class Language implements LanguageInterface { 'direction' => self::DIRECTION_LTR, 'weight' => 0, 'locked' => FALSE, - 'default' => TRUE, ); // Properties within the Language are set up as the default language. @@ -60,13 +59,6 @@ class Language implements LanguageInterface { */ public $weight = 0; - /** - * Flag indicating if this is the only site default language. - * - * @var bool - */ - public $default = FALSE; - /** * Locked indicates a language used by the system, not an actual language. * @@ -136,7 +128,7 @@ class Language implements LanguageInterface { * {@inheritdoc} */ public function isDefault() { - return $this->default; + return static::getDefaultLangcode() == $this->getId(); } /** @@ -156,4 +148,15 @@ class Language implements LanguageInterface { }); } + /** + * Gets the default langcode. + * + * @return string + * The current default langcode. + */ + protected static function getDefaultLangcode() { + $language = \Drupal::service('language.default')->get(); + return $language->getId(); + } + } diff --git a/core/lib/Drupal/Core/Language/LanguageDefault.php b/core/lib/Drupal/Core/Language/LanguageDefault.php index 1ca8009aadc..4454489c908 100644 --- a/core/lib/Drupal/Core/Language/LanguageDefault.php +++ b/core/lib/Drupal/Core/Language/LanguageDefault.php @@ -53,7 +53,6 @@ class LanguageDefault { * The default language. */ public function set(LanguageInterface $language) { - $language->default = TRUE; $this->language = $language; } diff --git a/core/modules/basic_auth/src/Tests/Authentication/BasicAuthTest.php b/core/modules/basic_auth/src/Tests/Authentication/BasicAuthTest.php index 1c4a9192621..62346a1a1e4 100644 --- a/core/modules/basic_auth/src/Tests/Authentication/BasicAuthTest.php +++ b/core/modules/basic_auth/src/Tests/Authentication/BasicAuthTest.php @@ -119,7 +119,8 @@ class BasicAuthTest extends WebTestBase { * Tests compatibility with locale/UI translation. */ function testLocale() { - ConfigurableLanguage::create(array('id' => 'de', 'label' => 'German', 'default' => TRUE))->save(); + ConfigurableLanguage::createFromLangcode('de')->save(); + \Drupal::config('system.site')->set('langcode', 'de')->save(); $account = $this->drupalCreateUser(); diff --git a/core/modules/config/src/Tests/ConfigLanguageOverrideWebTest.php b/core/modules/config/src/Tests/ConfigLanguageOverrideWebTest.php index 82f4d37d0d3..be24fb947a8 100644 --- a/core/modules/config/src/Tests/ConfigLanguageOverrideWebTest.php +++ b/core/modules/config/src/Tests/ConfigLanguageOverrideWebTest.php @@ -67,9 +67,7 @@ class ConfigLanguageOverrideWebTest extends WebTestBase { // overrides still work. $language_manager = \Drupal::languageManager()->reset(); $this->assertTrue($language_manager->isMultilingual(), 'The test site is multilingual.'); - $language = ConfigurableLanguage::load('xx'); - $language->set('default', TRUE); - $language->save(); + \Drupal::config('system.site')->set('langcode', 'xx')->save(); ConfigurableLanguage::load('en')->delete(); $this->assertFalse($language_manager->isMultilingual(), 'The test site is monolingual.'); diff --git a/core/modules/language/language.module b/core/modules/language/language.module index 96c0a3f2d53..d60d42e7fd3 100644 --- a/core/modules/language/language.module +++ b/core/modules/language/language.module @@ -444,10 +444,10 @@ function language_negotiation_url_prefixes_update() { foreach (\Drupal::languageManager()->getLanguages() as $language) { // The prefix for this language should be updated if it's not assigned yet // or the prefix is set to the empty string. - if (empty($prefixes[$language->id])) { + if (empty($prefixes[$language->getId()])) { // For the default language, set the prefix to the empty string, // otherwise use the langcode. - $prefixes[$language->id] = !empty($language->default) ? '' : $language->id; + $prefixes[$language->getId()] = $language->isDefault() ? '' : $language->id; } // Otherwise we keep the configured prefix. } @@ -592,9 +592,7 @@ function language_form_system_regional_settings_alter(&$form, FormStateInterface * @see language_form_system_regional_settings_alter() */ function language_system_regional_settings_form_submit($form, FormStateInterface $form_state) { - $default_language = ConfigurableLanguage::load($form_state->getValue('site_default_language')); - $default_language->set('default', TRUE); - $default_language->save(); + \Drupal::config('system.site')->set('langcode', $form_state->getValue('site_default_language'))->save(); } /** diff --git a/core/modules/language/language.services.yml b/core/modules/language/language.services.yml index 1eeb5977323..eae3af51d67 100644 --- a/core/modules/language/language.services.yml +++ b/core/modules/language/language.services.yml @@ -9,6 +9,7 @@ services: - [initLanguageManager] language.config_subscriber: class: Drupal\language\EventSubscriber\ConfigSubscriber + arguments: ['@language_manager', '@language.default'] tags: - { name: event_subscriber } language.config_factory_override: diff --git a/core/modules/language/src/Entity/ConfigurableLanguage.php b/core/modules/language/src/Entity/ConfigurableLanguage.php index 2f95b9ecc37..bcdf7e226cd 100644 --- a/core/modules/language/src/Entity/ConfigurableLanguage.php +++ b/core/modules/language/src/Entity/ConfigurableLanguage.php @@ -7,12 +7,10 @@ namespace Drupal\language\Entity; -use Drupal\Core\Language\Language as LanguageObject; use Drupal\Core\Config\Entity\ConfigEntityBase; use Drupal\Core\Entity\EntityStorageInterface; use Drupal\Core\Language\LanguageManager; use Drupal\language\ConfigurableLanguageManager; -use Drupal\Core\Language\Language; use Drupal\language\ConfigurableLanguageManagerInterface; use Drupal\language\Exception\DeleteDefaultLanguageException; use Drupal\language\ConfigurableLanguageInterface; @@ -82,21 +80,6 @@ class ConfigurableLanguage extends ConfigEntityBase implements ConfigurableLangu */ public $locked = FALSE; - /** - * Flag to indicate if the language entity is the default site language. - * - * This property is not saved to the language entity since there can be only - * one default language. It is saved to system.site:langcode and set on the - * container using the language.default service in when the entity is saved. - * The value is set correctly when a language entity is created or loaded. - * - * @see \Drupal\language\Entity\ConfigurableLanguage::postSave() - * @see \Drupal\language\Entity\ConfigurableLanguage::isDefault() - * - * @var bool - */ - protected $default; - /** * Used during saving to detect when the site becomes multilingual. * @@ -111,16 +94,10 @@ class ConfigurableLanguage extends ConfigEntityBase implements ConfigurableLangu protected $preSaveMultilingual; /** - * Checks if the language entity is the site default language. - * - * @return bool - * TRUE if the language entity is the site default language, FALSE if not. + * {@inheritdoc} */ public function isDefault() { - if (!isset($this->default)) { - return static::getDefaultLangcode() == $this->id(); - } - return $this->default; + return static::getDefaultLangcode() == $this->id(); } /** @@ -144,24 +121,14 @@ class ConfigurableLanguage extends ConfigEntityBase implements ConfigurableLangu public function postSave(EntityStorageInterface $storage, $update = TRUE) { parent::postSave($storage, $update); - // Only set the default language and save it to system.site configuration if - // it needs to updated. - if ($this->isDefault() && static::getDefaultLangcode() != $this->id()) { - // Update the config. Saving the configuration fires and event that causes - // the container to be rebuilt. - \Drupal::config('system.site')->set('langcode', $this->id())->save(); - \Drupal::service('language.default')->set($this->toLanguageObject()); - } - $language_manager = \Drupal::languageManager(); $language_manager->reset(); if ($language_manager instanceof ConfigurableLanguageManagerInterface) { $language_manager->updateLockedLanguageWeights(); } - // Update URL Prefixes for all languages after the new default language is - // propagated and the LanguageManagerInterface::getLanguages() cache is - // flushed. + // Update URL Prefixes for all languages after the + // LanguageManagerInterface::getLanguages() cache is flushed. language_negotiation_url_prefixes_update(); // If after adding this language the site will become multilingual, we need @@ -175,26 +142,6 @@ class ConfigurableLanguage extends ConfigEntityBase implements ConfigurableLangu } } - /** - * Converts the ConfigurableLanguage entity to a Core Language value object. - * - * @todo fix return type hint after https://drupal.org/node/2246665 and - * https://drupal.org/node/2246679. - * - * @return \Drupal\Core\Language\LanguageInterface - * The language configuration entity expressed as a Language value object. - */ - protected function toLanguageObject() { - return new LanguageObject(array( - 'id' => $this->id(), - 'name' => $this->label(), - 'direction' => $this->direction, - 'weight' => $this->weight, - 'locked' => $this->locked, - 'default' => $this->default, - )); - } - /** * {@inheritdoc} * @@ -228,18 +175,6 @@ class ConfigurableLanguage extends ConfigEntityBase implements ConfigurableLangu } } - /** - * {@inheritdoc} - */ - public function get($property_name) { - if ($property_name == 'default') { - return $this->isDefault(); - } - else { - return parent::get($property_name); - } - } - /** * Gets the default langcode. * diff --git a/core/modules/language/src/EventSubscriber/ConfigSubscriber.php b/core/modules/language/src/EventSubscriber/ConfigSubscriber.php index 1373a258ab0..2b1c73c6cb5 100644 --- a/core/modules/language/src/EventSubscriber/ConfigSubscriber.php +++ b/core/modules/language/src/EventSubscriber/ConfigSubscriber.php @@ -7,6 +7,8 @@ namespace Drupal\language\EventSubscriber; +use Drupal\Core\Language\LanguageDefault; +use Drupal\Core\Language\LanguageManagerInterface; use Drupal\Core\PhpStorage\PhpStorageFactory; use Drupal\Core\Config\ConfigCrudEvent; use Drupal\Core\Config\ConfigEvents; @@ -17,6 +19,33 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface; */ class ConfigSubscriber implements EventSubscriberInterface { + /** + * The language manager. + * + * @var \Drupal\Core\Language\LanguageManagerInterface + */ + protected $languageManager; + + /** + * The default language. + * + * @var \Drupal\Core\Language\LanguageDefault + */ + protected $languageDefault; + + /** + * Constructs a new class object. + * + * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager + * The language manager. + * @param \Drupal\Core\Language\LanguageDefault $language_default + * The default language. + */ + public function __construct(LanguageManagerInterface $language_manager, LanguageDefault $language_default) { + $this->languageManager = $language_manager; + $this->languageDefault = $language_default; + } + /** * Causes the container to be rebuilt on the next request. * @@ -26,6 +55,13 @@ class ConfigSubscriber implements EventSubscriberInterface { public function onConfigSave(ConfigCrudEvent $event) { $saved_config = $event->getConfig(); if ($saved_config->getName() == 'system.site' && $event->isChanged('langcode')) { + $language = $this->languageManager->getLanguage($saved_config->get('langcode')); + // During an import the language might not exist yet. + if ($language) { + $this->languageDefault->set($language); + $this->languageManager->reset(); + language_negotiation_url_prefixes_update(); + } // Trigger a container rebuild on the next request by deleting compiled // from PHP storage. PhpStorageFactory::get('service_container')->deleteAll(); diff --git a/core/modules/language/src/Form/NegotiationUrlForm.php b/core/modules/language/src/Form/NegotiationUrlForm.php index e2e241ef198..f28a53d1a61 100644 --- a/core/modules/language/src/Form/NegotiationUrlForm.php +++ b/core/modules/language/src/Form/NegotiationUrlForm.php @@ -76,7 +76,7 @@ class NegotiationUrlForm extends ConfigFormBase { $t_args = array('%language' => $language->name, '%langcode' => $language->id); $form['prefix'][$langcode] = array( '#type' => 'textfield', - '#title' => $language->default ? $this->t('%language (%langcode) path prefix (Default language)', $t_args) : $this->t('%language (%langcode) path prefix', $t_args), + '#title' => $language->isDefault() ? $this->t('%language (%langcode) path prefix (Default language)', $t_args) : $this->t('%language (%langcode) path prefix', $t_args), '#maxlength' => 64, '#default_value' => isset($prefixes[$langcode]) ? $prefixes[$langcode] : '', '#field_prefix' => $base_url . '/', @@ -106,7 +106,7 @@ class NegotiationUrlForm extends ConfigFormBase { $value = $form_state->getValue(array('prefix', $langcode)); if ($value === '') { - if (!$language->default && $form_state->getValue('language_negotiation_url_part') == LanguageNegotiationUrl::CONFIG_PATH_PREFIX) { + if (!$language->isDefault() && $form_state->getValue('language_negotiation_url_part') == LanguageNegotiationUrl::CONFIG_PATH_PREFIX) { // Throw a form error if the prefix is blank for a non-default language, // although it is required for selected negotiation type. $form_state->setErrorByName("prefix][$langcode", $this->t('The prefix may only be left blank for the default language.')); @@ -130,7 +130,7 @@ class NegotiationUrlForm extends ConfigFormBase { $value = $form_state->getValue(array('domain', $langcode)); if ($value === '') { - if (!$language->default && $form_state->getValue('language_negotiation_url_part') == LanguageNegotiationUrl::CONFIG_DOMAIN) { + if (!$language->isDefault() && $form_state->getValue('language_negotiation_url_part') == LanguageNegotiationUrl::CONFIG_DOMAIN) { // Throw a form error if the domain is blank for a non-default language, // although it is required for selected negotiation type. $form_state->setErrorByName("domain][$langcode", $this->t('The domain may only be left blank for the default language.')); diff --git a/core/modules/language/src/LanguageServiceProvider.php b/core/modules/language/src/LanguageServiceProvider.php index 0561814def9..be89900c163 100644 --- a/core/modules/language/src/LanguageServiceProvider.php +++ b/core/modules/language/src/LanguageServiceProvider.php @@ -100,7 +100,7 @@ class LanguageServiceProvider extends ServiceProviderBase { $system = $config_storage->read('system.site'); $default_language = $config_storage->read(static::CONFIG_PREFIX . $system['langcode']); if (is_array($default_language)) { - return $default_language + array('default' => TRUE); + return $default_language; } return FALSE; } diff --git a/core/modules/language/src/Tests/LanguageConfigurationElementTest.php b/core/modules/language/src/Tests/LanguageConfigurationElementTest.php index 4f3d880909c..68159552b57 100644 --- a/core/modules/language/src/Tests/LanguageConfigurationElementTest.php +++ b/core/modules/language/src/Tests/LanguageConfigurationElementTest.php @@ -83,18 +83,16 @@ class LanguageConfigurationElementTest extends WebTestBase { $old_default = \Drupal::languageManager()->getDefaultLanguage(); // Ensure the language entity default value is correct. $configurable_language = entity_load('configurable_language', $old_default->getId()); - $this->assertTrue($configurable_language->get('default'), 'The en language entity is flagged as the default language.'); + $this->assertTrue($configurable_language->isDefault(), 'The en language entity is flagged as the default language.'); - $new_default = ConfigurableLanguage::load('cc'); - $new_default->set('default', TRUE); - $new_default->save(); + \Drupal::config('system.site')->set('langcode', 'cc')->save(); language_save_default_configuration('custom_type', 'custom_bundle', array('langcode' => 'site_default', 'language_show' => TRUE)); $langcode = language_get_default_langcode('custom_type', 'custom_bundle'); $this->assertEqual($langcode, 'cc'); // Ensure the language entity default value is correct. $configurable_language = entity_load('configurable_language', $old_default->getId()); - $this->assertFalse($configurable_language->get('default'), 'The en language entity is not flagged as the default language.'); + $this->assertFalse($configurable_language->isDefault(), 'The en language entity is not flagged as the default language.'); $configurable_language = entity_load('configurable_language', 'cc'); // Check calling the // \Drupal\language\Entity\ConfigurableLanguage::isDefault() method diff --git a/core/modules/language/src/Tests/LanguageDependencyInjectionTest.php b/core/modules/language/src/Tests/LanguageDependencyInjectionTest.php index 44776bb1668..70b0d693c5f 100644 --- a/core/modules/language/src/Tests/LanguageDependencyInjectionTest.php +++ b/core/modules/language/src/Tests/LanguageDependencyInjectionTest.php @@ -42,13 +42,8 @@ class LanguageDependencyInjectionTest extends LanguageTestBase { function testDependencyInjectedNewDefaultLanguage() { $default_language = ConfigurableLanguage::load(\Drupal::languageManager()->getDefaultLanguage()->getId()); // Change the language default object to different values. - ConfigurableLanguage::create(array( - 'id' => 'fr', - 'label' => 'French', - 'direction' => Language::DIRECTION_LTR, - 'weight' => 0, - 'default' => TRUE, - ))->save(); + ConfigurableLanguage::createFromLangcode('fr')->save(); + \Drupal::config('system.site')->set('langcode', 'fr')->save(); // The language system creates a Language object which contains the // same properties as the new default language object. @@ -65,8 +60,8 @@ class LanguageDependencyInjectionTest extends LanguageTestBase { } // Re-save the previous default language and the delete should work. - $default_language->set('default', TRUE); - $default_language->save(); + \Drupal::config('system.site')->set('langcode', $default_language->getId())->save(); + entity_delete_multiple('configurable_language', array('fr')); $result = \Drupal::languageManager()->getCurrentLanguage(); $this->assertIdentical($result->id, $default_language->id); diff --git a/core/modules/language/src/Tests/LanguageUILanguageNegotiationTest.php b/core/modules/language/src/Tests/LanguageUILanguageNegotiationTest.php index 76720e8e116..4753539b661 100644 --- a/core/modules/language/src/Tests/LanguageUILanguageNegotiationTest.php +++ b/core/modules/language/src/Tests/LanguageUILanguageNegotiationTest.php @@ -89,9 +89,8 @@ class LanguageUILanguageNegotiationTest extends WebTestBase { // is for some reason not found when doing translate search. This might // be some bug. $default_language = \Drupal::languageManager()->getDefaultLanguage(); - $language = ConfigurableLanguage::createFromLangcode($langcode_browser_fallback); - $language->set('default', TRUE); - $language->save(); + ConfigurableLanguage::createFromLangcode($langcode_browser_fallback)->save(); + \Drupal::config('system.site')->set('langcode', $langcode_browser_fallback)->save(); ConfigurableLanguage::createFromLangcode($langcode)->save(); // We will look for this string in the admin/config screen to see if the @@ -104,9 +103,7 @@ class LanguageUILanguageNegotiationTest extends WebTestBase { // Now the t()'ed string is in db so switch the language back to default. // This will rebuild the container so we need to rebuild the container in // the test environment. - $default_language = ConfigurableLanguage::load($default_language->getId()); - $default_language->set('default', TRUE); - $default_language->save(); + \Drupal::config('system.site')->set('langcode', $default_language->getId())->save(); \Drupal::config('language.negotiation')->set('url.prefixes.en', '')->save(); $this->rebuildContainer(); diff --git a/core/modules/locale/src/Tests/LocaleLocaleLookupTest.php b/core/modules/locale/src/Tests/LocaleLocaleLookupTest.php index 07f6f48b630..96f5a260a3d 100644 --- a/core/modules/locale/src/Tests/LocaleLocaleLookupTest.php +++ b/core/modules/locale/src/Tests/LocaleLocaleLookupTest.php @@ -31,9 +31,9 @@ class LocaleLocaleLookupTest extends WebTestBase { parent::setUp(); // Change the language default object to different values. - $language = ConfigurableLanguage::createFromLangcode('fr'); - $language->set('default', TRUE); - $language->save(); + ConfigurableLanguage::createFromLangcode('fr')->save(); + \Drupal::config('system.site')->set('langcode', 'fr')->save(); + $this->drupalLogin($this->root_user); } diff --git a/core/modules/menu_ui/src/Tests/MenuLanguageTest.php b/core/modules/menu_ui/src/Tests/MenuLanguageTest.php index f5d32f8269c..f74fb099edb 100644 --- a/core/modules/menu_ui/src/Tests/MenuLanguageTest.php +++ b/core/modules/menu_ui/src/Tests/MenuLanguageTest.php @@ -150,9 +150,7 @@ class MenuLanguageTest extends MenuWebTestBase { // Remove English language. To do that another language has to be set as // default. - $language = ConfigurableLanguage::load('cs'); - $language->set('default', TRUE); - $language->save(); + \Drupal::config('system.site')->set('langcode', 'cs')->save(); entity_delete_multiple('configurable_language', array('en')); // Save the menu again and check if the language is still the same. diff --git a/core/modules/system/src/Tests/Common/FormatDateTest.php b/core/modules/system/src/Tests/Common/FormatDateTest.php index 9c75f29201d..f8ad3b7058e 100644 --- a/core/modules/system/src/Tests/Common/FormatDateTest.php +++ b/core/modules/system/src/Tests/Common/FormatDateTest.php @@ -96,9 +96,7 @@ class FormatDateTest extends WebTestBase { $this->assertIdentical(format_date($timestamp, 'custom', 'l, d-M-y H:i:s T', 'Europe/London', 'en'), 'Monday, 26-Mar-07 01:00:00 BST', 'Test a different time zone.'); // Change the default language and timezone. - $language = ConfigurableLanguage::load(static::LANGCODE); - $language->set('default', TRUE); - $language->save(); + \Drupal::config('system.site')->set('langcode', static::LANGCODE)->save(); date_default_timezone_set('America/Los_Angeles'); $this->assertIdentical(format_date($timestamp, 'custom', 'l, d-M-y H:i:s T', 'America/Los_Angeles', 'en'), 'Sunday, 25-Mar-07 17:00:00 PDT', 'Test a different language.'); diff --git a/core/modules/system/src/Tests/Theme/TwigTransTest.php b/core/modules/system/src/Tests/Theme/TwigTransTest.php index 9983dff8392..942a6dc5b6e 100644 --- a/core/modules/system/src/Tests/Theme/TwigTransTest.php +++ b/core/modules/system/src/Tests/Theme/TwigTransTest.php @@ -70,9 +70,7 @@ class TwigTransTest extends WebTestBase { $this->installLanguages(); // Assign Lolspeak (xx) to be the default language. - $language = ConfigurableLanguage::load('xx'); - $language->set('default', TRUE); - $language->save(); + \Drupal::config('system.site')->set('langcode', 'xx')->save(); $this->rebuildContainer(); // Check that lolspeak is the default language for the site. diff --git a/core/modules/taxonomy/src/Tests/TermLanguageTest.php b/core/modules/taxonomy/src/Tests/TermLanguageTest.php index be67e5dd413..cb64143df78 100644 --- a/core/modules/taxonomy/src/Tests/TermLanguageTest.php +++ b/core/modules/taxonomy/src/Tests/TermLanguageTest.php @@ -95,9 +95,7 @@ class TermLanguageTest extends TaxonomyTestBase { // Change the default language of the site and check if the default terms // language is still correctly selected. - $new_default = ConfigurableLanguage::load('cc'); - $new_default->set('default', TRUE); - $new_default->save(); + \Drupal::config('system.site')->set('langcode', 'cc')->save(); $edit = array( 'default_language[langcode]' => 'site_default', 'default_language[language_show]' => TRUE, diff --git a/core/modules/views/src/Tests/Wizard/WizardPluginBaseUnitTest.php b/core/modules/views/src/Tests/Wizard/WizardPluginBaseUnitTest.php index 97ed8a7591e..281539b8018 100644 --- a/core/modules/views/src/Tests/Wizard/WizardPluginBaseUnitTest.php +++ b/core/modules/views/src/Tests/Wizard/WizardPluginBaseUnitTest.php @@ -56,9 +56,8 @@ class WizardPluginBaseUnitTest extends ViewUnitTestBase { $random_description = $this->randomMachineName(); // Add a new language and mark it as default. - $language = ConfigurableLanguage::createFromLangcode('it'); - $language->set('default', TRUE); - $language->save(); + ConfigurableLanguage::createFromLangcode('it')->save(); + \Drupal::config('system.site')->set('langcode', 'it')->save(); $form_state->setValues([ 'id' => $random_id, diff --git a/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php b/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php index 75e1fd8d09f..e15cbac2bdf 100644 --- a/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php +++ b/core/tests/Drupal/Tests/Core/Language/LanguageUnitTest.php @@ -49,9 +49,26 @@ class LanguageUnitTest extends UnitTestCase { * @covers ::isDefault() */ public function testIsDefault() { - $language_code = $this->randomMachineName(2); - $language = new Language(array('id' => $language_code, 'default' => TRUE)); + $language_default = $this->getMockBuilder('Drupal\Core\Language\LanguageDefault')->disableOriginalConstructor()->getMock(); + $container = $this->getMock('Symfony\Component\DependencyInjection\ContainerInterface'); + $container->expects($this->any()) + ->method('get') + ->with('language.default') + ->will($this->returnValue($language_default)); + \Drupal::setContainer($container); + + $language = new Language(array('id' => $this->randomMachineName(2))); + // Set up the LanguageDefault to return different default languages on + // consecutive calls. + $language_default->expects($this->any()) + ->method('get') + ->willReturnOnConsecutiveCalls( + $language, + new Language(array('id' => $this->randomMachineName(2))) + ); + $this->assertTrue($language->isDefault()); + $this->assertFalse($language->isDefault()); } /**