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

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

namespace Drupal\drupalorg_migrate\Plugin\migrate\source;

use Drupal\migrate\Row;
use Drupal\migrate_plus\Plugin\migrate\source\Table;

/**
 * Drupal 7 project maintainers information coming from different tables.
 *
 * @MigrateSource(
 *   id = "d7_project_maintainers",
 *   source_module = "migrate_plus"
 * )
 */
class ProjectMaintainers extends Table {

  /**
   * {@inheritdoc}
   */
  public function prepareRow(Row $row) {
    $nid = $row->getSourceProperty('nid');
    $uid = $row->getSourceProperty('uid');

    // Write to VCS:
    // It is "versioncontrol_auth_account.access" in D7, with "repo_id" being
    // joined through "versioncontrol_project_projects" to get the project NID.
    $query = $this->select('versioncontrol_project_projects', 'vpp')
      ->condition('vpp.nid', $nid);
    $query->join('versioncontrol_auth_account', 'vaa', 'vaa.repo_id = vpp.repo_id');
    $query->condition('vaa.uid', $uid);
    $query->fields('vaa', ['access']);
    $row_data = $query->execute()->fetchAssoc();
    $row->setSourceProperty('write_to_vcs', $row_data['access'] ?? 0);

    // Administer releases:
    // It is "project_release_project_maintainer.administer_releases" in D7.
    $query = $this->select('project_release_project_maintainer', 'prpm')
      ->fields('prpm', ['administer_releases'])
      ->condition('prpm.nid', $nid)
      ->condition('prpm.uid', $uid);
    $row_data = $query->execute()->fetchAssoc();
    $row->setSourceProperty('administer_releases', $row_data['administer_releases'] ?? 0);

    // Maintain issues:
    // It is "project_issue_project_maintainer.maintain_issues" in D7.
    $query = $this->select('project_issue_project_maintainer', 'pipm')
      ->fields('pipm', ['maintain_issues'])
      ->condition('pipm.nid', $nid)
      ->condition('pipm.uid', $uid);
    $row_data = $query->execute()->fetchAssoc();
    $row->setSourceProperty('maintain_issues', $row_data['maintain_issues'] ?? 0);

    return parent::prepareRow($row);
  }

}

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

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