From 348003984ce2ec6ead1e6c455aa92b21b1e0366e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=CC=81bor=20Hojtsy?= Date: Thu, 25 Oct 2018 11:16:36 +0200 Subject: [PATCH] Issue #2970848 by quietone, maxocub: i18n Variable to config: site offline message [d7] --- .../d6_system_maintenance_translation.yml | 2 +- .../migrations/d6_system_site_translation.yml | 2 +- .../migrations/d6_user_mail_translation.yml | 2 +- .../d6_user_settings_translation.yml | 2 +- .../d7_system_maintenance_translation.yml | 17 + ...igrateSystemMaintenanceTranslationTest.php | 37 ++ .../source/d6/D6VariableTranslation.php | 32 ++ .../migrate/source/d6/VariableTranslation.php | 2 +- .../migrate/source/d7/VariableTranslation.php | 106 +++++ .../migrate_drupal/tests/fixtures/drupal7.php | 370 +++++++++++++++++- .../migrate/source/d6/i18nVariableTest.php | 1 + .../source/d7/VariableTranslationTest.php | 77 ++++ .../source/d6/VariableTranslationTest.php | 1 + .../d7/MigrateUpgrade7NoMultilingualTest.php | 3 +- .../d7/MigrateUpgrade7ReviewPageTest.php | 23 ++ .../src/Functional/d7/MigrateUpgrade7Test.php | 8 +- 16 files changed, 677 insertions(+), 8 deletions(-) create mode 100644 core/modules/config_translation/migrations/d7_system_maintenance_translation.yml create mode 100644 core/modules/config_translation/tests/src/Kernel/Migrate/d7/MigrateSystemMaintenanceTranslationTest.php create mode 100644 core/modules/migrate_drupal/src/Plugin/migrate/source/d6/D6VariableTranslation.php create mode 100644 core/modules/migrate_drupal/src/Plugin/migrate/source/d7/VariableTranslation.php create mode 100644 core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/d7/VariableTranslationTest.php diff --git a/core/modules/config_translation/migrations/d6_system_maintenance_translation.yml b/core/modules/config_translation/migrations/d6_system_maintenance_translation.yml index 5a3593c27e8..022cc24a604 100644 --- a/core/modules/config_translation/migrations/d6_system_maintenance_translation.yml +++ b/core/modules/config_translation/migrations/d6_system_maintenance_translation.yml @@ -5,7 +5,7 @@ migration_tags: - Configuration - Multilingual source: - plugin: variable_translation + plugin: d6_variable_translation variables: - site_offline_message source_module: i18n diff --git a/core/modules/config_translation/migrations/d6_system_site_translation.yml b/core/modules/config_translation/migrations/d6_system_site_translation.yml index a246aa97d3b..ad52d6b71a3 100644 --- a/core/modules/config_translation/migrations/d6_system_site_translation.yml +++ b/core/modules/config_translation/migrations/d6_system_site_translation.yml @@ -5,7 +5,7 @@ migration_tags: - Configuration - Multilingual source: - plugin: variable_translation + plugin: d6_variable_translation constants: slash: '/' variables: diff --git a/core/modules/config_translation/migrations/d6_user_mail_translation.yml b/core/modules/config_translation/migrations/d6_user_mail_translation.yml index 2fb3429e6f6..5417ceb2de1 100644 --- a/core/modules/config_translation/migrations/d6_user_mail_translation.yml +++ b/core/modules/config_translation/migrations/d6_user_mail_translation.yml @@ -5,7 +5,7 @@ migration_tags: - Configuration - Multilingual source: - plugin: variable_translation + plugin: d6_variable_translation variables: - user_mail_status_activated_subject - user_mail_status_activated_body diff --git a/core/modules/config_translation/migrations/d6_user_settings_translation.yml b/core/modules/config_translation/migrations/d6_user_settings_translation.yml index f947ff92766..a934dda609c 100644 --- a/core/modules/config_translation/migrations/d6_user_settings_translation.yml +++ b/core/modules/config_translation/migrations/d6_user_settings_translation.yml @@ -5,7 +5,7 @@ migration_tags: - Configuration - Multilingual source: - plugin: variable_translation + plugin: d6_variable_translation variables: - user_mail_status_blocked_notify - user_mail_status_activated_notify diff --git a/core/modules/config_translation/migrations/d7_system_maintenance_translation.yml b/core/modules/config_translation/migrations/d7_system_maintenance_translation.yml new file mode 100644 index 00000000000..f787d4aaf4e --- /dev/null +++ b/core/modules/config_translation/migrations/d7_system_maintenance_translation.yml @@ -0,0 +1,17 @@ +id: d7_system_maintenance_translation +label: Maintenance page configuration +migration_tags: + - Drupal 7 + - Configuration + - Multilingual +source: + plugin: d7_variable_translation + variables: + - maintenance_mode_message +process: + langcode: language + message: maintenance_mode_message +destination: + plugin: config + config_name: system.maintenance + translations: true diff --git a/core/modules/config_translation/tests/src/Kernel/Migrate/d7/MigrateSystemMaintenanceTranslationTest.php b/core/modules/config_translation/tests/src/Kernel/Migrate/d7/MigrateSystemMaintenanceTranslationTest.php new file mode 100644 index 00000000000..df44e407d45 --- /dev/null +++ b/core/modules/config_translation/tests/src/Kernel/Migrate/d7/MigrateSystemMaintenanceTranslationTest.php @@ -0,0 +1,37 @@ +executeMigration('d7_system_maintenance_translation'); + } + + /** + * Tests migrations of i18n maintenance variable. + */ + public function testSystemMaintenance() { + $config = \Drupal::service('language_manager')->getLanguageConfigOverride('is', 'system.maintenance'); + $this->assertSame('is - This is a custom maintenance mode message.', $config->get('message')); + } + +} diff --git a/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/D6VariableTranslation.php b/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/D6VariableTranslation.php new file mode 100644 index 00000000000..a4a3a9f085c --- /dev/null +++ b/core/modules/migrate_drupal/src/Plugin/migrate/source/d6/D6VariableTranslation.php @@ -0,0 +1,32 @@ +variables = $this->configuration['variables']; + } + + /** + * {@inheritdoc} + */ + protected function initializeIterator() { + return new \ArrayIterator($this->values()); + } + + /** + * Return the values of the variables specified in the plugin configuration. + * + * @return array + * An associative array where the keys are the variables specified in the + * plugin configuration and the values are the values found in the source. + * A key/value pair is added for the language code. Only those values are + * returned that are actually in the database. + */ + protected function values() { + $values = []; + $result = $this->prepareQuery()->execute()->FetchAllAssoc('realm_key'); + foreach ($result as $variable_store) { + $values[]['language'] = $variable_store['realm_key']; + } + $result = $this->prepareQuery()->execute()->FetchAll(); + foreach ($result as $variable_store) { + foreach ($values as $key => $value) { + if ($values[$key]['language'] === $variable_store['realm_key']) { + if ($variable_store['serialized']) { + $values[$key][$variable_store['name']] = unserialize($variable_store['value']); + break; + } + else { + $values[$key][$variable_store['name']] = $variable_store['value']; + break; + } + } + } + } + return $values; + } + + /** + * {@inheritdoc} + */ + public function count($refresh = FALSE) { + return $this->initializeIterator()->count(); + } + + /** + * {@inheritdoc} + */ + public function fields() { + return array_combine($this->variables, $this->variables); + } + + /** + * {@inheritdoc} + */ + public function getIds() { + $ids['language']['type'] = 'string'; + return $ids; + } + + /** + * {@inheritdoc} + */ + public function query() { + return $this->select('variable_store', 'vs') + ->fields('vs') + ->condition('realm', 'language') + ->condition('name', (array) $this->configuration['variables'], 'IN'); + } + +} diff --git a/core/modules/migrate_drupal/tests/fixtures/drupal7.php b/core/modules/migrate_drupal/tests/fixtures/drupal7.php index 582c6a03623..2200699b00e 100644 --- a/core/modules/migrate_drupal/tests/fixtures/drupal7.php +++ b/core/modules/migrate_drupal/tests/fixtures/drupal7.php @@ -48329,7 +48329,227 @@ $connection->insert('system') 'bootstrap' => '0', 'schema_version' => '7009', 'weight' => '11', - 'info' => 'a:14:{s:4:"name";s:18:"Entity Translation";s:11:"description";s:58:"Allows entities to be translated into different languages.";s:7:"package";s:33:"Multilingual - Entity Translation";s:4:"core";s:3:"7.x";s:9:"configure";s:40:"admin/config/regional/entity_translation";s:12:"dependencies";a:1:{i:0;s:14:"locale (>7.14)";}s:17:"test_dependencies";a:2:{i:0;s:17:"pathauto:pathauto";i:1;s:5:"title";}s:5:"files";a:15:{i:0;s:40:"includes/translation.handler_factory.inc";i:1;s:32:"includes/translation.handler.inc";i:2;s:40:"includes/translation.handler.comment.inc";i:3;s:37:"includes/translation.handler.node.inc";i:4;s:46:"includes/translation.handler.taxonomy_term.inc";i:5;s:37:"includes/translation.handler.user.inc";i:6;s:32:"includes/translation.migrate.inc";i:7;s:29:"tests/entity_translation.test";i:8;s:49:"views/entity_translation_handler_relationship.inc";i:9;s:57:"views/entity_translation_handler_field_translate_link.inc";i:10;s:48:"views/entity_translation_handler_field_label.inc";i:11;s:55:"views/entity_translation_handler_filter_entity_type.inc";i:12;s:52:"views/entity_translation_handler_filter_language.inc";i:13;s:62:"views/entity_translation_handler_filter_translation_exists.inc";i:14;s:48:"views/entity_translation_handler_field_field.inc";}s:7:"version";s:7:"7.x-1.0";s:7:"project";s:18:"entity_translation";s:9:"datestamp";s:10:"1522600694";s:5:"mtime";i:1522600694;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', + 'info' => 'a:14:{s:4:"name";s:18:"Entity Translation";s:11:"description";s:58:"Allows entities to be translated into different languages.";s:7:"package";s:33:"Multilingual - Entity Translation";s:4:"core";s:3:"7.x";s:9:"configure";s:40:"admin/config/regional/entity_translation";s:12:"dependencies";a:1:{i:0;s:14:"locale (>7.14)";}s:17:"test_dependencies";a:2:{i:0;s:17:"pathauto:pathauto";i:1;s:5:"title";}s:5:"files";a:15:{i:0;s:40:"includes/translation.handler_factory.inc";i:1;s:32:"includes/translation.handler.inc";i:2;s:40:"includes/translation.handler.comment.inc";i:3;s:37:"includes/translation.handler.node.inc";i:4;s:46:"includes/translation.handler.taxonomy_term.inc";i:5;s:37:"includes/translation.handler.user.inc";i:6;s:32:"includes/translation.migrate.inc";i:7;s:29:"tests/entity_translation.test";i:8;s:49:"views/entity_translation_handler_relationship.inc";i:9;s:57:"views/entity_translation_handler_field_translate_link.inc";i:10;s:48:"views/entity_translation_handler_field_label.inc";i:11;s:55:"views/entity_translation_handler_filter_entity_type.inc";i:12;s:52:"views/entity_translation_handler_filter_language.inc";i:13;s:62:"views/entity_translation_handler_filter_translation_exists.inc";i:14;s:48:"views/entity_translation_handler_field_field.inc";}s:7:"version";s:7:"7.x-1.0";s:7:"project";s:18:"entity_translation";s:9:"datestamp";s:10:"1522600694";s:5:"mtime";i:1535762879;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/entity_translation/entity_translation_i18n_menu/entity_translation_i18n_menu.module', + 'name' => 'entity_translation_i18n_menu', + 'type' => 'module', + 'owner' => '', + 'status' => '0', + 'bootstrap' => '0', + 'schema_version' => '-1', + 'weight' => '0', + 'info' => 'a:12:{s:4:"name";s:23:"Entity Translation Menu";s:11:"description";s:54:"Allows menu items to be translated on the entity form.";s:7:"package";s:33:"Multilingual - Entity Translation";s:4:"core";s:3:"7.x";s:12:"dependencies";a:3:{i:0;s:18:"entity_translation";i:1;s:4:"i18n";i:2;s:9:"i18n_menu";}s:5:"files";a:1:{i:0;s:33:"entity_translation_i18n_menu.test";}s:7:"version";s:7:"7.x-1.0";s:7:"project";s:18:"entity_translation";s:9:"datestamp";s:10:"1522600694";s:5:"mtime";i:1535762879;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/entity_translation/entity_translation_upgrade/entity_translation_upgrade.module', + 'name' => 'entity_translation_upgrade', + 'type' => 'module', + 'owner' => '', + 'status' => '0', + 'bootstrap' => '0', + 'schema_version' => '-1', + 'weight' => '0', + 'info' => 'a:12:{s:4:"name";s:26:"Entity Translation Upgrade";s:11:"description";s:80:"Provides an upgrade path from node-based translation to field-based translation.";s:7:"package";s:33:"Multilingual - Entity Translation";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:18:"entity_translation";}s:5:"files";a:1:{i:0;s:31:"entity_translation_upgrade.test";}s:7:"version";s:7:"7.x-1.0";s:7:"project";s:18:"entity_translation";s:9:"datestamp";s:10:"1522600694";s:5:"mtime";i:1535762879;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/entity_translation/tests/entity_translation_test.module', + 'name' => 'entity_translation_test', + 'type' => 'module', + 'owner' => '', + 'status' => '0', + 'bootstrap' => '0', + 'schema_version' => '-1', + 'weight' => '0', + 'info' => 'a:13:{s:4:"name";s:26:"Entity Translation testing";s:11:"description";s:61:"Tests Entity Translation module functionality. Do not enable.";s:4:"core";s:3:"7.x";s:7:"package";s:7:"Testing";s:6:"hidden";b:1;s:12:"dependencies";a:1:{i:0;s:18:"entity_translation";}s:5:"files";a:1:{i:0;s:30:"entity_translation_test.module";}s:7:"version";s:7:"7.x-1.0";s:7:"project";s:18:"entity_translation";s:9:"datestamp";s:10:"1522600694";s:5:"mtime";i:1535762879;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/i18n/i18n.module', + 'name' => 'i18n', + 'type' => 'module', + 'owner' => '', + 'status' => '1', + 'bootstrap' => '1', + 'schema_version' => '7001', + 'weight' => '10', + 'info' => 'a:13:{s:4:"name";s:20:"Internationalization";s:11:"description";s:49:"Extends Drupal support for multilingual features.";s:12:"dependencies";a:2:{i:0;s:6:"locale";i:1;s:8:"variable";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:15:"i18n_object.inc";i:1;s:9:"i18n.test";}s:9:"configure";s:26:"admin/config/regional/i18n";s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/i18n/i18n_block/i18n_block.module', + 'name' => 'i18n_block', + 'type' => 'module', + 'owner' => '', + 'status' => '0', + 'bootstrap' => '0', + 'schema_version' => '-1', + 'weight' => '0', + 'info' => 'a:12:{s:4:"name";s:15:"Block languages";s:11:"description";s:68:"Enables language selector for blocks and optional block translation.";s:12:"dependencies";a:2:{i:0;s:5:"block";i:1;s:11:"i18n_string";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:14:"i18n_block.inc";i:1;s:15:"i18n_block.test";}s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/i18n/i18n_contact/i18n_contact.module', + 'name' => 'i18n_contact', + 'type' => 'module', + 'owner' => '', + 'status' => '0', + 'bootstrap' => '0', + 'schema_version' => '-1', + 'weight' => '0', + 'info' => 'a:12:{s:4:"name";s:19:"Contact translation";s:11:"description";s:63:"Makes contact categories and replies available for translation.";s:12:"dependencies";a:2:{i:0;s:7:"contact";i:1;s:11:"i18n_string";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/i18n/i18n_field/i18n_field.module', + 'name' => 'i18n_field', + 'type' => 'module', + 'owner' => '', + 'status' => '0', + 'bootstrap' => '0', + 'schema_version' => '-1', + 'weight' => '0', + 'info' => 'a:12:{s:4:"name";s:17:"Field translation";s:11:"description";s:26:"Translate field properties";s:12:"dependencies";a:2:{i:0;s:5:"field";i:1;s:11:"i18n_string";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:14:"i18n_field.inc";i:1;s:15:"i18n_field.test";}s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/i18n/i18n_forum/i18n_forum.module', + 'name' => 'i18n_forum', + 'type' => 'module', + 'owner' => '', + 'status' => '0', + 'bootstrap' => '0', + 'schema_version' => '-1', + 'weight' => '0', + 'info' => 'a:12:{s:4:"name";s:18:"Multilingual forum";s:11:"description";s:60:"Enables multilingual forum, translates names and containers.";s:12:"dependencies";a:3:{i:0;s:5:"forum";i:1;s:13:"i18n_taxonomy";i:2;s:9:"i18n_node";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:15:"i18n_forum.test";}s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/i18n/i18n_menu/i18n_menu.module', + 'name' => 'i18n_menu', + 'type' => 'module', + 'owner' => '', + 'status' => '0', + 'bootstrap' => '0', + 'schema_version' => '-1', + 'weight' => '0', + 'info' => 'a:12:{s:4:"name";s:16:"Menu translation";s:11:"description";s:40:"Supports translatable custom menu items.";s:12:"dependencies";a:4:{i:0;s:4:"i18n";i:1;s:4:"menu";i:2;s:11:"i18n_string";i:3;s:16:"i18n_translation";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:13:"i18n_menu.inc";i:1;s:14:"i18n_menu.test";}s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/i18n/i18n_node/i18n_node.module', + 'name' => 'i18n_node', + 'type' => 'module', + 'owner' => '', + 'status' => '0', + 'bootstrap' => '0', + 'schema_version' => '-1', + 'weight' => '0', + 'info' => 'a:13:{s:4:"name";s:20:"Multilingual content";s:11:"description";s:46:"Extended node options for multilingual content";s:12:"dependencies";a:3:{i:0;s:11:"translation";i:1;s:4:"i18n";i:2;s:11:"i18n_string";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:9:"configure";s:31:"admin/config/regional/i18n/node";s:5:"files";a:2:{i:0;s:14:"i18n_node.test";i:1;s:22:"i18n_node.variable.inc";}s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/i18n/i18n_path/i18n_path.module', + 'name' => 'i18n_path', + 'type' => 'module', + 'owner' => '', + 'status' => '0', + 'bootstrap' => '0', + 'schema_version' => '-1', + 'weight' => '0', + 'info' => 'a:12:{s:4:"name";s:16:"Path translation";s:11:"description";s:37:"Define translations for generic paths";s:12:"dependencies";a:1:{i:0;s:16:"i18n_translation";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:2:{i:0;s:13:"i18n_path.inc";i:1;s:14:"i18n_path.test";}s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/i18n/i18n_redirect/i18n_redirect.module', + 'name' => 'i18n_redirect', + 'type' => 'module', + 'owner' => '', + 'status' => '0', + 'bootstrap' => '0', + 'schema_version' => '-1', + 'weight' => '0', + 'info' => 'a:12:{s:4:"name";s:20:"Translation redirect";s:11:"description";s:71:"Redirect to translated page when available. SEO for multilingual sites.";s:12:"dependencies";a:1:{i:0;s:4:"i18n";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/i18n/i18n_select/i18n_select.module', + 'name' => 'i18n_select', + 'type' => 'module', + 'owner' => '', + 'status' => '0', + 'bootstrap' => '0', + 'schema_version' => '-1', + 'weight' => '0', + 'info' => 'a:13:{s:4:"name";s:19:"Multilingual select";s:11:"description";s:45:"API module for multilingual content selection";s:12:"dependencies";a:1:{i:0;s:4:"i18n";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:9:"configure";s:33:"admin/config/regional/i18n/select";s:5:"files";a:1:{i:0;s:16:"i18n_select.test";}s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/i18n/i18n_string/i18n_string.module', + 'name' => 'i18n_string', + 'type' => 'module', + 'owner' => '', + 'status' => '0', + 'bootstrap' => '0', + 'schema_version' => '-1', + 'weight' => '0', + 'info' => 'a:13:{s:4:"name";s:18:"String translation";s:11:"description";s:57:"Provides support for translation of user defined strings.";s:12:"dependencies";a:2:{i:0;s:6:"locale";i:1;s:4:"i18n";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:3:{i:0;s:21:"i18n_string.admin.inc";i:1;s:15:"i18n_string.inc";i:2;s:16:"i18n_string.test";}s:9:"configure";s:34:"admin/config/regional/i18n/strings";s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/i18n/i18n_sync/i18n_sync.module', + 'name' => 'i18n_sync', + 'type' => 'module', + 'owner' => '', + 'status' => '0', + 'bootstrap' => '0', + 'schema_version' => '-1', + 'weight' => '0', + 'info' => 'a:12:{s:4:"name";s:24:"Synchronize translations";s:11:"description";s:73:"Synchronizes taxonomy and fields across translations of the same content.";s:12:"dependencies";a:2:{i:0;s:4:"i18n";i:1;s:11:"translation";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:5:{i:0;s:16:"i18n_sync.module";i:1;s:17:"i18n_sync.install";i:2;s:20:"i18n_sync.module.inc";i:3;s:18:"i18n_sync.node.inc";i:4;s:14:"i18n_sync.test";}s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/i18n/i18n_taxonomy/i18n_taxonomy.module', + 'name' => 'i18n_taxonomy', + 'type' => 'module', + 'owner' => '', + 'status' => '0', + 'bootstrap' => '0', + 'schema_version' => '-1', + 'weight' => '0', + 'info' => 'a:12:{s:4:"name";s:20:"Taxonomy translation";s:11:"description";s:30:"Enables multilingual taxonomy.";s:12:"dependencies";a:3:{i:0;s:8:"taxonomy";i:1;s:11:"i18n_string";i:2;s:16:"i18n_translation";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:4:{i:0;s:17:"i18n_taxonomy.inc";i:1;s:23:"i18n_taxonomy.pages.inc";i:2;s:23:"i18n_taxonomy.admin.inc";i:3;s:18:"i18n_taxonomy.test";}s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/i18n/i18n_translation/i18n_translation.module', + 'name' => 'i18n_translation', + 'type' => 'module', + 'owner' => '', + 'status' => '0', + 'bootstrap' => '0', + 'schema_version' => '-1', + 'weight' => '0', + 'info' => 'a:12:{s:4:"name";s:16:"Translation sets";s:11:"description";s:47:"Simple translation sets API for generic objects";s:12:"dependencies";a:1:{i:0;s:4:"i18n";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:20:"i18n_translation.inc";}s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/i18n/i18n_user/i18n_user.module', + 'name' => 'i18n_user', + 'type' => 'module', + 'owner' => '', + 'status' => '0', + 'bootstrap' => '0', + 'schema_version' => '-1', + 'weight' => '0', + 'info' => 'a:12:{s:4:"name";s:21:"User mail translation";s:11:"description";s:43:"Translate emails sent from the User module.";s:4:"core";s:3:"7.x";s:7:"package";s:35:"Multilingual - Internationalization";s:12:"dependencies";a:1:{i:0;s:13:"i18n_variable";}s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/i18n/i18n_variable/i18n_variable.module', + 'name' => 'i18n_variable', + 'type' => 'module', + 'owner' => '', + 'status' => '1', + 'bootstrap' => '1', + 'schema_version' => '7004', + 'weight' => '-900', + 'info' => 'a:13:{s:4:"name";s:20:"Variable translation";s:11:"description";s:71:"Multilingual variables that switch language depending on page language.";s:12:"dependencies";a:3:{i:0;s:4:"i18n";i:1;s:24:"variable_store (7.x-2.x)";i:2;s:24:"variable_realm (7.x-2.x)";}s:7:"package";s:35:"Multilingual - Internationalization";s:4:"core";s:3:"7.x";s:9:"configure";s:35:"admin/config/regional/i18n/variable";s:5:"files";a:2:{i:0;s:23:"i18n_variable.class.inc";i:1;s:18:"i18n_variable.test";}s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/i18n/tests/i18n_test.module', + 'name' => 'i18n_test', + 'type' => 'module', + 'owner' => '', + 'status' => '0', + 'bootstrap' => '0', + 'schema_version' => '-1', + 'weight' => '0', + 'info' => 'a:13:{s:4:"name";s:26:"Internationalization tests";s:11:"description";s:55:"Helper module for testing i18n (do not enable manually)";s:12:"dependencies";a:3:{i:0;s:6:"locale";i:1;s:11:"translation";i:2;s:4:"i18n";}s:7:"package";s:7:"Testing";s:4:"core";s:3:"7.x";s:6:"hidden";b:1;s:7:"version";s:8:"7.x-1.26";s:7:"project";s:4:"i18n";s:9:"datestamp";s:10:"1534531985";s:5:"mtime";i:1534531985;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}', )) ->values(array( 'filename' => 'sites/all/modules/link/link.module', @@ -48364,6 +48584,83 @@ $connection->insert('system') 'weight' => '100', 'info' => 'a:13:{s:4:"name";s:5:"Title";s:11:"description";s:50:"Replaces entity legacy fields with regular fields.";s:4:"core";s:3:"7.x";s:7:"package";s:6:"Fields";s:9:"configure";s:26:"admin/config/content/title";s:12:"dependencies";a:1:{i:0;s:14:"system (>7.14)";}s:5:"files";a:3:{i:0;s:12:"title.module";i:1;s:35:"views/views_handler_title_field.inc";i:2;s:16:"tests/title.test";}s:7:"version";s:14:"7.x-1.0-alpha9";s:7:"project";s:5:"title";s:9:"datestamp";s:10:"1484302985";s:5:"mtime";i:1484302985;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', )) +->values(array( + 'filename' => 'sites/all/modules/variable/variable.module', + 'name' => 'variable', + 'type' => 'module', + 'owner' => '', + 'status' => '1', + 'bootstrap' => '1', + 'schema_version' => '0', + 'weight' => '0', + 'info' => 'a:12:{s:4:"name";s:8:"Variable";s:11:"description";s:43:"Variable Information and basic variable API";s:7:"package";s:8:"Variable";s:4:"core";s:3:"7.x";s:5:"files";a:9:{i:0;s:27:"includes/forum.variable.inc";i:1;s:28:"includes/locale.variable.inc";i:2;s:26:"includes/menu.variable.inc";i:3;s:26:"includes/node.variable.inc";i:4;s:28:"includes/system.variable.inc";i:5;s:30:"includes/taxonomy.variable.inc";i:6;s:33:"includes/translation.variable.inc";i:7;s:26:"includes/user.variable.inc";i:8;s:13:"variable.test";}s:7:"version";s:7:"7.x-2.5";s:7:"project";s:8:"variable";s:9:"datestamp";s:10:"1398250128";s:5:"mtime";i:1398250128;s:12:"dependencies";a:0:{}s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/variable/variable_admin/variable_admin.module', + 'name' => 'variable_admin', + 'type' => 'module', + 'owner' => '', + 'status' => '0', + 'bootstrap' => '0', + 'schema_version' => '-1', + 'weight' => '0', + 'info' => 'a:12:{s:4:"name";s:14:"Variable admin";s:11:"description";s:26:"Variable Administration UI";s:12:"dependencies";a:1:{i:0;s:8:"variable";}s:7:"package";s:8:"Variable";s:4:"core";s:3:"7.x";s:7:"version";s:7:"7.x-2.5";s:7:"project";s:8:"variable";s:9:"datestamp";s:10:"1398250128";s:5:"mtime";i:1398250128;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/variable/variable_example/variable_example.module', + 'name' => 'variable_example', + 'type' => 'module', + 'owner' => '', + 'status' => '0', + 'bootstrap' => '0', + 'schema_version' => '-1', + 'weight' => '0', + 'info' => 'a:12:{s:4:"name";s:16:"Variable example";s:11:"description";s:83:"An example module showing how to use the Variable API and providing some variables.";s:12:"dependencies";a:2:{i:0;s:8:"variable";i:1;s:14:"variable_store";}s:7:"package";s:15:"Example modules";s:4:"core";s:3:"7.x";s:5:"files";a:1:{i:0;s:29:"variable_example.variable.inc";}s:7:"version";s:7:"7.x-2.5";s:7:"project";s:8:"variable";s:9:"datestamp";s:10:"1398250128";s:5:"mtime";i:1398250128;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/variable/variable_realm/variable_realm.module', + 'name' => 'variable_realm', + 'type' => 'module', + 'owner' => '', + 'status' => '1', + 'bootstrap' => '1', + 'schema_version' => '7000', + 'weight' => '-1000', + 'info' => 'a:12:{s:4:"name";s:14:"Variable realm";s:11:"description";s:49:"API to use variable realms from different modules";s:12:"dependencies";a:1:{i:0;s:8:"variable";}s:7:"package";s:8:"Variable";s:4:"core";s:3:"7.x";s:7:"version";s:7:"7.x-2.5";s:5:"files";a:2:{i:0;s:24:"variable_realm.class.inc";i:1;s:30:"variable_realm_union.class.inc";}s:7:"project";s:8:"variable";s:9:"datestamp";s:10:"1398250128";s:5:"mtime";i:1398250128;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/variable/variable_store/variable_store.module', + 'name' => 'variable_store', + 'type' => 'module', + 'owner' => '', + 'status' => '1', + 'bootstrap' => '1', + 'schema_version' => '7000', + 'weight' => '-1000', + 'info' => 'a:12:{s:4:"name";s:14:"Variable store";s:11:"description";s:60:"Database storage for variable realms. This is an API module.";s:12:"dependencies";a:1:{i:0;s:8:"variable";}s:7:"package";s:8:"Variable";s:4:"core";s:3:"7.x";s:7:"version";s:7:"7.x-2.5";s:5:"files";a:2:{i:0;s:24:"variable_store.class.inc";i:1;s:19:"variable_store.test";}s:7:"project";s:8:"variable";s:9:"datestamp";s:10:"1398250128";s:5:"mtime";i:1398250128;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/variable/variable_views/variable_views.module', + 'name' => 'variable_views', + 'type' => 'module', + 'owner' => '', + 'status' => '0', + 'bootstrap' => '0', + 'schema_version' => '-1', + 'weight' => '0', + 'info' => 'a:12:{s:4:"name";s:14:"Variable views";s:11:"description";s:78:"Provides views integration for variable, included a default variable argument.";s:12:"dependencies";a:2:{i:0;s:8:"variable";i:1;s:5:"views";}s:7:"package";s:8:"Variable";s:4:"core";s:3:"7.x";s:5:"files";a:3:{i:0;s:51:"includes/views_plugin_argument_default_variable.inc";i:1;s:47:"includes/views_handler_field_variable_title.inc";i:2;s:47:"includes/views_handler_field_variable_value.inc";}s:7:"version";s:7:"7.x-2.5";s:7:"project";s:8:"variable";s:9:"datestamp";s:10:"1398250128";s:5:"mtime";i:1398250128;s:3:"php";s:5:"5.2.4";s:9:"bootstrap";i:0;}', +)) +->values(array( + 'filename' => 'sites/all/modules/views/tests/views_test.module', + 'name' => 'views_test', + 'type' => 'module', + 'owner' => '', + 'status' => '0', + 'bootstrap' => '0', + 'schema_version' => '-1', + 'weight' => '0', + 'info' => 'a:13:{s:4:"name";s:10:"Views Test";s:11:"description";s:22:"Test module for Views.";s:7:"package";s:5:"Views";s:4:"core";s:3:"7.x";s:12:"dependencies";a:1:{i:0;s:5:"views";}s:6:"hidden";b:1;s:7:"version";s:8:"7.x-3.20";s:7:"project";s:5:"views";s:9:"datestamp";s:10:"1523668093";s:5:"mtime";i:1535762879;s:3:"php";s:5:"5.2.4";s:5:"files";a:0:{}s:9:"bootstrap";i:0;}', +)) ->values(array( 'filename' => 'sites/all/modules/views/views.module', 'name' => 'views', @@ -50564,6 +50861,77 @@ $connection->insert('variable') 'name' => 'user_signatures', 'value' => 'i:0;', )) +->values(array( + 'name' => 'variable_module_list', + 'value' => 'a:4:{s:6:"locale";a:5:{i:0;s:29:"language_content_type_article";i:1;s:26:"language_content_type_page";i:2;s:26:"language_content_type_book";i:3;s:39:"language_content_type_test_content_type";i:4;s:16:"language_default";}s:4:"i18n";a:1:{i:0;s:18:"i18n_language_list";}s:14:"variable_realm";a:4:{i:0;s:26:"variable_realm_list_global";i:1;s:28:"variable_realm_list_language";i:2;s:28:"variable_realm_weight_global";i:3;s:30:"variable_realm_weight_language";}s:13:"i18n_variable";a:2:{i:0;s:18:"i18n_variable_conf";i:1;s:18:"i18n_variable_list";}}', +)) +->values(array( + 'name' => 'variable_realm_list_language', + 'value' => 'a:3:{i:0;s:9:"site_name";i:1;s:11:"site_slogan";i:2;s:24:"maintenance_mode_message";}', +)) +->execute(); + +$connection->schema()->createTable('variable_store', array( + 'fields' => array( + 'realm' => array( + 'type' => 'varchar', + 'not null' => TRUE, + 'length' => '50', + 'default' => '', + ), + 'realm_key' => array( + 'type' => 'varchar', + 'not null' => TRUE, + 'length' => '50', + 'default' => '', + ), + 'name' => array( + 'type' => 'varchar', + 'not null' => TRUE, + 'length' => '128', + 'default' => '', + ), + 'value' => array( + 'type' => 'text', + 'not null' => TRUE, + 'size' => 'big', + ), + 'serialized' => array( + 'type' => 'int', + 'not null' => TRUE, + 'size' => 'small', + 'default' => '1', + ), + ), + 'primary key' => array( + 'realm', + 'realm_key', + 'name', + ), + 'indexes' => array( + 'realm_value' => array( + 'realm', + 'realm_key', + ), + ), + 'mysql_character_set' => 'utf8', +)); + +$connection->insert('variable_store') +->fields(array( + 'realm', + 'realm_key', + 'name', + 'value', + 'serialized', +)) +->values(array( + 'realm' => 'language', + 'realm_key' => 'is', + 'name' => 'maintenance_mode_message', + 'value' => 'is - This is a custom maintenance mode message.', + 'serialized' => '0', +)) ->execute(); $connection->schema()->createTable('watchdog', array( diff --git a/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/d6/i18nVariableTest.php b/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/d6/i18nVariableTest.php index 8c3e6044eb5..d2a3d0f572c 100644 --- a/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/d6/i18nVariableTest.php +++ b/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/d6/i18nVariableTest.php @@ -10,6 +10,7 @@ use Drupal\Tests\migrate\Kernel\MigrateSqlSourceTestBase; * @covers \Drupal\migrate_drupal\Plugin\migrate\source\d6\i18nVariable * * @group migrate_drupal + * @group legacy */ class i18nVariableTest extends MigrateSqlSourceTestBase { diff --git a/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/d7/VariableTranslationTest.php b/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/d7/VariableTranslationTest.php new file mode 100644 index 00000000000..685590647b1 --- /dev/null +++ b/core/modules/migrate_drupal/tests/src/Kernel/Plugin/migrate/source/d7/VariableTranslationTest.php @@ -0,0 +1,77 @@ + 'language', + 'realm_key' => 'fr', + 'name' => 'site_slogan', + 'value' => 'fr - site slogan', + 'serialized' => '0', + ], + [ + 'realm' => 'language', + 'realm_key' => 'fr', + 'name' => 'user_mail_status_blocked_subject', + 'value' => 'fr - BEGONE!', + 'serialized' => '0', + ], + [ + 'realm' => 'language', + 'realm_key' => 'is', + 'name' => 'site_slogan', + 'value' => 's:16:"is - site slogan";', + 'serialized' => '1', + ], + ]; + + // The expected results. + $tests[0]['expected_data'] = [ + [ + 'language' => 'fr', + 'site_slogan' => 'fr - site slogan', + 'user_mail_status_blocked_subject' => 'fr - BEGONE!', + ], + [ + 'language' => 'is', + 'site_slogan' => 'is - site slogan', + ], + ]; + + // The expected count. + $tests[0]['expected_count'] = NULL; + + // The migration configuration. + $tests[0]['configuration']['variables'] = [ + 'site_slogan', + 'user_mail_status_blocked_subject', + ]; + + return $tests; + } + +} diff --git a/core/modules/migrate_drupal/tests/src/Unit/source/d6/VariableTranslationTest.php b/core/modules/migrate_drupal/tests/src/Unit/source/d6/VariableTranslationTest.php index 1d7f2d944bc..4b548923d29 100644 --- a/core/modules/migrate_drupal/tests/src/Unit/source/d6/VariableTranslationTest.php +++ b/core/modules/migrate_drupal/tests/src/Unit/source/d6/VariableTranslationTest.php @@ -8,6 +8,7 @@ use Drupal\Tests\migrate\Unit\MigrateSqlSourceTestCase; * Tests the variable source plugin. * * @group migrate_drupal + * @group legacy */ class VariableTranslationTest extends MigrateSqlSourceTestCase { diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7NoMultilingualTest.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7NoMultilingualTest.php index fcb024bb8e6..a8f51e7718d 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7NoMultilingualTest.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7NoMultilingualTest.php @@ -20,6 +20,7 @@ class MigrateUpgrade7NoMultilingualTest extends MigrateUpgradeExecuteTestBase { 'file', 'language', 'content_translation', + 'config_translation', 'migrate_drupal_ui', 'telephone', 'aggregator', @@ -207,7 +208,7 @@ class MigrateUpgrade7NoMultilingualTest extends MigrateUpgradeExecuteTestBase { } $edits = $this->translatePostValues($edit); $this->drupalPostForm(NULL, $edits, t('Review upgrade')); - $session->pageTextContains("Install migrate_drupal_multilingual to run migration 'd7_node_translation:article'."); + $session->pageTextContains("Install migrate_drupal_multilingual to run migration 'd7_system_maintenance_translation'."); } } diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7ReviewPageTest.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7ReviewPageTest.php index c1686db6437..66b24c85208 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7ReviewPageTest.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7ReviewPageTest.php @@ -138,6 +138,29 @@ class MigrateUpgrade7ReviewPageTest extends MigrateUpgradeReviewPageTestBase { */ protected function getMissingPaths() { return [ + 'entity_translation_i18n_menu', + 'entity_translation_upgrade', + 'i18n', + 'i18n_block', + 'i18n_contact', + 'i18n_field', + 'i18n_forum', + 'i18n_menu', + 'i18n_node', + 'i18n_path', + 'i18n_redirect', + 'i18n_select', + 'i18n_string', + 'i18n_sync', + 'i18n_taxonomy', + 'i18n_translation', + 'i18n_user', + 'i18n_variable', + 'variable', + 'variable_admin', + 'variable_realm', + 'variable_store', + 'variable_views', 'views', ]; } diff --git a/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7Test.php b/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7Test.php index 28fe7d0a5c5..b1718011f09 100644 --- a/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7Test.php +++ b/core/modules/migrate_drupal_ui/tests/src/Functional/d7/MigrateUpgrade7Test.php @@ -23,6 +23,7 @@ class MigrateUpgrade7Test extends MigrateUpgradeExecuteTestBase { public static $modules = [ 'file', 'language', + 'config_translation', 'content_translation', 'migrate_drupal_ui', 'telephone', @@ -87,7 +88,7 @@ class MigrateUpgrade7Test extends MigrateUpgradeExecuteTestBase { 'menu' => 6, 'taxonomy_term' => 18, 'taxonomy_vocabulary' => 4, - 'tour' => 4, + 'tour' => 5, 'user' => 4, 'user_role' => 3, 'menu_link_content' => 12, @@ -136,6 +137,7 @@ class MigrateUpgrade7Test extends MigrateUpgradeExecuteTestBase { 'file', 'filter', 'forum', + 'i18n_variable', 'image', 'language', 'link', @@ -177,6 +179,10 @@ class MigrateUpgrade7Test extends MigrateUpgradeExecuteTestBase { */ protected function getMissingPaths() { return [ + 'i18n', + 'variable', + 'variable_realm', + 'variable_store', // These modules are in the missing path list because they are installed // on the source site but they are not installed on the destination site. 'syslog',