NodeComplete.php
Same filename in this branch
Same filename in other branches
- 9 core/modules/node/src/Plugin/migrate/source/d6/NodeComplete.php
- 9 core/modules/node/src/Plugin/migrate/source/d7/NodeComplete.php
- 8.9.x core/modules/node/src/Plugin/migrate/source/d6/NodeComplete.php
- 8.9.x core/modules/node/src/Plugin/migrate/source/d7/NodeComplete.php
- 11.x core/modules/node/src/Plugin/migrate/source/d6/NodeComplete.php
- 11.x core/modules/node/src/Plugin/migrate/source/d7/NodeComplete.php
Namespace
Drupal\node\Plugin\migrate\source\d7File
-
core/
modules/ node/ src/ Plugin/ migrate/ source/ d7/ NodeComplete.php
View source
<?php
namespace Drupal\node\Plugin\migrate\source\d7;
use Drupal\Core\Database\Query\SelectInterface;
use Drupal\migrate\Row;
// cspell:ignore tnid
/**
* Drupal 7 all node revisions source, including translation revisions.
*
* For available configuration keys, refer to the parent classes.
*
* @see \Drupal\migrate\Plugin\migrate\source\SqlBase
* @see \Drupal\migrate\Plugin\migrate\source\SourcePluginBase
*
* @MigrateSource(
* id = "d7_node_complete",
* source_module = "node"
* )
*/
class NodeComplete extends NodeRevision {
/**
* The join options between the node and the node_revisions_table.
*/
const JOIN = 'n.nid = nr.nid';
/**
* {@inheritdoc}
*/
public function query() {
$query = parent::query();
$query->orderBy('nr.vid');
// Get any entity translation revision data.
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;
}
/**
* {@inheritdoc}
*/
public function prepareRow(Row $row) {
// Override properties when this is an entity translation revision. The tnid
// will be set in d7_node source plugin to the value of 'nid'.
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);
}
/**
* {@inheritdoc}
*/
public function getIds() {
return [
'nid' => [
'type' => 'integer',
'alias' => 'n',
],
'vid' => [
'type' => 'integer',
'alias' => 'nr',
],
'language' => [
'type' => 'string',
'alias' => 'n',
],
];
}
/**
* {@inheritdoc}
*/
protected function handleTranslations(SelectInterface $query) {
}
}
Classes
Title | Deprecated | Summary |
---|---|---|
NodeComplete | Drupal 7 all node revisions source, including translation revisions. |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.