diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc index 4ea8238..532f1e0 100644 --- a/core/includes/bootstrap.inc +++ b/core/includes/bootstrap.inc @@ -2714,10 +2714,11 @@ function language_list($flags = LANGUAGE_CONFIGURABLE) { // Initialize default property so callers have an easy reference and can // save the same object without data loss. - foreach ($languages as $info) { + foreach ($languages as $config) { + $info = $config->getExportProperties(); $langcode = $info['langcode']; $info['default'] = ($langcode == $default->langcode); - $languages[$langcode] = new Language($info->getExportProperties()); + $languages[$langcode] = new Language($info); } } else { diff --git a/core/modules/config/lib/Drupal/config/Tests/ConfigLocaleOverride.php b/core/modules/config/lib/Drupal/config/Tests/ConfigLocaleOverride.php index cee642e..cd8ef17 100644 --- a/core/modules/config/lib/Drupal/config/Tests/ConfigLocaleOverride.php +++ b/core/modules/config/lib/Drupal/config/Tests/ConfigLocaleOverride.php @@ -64,7 +64,6 @@ function testConfigLocaleOverride() { */ function testConfigLocaleUserOverride() { $this->installSchema('system', 'variable'); - $this->installSchema('language', 'language'); language_save(new Language(array( 'name' => 'French', 'langcode' => 'fr', @@ -162,7 +161,6 @@ function testConfigLocaleUserAndGlobalOverride() { $conf['config_test.system']['404'] = 'global herp'; $this->installSchema('system', 'variable'); - $this->installSchema('language', 'language'); language_save(new Language(array( 'name' => 'French', 'langcode' => 'fr', diff --git a/core/modules/language/language.module b/core/modules/language/language.module index de430a2..94632f9 100644 --- a/core/modules/language/language.module +++ b/core/modules/language/language.module @@ -473,30 +473,33 @@ function language_get_default_langcode($entity_type, $bundle) { * 'language' configuration properties. */ function language_save($language) { - $language->is_new = entity_load('language', $language->langcode); + $language_entity = entity_load('language', $language->langcode); + if (!$language_entity) { + $language->is_new = TRUE; + $language_entity = entity_create('language', array( + 'langcode' => $language->langcode, + )); + } + else { + $language->is_new = FALSE; + } // Let other modules modify $language before saved. module_invoke_all('language_presave', $language); + $language_entity->name = isset($language->name) ? $language->name : ''; + $language_entity->direction = isset($language->direction) ? $language->direction : '0'; + $language_entity->locked = isset($language->locked) ? $language->locked : '0'; + $language_entity->weight = isset($language->weight) ? $language->weight : '0'; + // Save the record and inform others about the change. + $language_entity->save(); $t_args = array('%language' => $language->name, '%langcode' => $language->langcode); if ($language->is_new) { - entity_create('language', array( - 'langcode' => $language->langcode, - 'name' => $language->name, - 'direction' => $language->direction, - 'weight' => $language->weight, - 'locked' => FALSE, - ))->save(); module_invoke_all('language_insert', $language); watchdog('language', 'The %language (%langcode) language has been created.', $t_args); } else { - config('language.' . $language->langcode) - ->set('name', $language->name) - ->set('direction', $language->direction) - ->set('weight', $language->weight) - ->save(); module_invoke_all('language_update', $language); watchdog('language', 'The %language (%langcode) language has been updated.', $t_args); } diff --git a/core/modules/language/lib/Drupal/language/Plugin/Core/Entity/Language.php b/core/modules/language/lib/Drupal/language/Plugin/Core/Entity/Language.php index a6771e1..4e9f4f7 100644 --- a/core/modules/language/lib/Drupal/language/Plugin/Core/Entity/Language.php +++ b/core/modules/language/lib/Drupal/language/Plugin/Core/Entity/Language.php @@ -29,7 +29,7 @@ * } * ) */ -class Language extends ConfigEntityBase implements \ArrayAccess { +class Language extends ConfigEntityBase { /** * The language ID (machine name). @@ -82,32 +82,4 @@ public function id() { return $this->langcode; } - /** - * {@inheritdoc} - */ - public function offsetExists($offset) { - return isset($this->{$offset}); - } - - /** - * {@inheritdoc} - */ - public function &offsetGet($offset) { - return $this->{$offset}; - } - - /** - * {@inheritdoc} - */ - public function offsetSet($offset, $value) { - $this->{$offset} = $value; - } - - /** - * {@inheritdoc} - */ - public function offsetUnset($offset) { - unset($this->{$offset}); - } - } diff --git a/core/modules/language/lib/Drupal/language/Tests/Condition/LanguageConditionTest.php b/core/modules/language/lib/Drupal/language/Tests/Condition/LanguageConditionTest.php index e98a8d3..2cae70c 100644 --- a/core/modules/language/lib/Drupal/language/Tests/Condition/LanguageConditionTest.php +++ b/core/modules/language/lib/Drupal/language/Tests/Condition/LanguageConditionTest.php @@ -48,7 +48,6 @@ public static function getInfo() { protected function setUp() { parent::setUp(); - $this->installSchema('language', 'language'); // This is needed for language_default(). // @todo remove this when language_default() no longer needs variable_get(). $this->installSchema('system', 'variable'); diff --git a/core/modules/language/lib/Drupal/language/Tests/Views/LanguageTestBase.php b/core/modules/language/lib/Drupal/language/Tests/Views/LanguageTestBase.php index 9057a5a..978c8dc 100644 --- a/core/modules/language/lib/Drupal/language/Tests/Views/LanguageTestBase.php +++ b/core/modules/language/lib/Drupal/language/Tests/Views/LanguageTestBase.php @@ -24,7 +24,6 @@ protected function setUp() { parent::setUp(); - $this->installSchema('language', 'language'); $this->installSchema('system', 'variable'); diff --git a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityAccessTest.php b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityAccessTest.php index c29e4f3..71e2601 100644 --- a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityAccessTest.php +++ b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityAccessTest.php @@ -31,7 +31,6 @@ function setUp() { parent::setUp(); $this->installSchema('user', array('role_permission', 'users_roles')); $this->installSchema('system', array('variable', 'url_alias')); - $this->installSchema('language', 'language'); // Create the default languages. $default_language = language_save(language_default()); diff --git a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityTranslationTest.php b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityTranslationTest.php index f5c1c52..003b3ac 100644 --- a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityTranslationTest.php +++ b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityTranslationTest.php @@ -31,7 +31,6 @@ public static function getInfo() { function setUp() { parent::setUp(); $this->installSchema('system', 'variable'); - $this->installSchema('language', 'language'); $this->installSchema('entity_test', array( 'entity_test_mul', 'entity_test_mul_property_data', diff --git a/core/modules/views/lib/Drupal/views/Tests/Wizard/WizardPluginBaseUnitTest.php b/core/modules/views/lib/Drupal/views/Tests/Wizard/WizardPluginBaseUnitTest.php index 529d4f1..8d1e36e 100644 --- a/core/modules/views/lib/Drupal/views/Tests/Wizard/WizardPluginBaseUnitTest.php +++ b/core/modules/views/lib/Drupal/views/Tests/Wizard/WizardPluginBaseUnitTest.php @@ -43,7 +43,6 @@ public static function getInfo() { protected function setUp() { parent::setUp(); - $this->installSchema('language', 'language'); $this->installSchema('system', 'variable'); $this->enableModules(array('views_ui'));