diff --git a/core/modules/language/migration_templates/d6_default_language.yml b/core/modules/language/migration_templates/d6_default_language.yml new file mode 100644 index 0000000..9813d01 --- /dev/null +++ b/core/modules/language/migration_templates/d6_default_language.yml @@ -0,0 +1,22 @@ +id: d6_default_language +label: Default language +migration_tags: + - Drupal 6 +source: + plugin: variable + variables: + - language_default +process: + default_langcode: + - + plugin: callback + callable: get_object_vars + source: language_default + - + plugin: extract + index: + - language + +destination: + plugin: config + config_name: system.site diff --git a/core/modules/language/src/Tests/Migrate/d6/MigrateDefaultLanguageTest.php b/core/modules/language/src/Tests/Migrate/d6/MigrateDefaultLanguageTest.php new file mode 100644 index 0000000..ff5965a --- /dev/null +++ b/core/modules/language/src/Tests/Migrate/d6/MigrateDefaultLanguageTest.php @@ -0,0 +1,62 @@ +doTestMigration('fr'); + } + + /** + * Tests the migration of the language_default variable to the + * system.site.default_langcode config key, with a non-existent language. + */ + public function testMigrationWithNonExistentLanguage() { + $this->doTestMigration('tv'); + } + + /** + * Helper method to test the migration. + */ + protected function doTestMigration($langcode) { + // The default language of the test fixture is English. Change it to + // something else before migrating, to be sure that the source site + // default language is migrated. + $value = 'O:8:"stdClass":11:{s:8:"language";s:2:"' . $langcode . '";s:4:"name";s:6:"French";s:6:"native";s:6:"French";s:9:"direction";s:1:"0";s:7:"enabled";i:1;s:7:"plurals";s:1:"0";s:7:"formula";s:0:"";s:6:"domain";s:0:"";s:6:"prefix";s:0:"";s:6:"weight";s:1:"0";s:10:"javascript";s:0:"";}'; + $this->sourceDatabase->update('variable') + ->fields(array( + 'value' => $value + )) + ->condition('name', 'language_default' ) + ->execute(); + $this->executeMigration('language'); + $this->executeMigration('d6_default_language'); + $default_language = ConfigurableLanguage::load($langcode); + $this->assertNotNull($default_language); + $this->assertIdentical($langcode, $this->config('system.site')->get('default_langcode')); + } + +} diff --git a/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php b/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php index fdcb26e..f5ffdbf 100644 --- a/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php +++ b/core/modules/migrate_drupal_ui/src/Form/MigrateUpgradeForm.php @@ -170,6 +170,10 @@ class MigrateUpgradeForm extends ConfirmFormBase { 'source_module' => 'dblog', 'destination_module' => 'dblog', ], + 'd6_default_language' => [ + 'source_module' => 'locale', + 'destination_module' => 'language', + ], 'd6_field' => [ 'source_module' => 'content', 'destination_module' => 'field',