Something went wrong. Try again.
@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
Something went wrong. Try again.
2.9 kB · 118 lines
PHP
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119<?php
/** * @extends PhabricatorCursorPagedPolicyAwareQuery<PhabricatorRepositoryCommitHint> */final class DiffusionCommitHintQuery extends PhabricatorCursorPagedPolicyAwareQuery {
private $ids; private $repositoryPHIDs; private $oldCommitIdentifiers;
private $commits; private $commitMap;
public function withIDs(array $ids) { $this->ids = $ids; return $this; }
public function withRepositoryPHIDs(array $phids) { $this->repositoryPHIDs = $phids; return $this; }
public function withOldCommitIdentifiers(array $identifiers) { $this->oldCommitIdentifiers = $identifiers; return $this; }
/** * @param array<PhabricatorRepositoryCommit> $commits */ public function withCommits(array $commits) { assert_instances_of($commits, PhabricatorRepositoryCommit::class);
$repository_phids = array(); foreach ($commits as $commit) { $repository_phids[] = $commit->getRepository()->getPHID(); }
$this->repositoryPHIDs = $repository_phids; $this->oldCommitIdentifiers = mpull($commits, 'getCommitIdentifier'); $this->commits = $commits;
return $this; }
public function getCommitMap() { if ($this->commitMap === null) { throw new PhutilInvalidStateException('execute'); }
return $this->commitMap; }
public function newResultObject() { return new PhabricatorRepositoryCommitHint(); }
protected function willExecute() { $this->commitMap = array(); }
protected function buildWhereClauseParts(AphrontDatabaseConnection $conn) { $where = parent::buildWhereClauseParts($conn);
if ($this->ids !== null) { $where[] = qsprintf( $conn, 'id IN (%Ld)', $this->ids); }
if ($this->repositoryPHIDs !== null) { $where[] = qsprintf( $conn, 'repositoryPHID IN (%Ls)', $this->repositoryPHIDs); }
if ($this->oldCommitIdentifiers !== null) { $where[] = qsprintf( $conn, 'oldCommitIdentifier IN (%Ls)', $this->oldCommitIdentifiers); }
return $where; }
protected function didFilterPage(array $hints) { if ($this->commits) { $map = array(); foreach ($this->commits as $commit) { $repository_phid = $commit->getRepository()->getPHID(); $identifier = $commit->getCommitIdentifier(); $map[$repository_phid][$identifier] = $commit->getPHID(); }
foreach ($hints as $hint) { $repository_phid = $hint->getRepositoryPHID(); $identifier = $hint->getOldCommitIdentifier(); if (isset($map[$repository_phid][$identifier])) { $commit_phid = $map[$repository_phid][$identifier]; $this->commitMap[$commit_phid] = $hint; } } }
return $hints; }
public function getQueryApplicationClass() { return PhabricatorDiffusionApplication::class; }
}