You are here

protected function DrupalNode5Migration::query in Drupal-to-Drupal data migration 7.2

Query for basic node fields from Drupal 5.

Return value

QueryConditionInterface

Overrides DrupalMigration::query

1 call to DrupalNode5Migration::query()
DrupalNode5Migration::__construct in d5/node.inc

File

d5/node.inc, line 51
Implementation of DrupalNodeMigration for Drupal 5 sources.

Class

DrupalNode5Migration
Handling specific to a Drupal 5 source for nodes.

Code

protected function query() {
  $query = Database::getConnection('default', $this->sourceConnection)
    ->select('node', 'n')
    ->fields('n', array(
    'nid',
    'vid',
    'title',
    'uid',
    'status',
    'created',
    'changed',
    'comment',
    'promote',
    'moderate',
    'sticky',
  ))
    ->condition('n.type', $this->sourceType)
    ->orderBy('n.changed');
  $query
    ->innerJoin('node_revisions', 'nr', 'n.vid=nr.vid');
  $query
    ->fields('nr', array(
    'body',
    'teaser',
    'format',
  ));

  // Pick up simple CCK fields
  $cck_table = 'content_type_' . $this->sourceType;
  if (Database::getConnection('default', $this->sourceConnection)
    ->schema()
    ->tableExists($cck_table)) {
    $query
      ->leftJoin($cck_table, 'f', 'n.vid=f.vid');

    // The main column for the field should be rendered with
    // the field name, not the column name (e.g., field_foo rather
    // than field_foo_value).
    $field_info = $this->version
      ->getSourceFieldInfo();
    foreach ($field_info as $field_name => $info) {
      if (isset($info['columns']) && !$info['multiple'] && $info['db_storage']) {
        $i = 0;
        foreach ($info['columns'] as $display_name => $column_name) {
          if ($i++ == 0) {
            $query
              ->addField('f', $column_name, $field_name);
          }
          else {

            // The database API won't allow colons in column aliases, so we
            // will accept the default alias, and fix up the field names later.
            // Remember how to translate the field names.
            $clean_name = str_replace(':', '_', $display_name);
            $this->fixFieldNames[$clean_name] = $display_name;
            $query
              ->addField('f', $column_name);
          }
        }
      }
    }
  }

  // Join node_counter for Statistics support
  if ($this
    ->moduleExists('statistics')) {
    $query
      ->leftJoin('node_counter', 'nc', 'n.nid=nc.nid');
    $query
      ->addField('nc', 'daycount');
    $query
      ->addField('nc', 'timestamp');
    $query
      ->addField('nc', 'totalcount');
  }
  return $query;
}