View source
<?php
namespace Drupal\taxonomy\Plugin\migrate\source\d6;
use Drupal\migrate\Row;
use Drupal\migrate_drupal\Plugin\migrate\source\DrupalSqlBase;
class TermNode extends DrupalSqlBase {
const JOIN = 'tn.vid = n.vid';
public function query() {
$query = $this
->select('term_node', 'tn')
->distinct()
->fields('tn', array(
'nid',
'vid',
))
->fields('n', array(
'type',
));
$query
->innerJoin('term_data', 'td', 'td.tid = tn.tid AND td.vid = :vid', array(
':vid' => $this->configuration['vid'],
));
$query
->innerJoin('node', 'n', static::JOIN);
return $query;
}
public function fields() {
return array(
'nid' => $this
->t('The node revision ID.'),
'vid' => $this
->t('The node revision ID.'),
'tid' => $this
->t('The term ID.'),
);
}
public function prepareRow(Row $row) {
$query = $this
->select('term_node', 'tn')
->fields('tn', array(
'tid',
))
->condition('n.nid', $row
->getSourceProperty('nid'));
$query
->join('node', 'n', static::JOIN);
$query
->innerJoin('term_data', 'td', 'td.tid = tn.tid AND td.vid = :vid', array(
':vid' => $this->configuration['vid'],
));
$row
->setSourceProperty('tid', $query
->execute()
->fetchCol());
return parent::prepareRow($row);
}
public function getIds() {
$ids['vid']['type'] = 'integer';
$ids['vid']['alias'] = 'tn';
return $ids;
}
}