function BlockTranslation::query
Same name in this branch
- 10 core/modules/block/src/Plugin/migrate/source/d6/BlockTranslation.php \Drupal\block\Plugin\migrate\source\d6\BlockTranslation::query()
Same name in other branches
- 9 core/modules/block/src/Plugin/migrate/source/d6/BlockTranslation.php \Drupal\block\Plugin\migrate\source\d6\BlockTranslation::query()
- 9 core/modules/block/src/Plugin/migrate/source/d7/BlockTranslation.php \Drupal\block\Plugin\migrate\source\d7\BlockTranslation::query()
- 8.9.x core/modules/block/src/Plugin/migrate/source/d6/BlockTranslation.php \Drupal\block\Plugin\migrate\source\d6\BlockTranslation::query()
- 8.9.x core/modules/block/src/Plugin/migrate/source/d7/BlockTranslation.php \Drupal\block\Plugin\migrate\source\d7\BlockTranslation::query()
- 11.x core/modules/block/src/Plugin/migrate/source/d6/BlockTranslation.php \Drupal\block\Plugin\migrate\source\d6\BlockTranslation::query()
- 11.x core/modules/block/src/Plugin/migrate/source/d7/BlockTranslation.php \Drupal\block\Plugin\migrate\source\d7\BlockTranslation::query()
Overrides Block::query
File
-
core/
modules/ block/ src/ Plugin/ migrate/ source/ d7/ BlockTranslation.php, line 27
Class
- BlockTranslation
- Drupal 7 i18n block data from database.
Namespace
Drupal\block\Plugin\migrate\source\d7Code
public function query() {
// Let the parent set the block table to use, but do not use the parent
// query. Instead build a query so can use an inner join to the selected
// block table.
parent::query();
$query = $this->select('i18n_string', 'i18n')
->fields('i18n')
->fields('b', [
'bid',
'module',
'delta',
'theme',
'status',
'weight',
'region',
'custom',
'visibility',
'pages',
'title',
'cache',
'i18n_mode',
])
->fields('lt', [
'lid',
'translation',
'language',
'plid',
'plural',
])
->condition('i18n_mode', 1);
$query->leftJoin($this->blockTable, 'b', '[b].[delta] = [i18n].[objectid]');
$query->innerJoin('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;
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.