View source
<?php
namespace Drupal\node\Plugin\migrate\source\d7;
use Drupal\Core\Database\Query\SelectInterface;
use Drupal\migrate\Row;
class NodeComplete extends NodeRevision {
const JOIN = 'n.nid = nr.nid';
public function query() {
$query = parent::query();
$query
->orderBy('nr.vid');
if ($this
->getDatabase()
->schema()
->tableExists('entity_translation_revision')) {
$query
->leftJoin('entity_translation_revision', 'etr', '[nr].[nid] = [etr].[entity_id] AND [nr].[vid] = [etr].[revision_id]');
$query
->fields('etr', [
'entity_type',
'entity_id',
'revision_id',
'source',
'translate',
]);
$conditions = $query
->orConditionGroup();
$conditions
->condition('etr.entity_type', 'node');
$conditions
->isNull('etr.entity_type');
$query
->condition($conditions);
$query
->addExpression("COALESCE([etr].[language], [n].[language])", 'language');
$query
->addField('etr', 'uid', 'etr_uid');
$query
->addField('etr', 'status', 'etr_status');
$query
->addField('etr', 'created', 'etr_created');
$query
->addField('etr', 'changed', 'etr_changed');
$query
->orderBy('etr.revision_id');
$query
->orderBy('etr.language');
}
return $query;
}
public function prepareRow(Row $row) {
if ($row
->getSourceProperty('etr_created')) {
$row
->setSourceProperty('vid', $row
->getSourceProperty('revision_id'));
$row
->setSourceProperty('created', $row
->getSourceProperty('etr_created'));
$row
->setSourceProperty('timestamp', $row
->getSourceProperty('etr_changed'));
$row
->setSourceProperty('revision_uid', $row
->getSourceProperty('etr_uid'));
$row
->setSourceProperty('source_langcode', $row
->getSourceProperty('source'));
}
return parent::prepareRow($row);
}
public function getIds() {
return [
'nid' => [
'type' => 'integer',
'alias' => 'n',
],
'vid' => [
'type' => 'integer',
'alias' => 'nr',
],
'language' => [
'type' => 'string',
'alias' => 'n',
],
];
}
protected function handleTranslations(SelectInterface $query) {
}
}