You are here

public function BlockCustomTranslation::query in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/block_content/src/Plugin/migrate/source/d7/BlockCustomTranslation.php \Drupal\block_content\Plugin\migrate\source\d7\BlockCustomTranslation::query()
  2. 10 core/modules/block_content/src/Plugin/migrate/source/d7/BlockCustomTranslation.php \Drupal\block_content\Plugin\migrate\source\d7\BlockCustomTranslation::query()

Return value

\Drupal\Core\Database\Query\SelectInterface

Overrides SqlBase::query

File

core/modules/block_content/src/Plugin/migrate/source/d7/BlockCustomTranslation.php, line 34

Class

BlockCustomTranslation
Gets Drupal 7 i18n custom block translations from database.

Namespace

Drupal\block_content\Plugin\migrate\source\d7

Code

public function query() {

  // Build a query based on blockCustomTable table where each row has the
  // translation for only one property, either title or description. The
  // method prepareRow() is then used to obtain the translation for the
  // other property.
  $query = $this
    ->select(static::CUSTOM_BLOCK_TABLE, 'b')
    ->fields('b', [
    'bid',
    'format',
    'body',
  ])
    ->fields('i18n', [
    'property',
  ])
    ->fields('lt', [
    'lid',
    'translation',
    'language',
  ])
    ->orderBy('b.bid');

  // Use 'title' for the info field to match the property name in
  // i18nStringTable.
  $query
    ->addField('b', 'info', 'title');

  // Add in the property, which is either title or body. Cast the bid to text
  // so PostgreSQL can make the join.
  $query
    ->leftJoin(static::I18N_STRING_TABLE, 'i18n', '[i18n].[objectid] = CAST([b].[bid] AS CHAR(255))');
  $query
    ->condition('i18n.type', 'block');

  // Add in the translation for the property.
  $query
    ->innerJoin('locales_target', 'lt', '[lt].[lid] = [i18n].[lid]');
  return $query;
}