diff --git a/core/modules/block/src/Plugin/migrate/source/d7/BlockTranslation.php b/core/modules/block/src/Plugin/migrate/source/d7/BlockTranslation.php index acf9e2b7c8ae544b9ef8fc2e230ea66ccd8c0515..cb8c1be4e1e4bad7c8aecbab4581dad4b061c7d1 100644 --- a/core/modules/block/src/Plugin/migrate/source/d7/BlockTranslation.php +++ b/core/modules/block/src/Plugin/migrate/source/d7/BlockTranslation.php @@ -45,11 +45,21 @@ public function query() { 'language', 'plid', 'plural', - 'i18n_status', ]) ->condition('i18n_mode', 1); $query->leftjoin($this->blockTable, 'b', ('b.delta = i18n.objectid')); $query->leftjoin('locales_target', 'lt', 'lt.lid = i18n.lid'); + + // The i18n_string module adds a status column to locale_target. It was + // originally 'status' in a later revision it was named 'i18n_status'. + /** @var \Drupal\Core\Database\Schema $db */ + if ($this->getDatabase()->schema()->fieldExists('locales_target', 'status')) { + $query->addField('lt', 'status', 'i18n_status'); + } + if ($this->getDatabase()->schema()->fieldExists('locales_target', 'i18n_status')) { + $query->addField('lt', 'i18n_status', 'i18n_status'); + } + return $query; } diff --git a/core/modules/block/tests/src/Kernel/Plugin/migrate/source/d7/BlockTranslationTest.php b/core/modules/block/tests/src/Kernel/Plugin/migrate/source/d7/BlockTranslationTest.php index 01b2dced662c266ef0b5b141da6497aaf2cbc616..6f9279777fb168e1501a687298704dc67ccd4fd5 100644 --- a/core/modules/block/tests/src/Kernel/Plugin/migrate/source/d7/BlockTranslationTest.php +++ b/core/modules/block/tests/src/Kernel/Plugin/migrate/source/d7/BlockTranslationTest.php @@ -141,6 +141,13 @@ public function providerSource() { ], ]; + // Change the name of the locale_target i18n status field. + $tests[1] = $tests[0]; + foreach ($tests[1]['source_data']['locales_target'] as &$lt) { + $lt['status'] = $lt['i18n_status']; + unset($lt['i18n_status']); + } + return $tests; } diff --git a/core/modules/field/src/Plugin/migrate/source/d6/FieldOptionTranslation.php b/core/modules/field/src/Plugin/migrate/source/d6/FieldOptionTranslation.php index bc2671a9c4a5dab8b97609ad5ea4577836795c23..578026fbb975547b2d34e363b1cb4c5e2c517bff 100644 --- a/core/modules/field/src/Plugin/migrate/source/d6/FieldOptionTranslation.php +++ b/core/modules/field/src/Plugin/migrate/source/d6/FieldOptionTranslation.php @@ -24,7 +24,6 @@ public function query() { 'language', 'plid', 'plural', - 'i18n_status', ]) ->condition('i18n.type', 'field') ->condition('property', 'option\_%', 'LIKE') @@ -39,6 +38,15 @@ public function query() { $query->addField('cnf', 'type'); $query->addField('i18n', 'type', 'i18n_type'); + // The i18n_string module adds a status column to locale_target. It was + // originally 'status' in a later revision it was named 'i18n_status'. + /** @var \Drupal\Core\Database\Schema $db */ + if ($this->getDatabase()->schema()->fieldExists('locales_target', 'status')) { + $query->addField('lt', 'status', 'i18n_status'); + } + if ($this->getDatabase()->schema()->fieldExists('locales_target', 'i18n_status')) { + $query->addField('lt', 'i18n_status'); + } return $query; } diff --git a/core/modules/field/tests/src/Kernel/Plugin/migrate/source/d6/FieldOptionTranslationTest.php b/core/modules/field/tests/src/Kernel/Plugin/migrate/source/d6/FieldOptionTranslationTest.php index 8503a3f581fa8b652227a61400b50c8de1f3f233..fcf657e1596d844796ccec79bfe994159eb02df6 100644 --- a/core/modules/field/tests/src/Kernel/Plugin/migrate/source/d6/FieldOptionTranslationTest.php +++ b/core/modules/field/tests/src/Kernel/Plugin/migrate/source/d6/FieldOptionTranslationTest.php @@ -236,6 +236,14 @@ public function providerSource() { 'i18n_status' => 0, ], ]; + + // Change the name of the locale_target i18n status field. + $test[1] = $test[0]; + foreach ($test[1]['source_data']['locales_target'] as &$lt) { + $lt['status'] = $lt['i18n_status']; + unset($lt['i18n_status']); + } + return $test; }