drupalorg_migrate-1.0.x-dev/src/Plugin/migrate/source/CaseStudyFile.php

src/Plugin/migrate/source/CaseStudyFile.php
<?php

namespace Drupal\drupalorg_migrate\Plugin\migrate\source;

use Drupal\file\Plugin\migrate\source\d7\File;

/**
 * Drupal 7 Case study images source from database.
 *
 * @MigrateSource(
 *   id = "d7_file_casestudy_files",
 *   source_module = "file"
 * )
 */
class CaseStudyFile extends File {

  /**
   * {@inheritdoc}
   */
  public function query() {
    $query = parent::query();
    // Filter by case study image field.
    if (!isset($this->configuration['source_field'])) {
      $query->addJoin('INNER', 'field_data_upload', 'fdu', 'f.fid = %alias.upload_fid');
      $query->condition('fdu.entity_type', 'node');
      $query->condition('fdu.bundle', 'casestudy');
    }
    elseif ($this->configuration['source_field'] == 'mainimage') {
      $query->addJoin('INNER', 'field_data_field_mainimage', 'fmi', 'f.fid = %alias.field_mainimage_fid');
      $query->condition('fmi.entity_type', 'node');
      $query->condition('fmi.bundle', 'casestudy');
    }
    elseif ($this->configuration['source_field'] == 'images') {
      $query->addJoin('INNER', 'field_data_field_images', 'fi', 'f.fid = %alias.field_images_fid');
      $query->condition('fi.entity_type', 'node');
      $query->condition('fi.bundle', 'casestudy');
    }
    elseif ($this->configuration['source_field'] == 'cover_photo') {
      $query->addJoin('INNER', 'field_data_field_cover_photo', 'fcp', 'f.fid = %alias.field_cover_photo_fid');
      $query->condition('fcp.entity_type', 'node');
      $query->condition('fcp.bundle', 'casestudy');
    }

    if (isset($this->configuration['file_type'])) {
      if ($this->configuration['file_type'] == 'image') {
        $query->condition('f.filemime', 'image/%', 'LIKE');
      }
      if ($this->configuration['file_type'] == 'document') {
        $query->condition('f.filemime', 'application/%', 'LIKE');
      }
    }

    return $query;
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc