Issue #3035259 by quietone: Unknown column 'lt.i18n_status' in 'field list'

merge-requests/1119/head
Alex Pott 2019-03-26 13:10:18 +00:00
parent d97cfe6e4e
commit 7ee36015d3
No known key found for this signature in database
GPG Key ID: 31905460D4A69276
4 changed files with 35 additions and 2 deletions

View File

@ -45,11 +45,21 @@ class BlockTranslation extends Block {
'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;
}

View File

@ -141,6 +141,13 @@ class BlockTranslationTest extends MigrateSqlSourceTestBase {
],
];
// 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;
}

View File

@ -24,7 +24,6 @@ class FieldOptionTranslation extends Field {
'language',
'plid',
'plural',
'i18n_status',
])
->condition('i18n.type', 'field')
->condition('property', 'option\_%', 'LIKE')
@ -39,6 +38,15 @@ class FieldOptionTranslation extends Field {
$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;
}

View File

@ -236,6 +236,14 @@ class FieldOptionTranslationTest extends MigrateSqlSourceTestBase {
'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;
}