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);
}
}
