mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-11 16:16:14 +01:00
12e6106a59
Summary: See PHI190. This clarifies the ruleset a bit: - If you accepted, then the author used "Request Review" explicitly, we now show "Accepted Earlier" instead of "Accepted" in the "Reviewers" list on the main revision page. This makes it sligthly more clear why the revision is back in your review queue without picking through the transaction log. - Instead of moving all non-current accepts into "Ready to Review", move only voided accepts into "Ready to Review". This stops us from pulling older accepts which haven't been voided (which could have been incorrectly pulled) and correctly pulls older, voided accepts from before an update (for example: accept, then request review, then update) and generally aligns better with intent/expectation. Test Plan: - Accepted, requested review. - Saw reviewer as "Accepted Earlier". - Saw review in "Ready to Review" bucket. - Accepted, updated (with sticky accept). - Saw reviewer as "Accepted Prior Diff". - Saw review as "Waiting on Authors". Reviewers: amckinley Reviewed By: amckinley Differential Revision: https://secure.phabricator.com/D18764
86 lines
1.9 KiB
PHP
86 lines
1.9 KiB
PHP
<?php
|
|
|
|
abstract class DifferentialRevisionResultBucket
|
|
extends PhabricatorSearchResultBucket {
|
|
|
|
public static function getAllResultBuckets() {
|
|
return id(new PhutilClassMapQuery())
|
|
->setAncestorClass(__CLASS__)
|
|
->setUniqueMethod('getResultBucketKey')
|
|
->execute();
|
|
}
|
|
|
|
protected function getRevisionsUnderReview(array $objects, array $phids) {
|
|
$results = array();
|
|
|
|
$objects = $this->getRevisionsNotAuthored($objects, $phids);
|
|
|
|
foreach ($objects as $key => $object) {
|
|
if (!$object->isNeedsReview()) {
|
|
continue;
|
|
}
|
|
|
|
$results[$key] = $object;
|
|
}
|
|
|
|
return $results;
|
|
}
|
|
|
|
protected function getRevisionsAuthored(array $objects, array $phids) {
|
|
$results = array();
|
|
|
|
foreach ($objects as $key => $object) {
|
|
if (isset($phids[$object->getAuthorPHID()])) {
|
|
$results[$key] = $object;
|
|
}
|
|
}
|
|
|
|
return $results;
|
|
}
|
|
|
|
protected function getRevisionsNotAuthored(array $objects, array $phids) {
|
|
$results = array();
|
|
|
|
foreach ($objects as $key => $object) {
|
|
if (empty($phids[$object->getAuthorPHID()])) {
|
|
$results[$key] = $object;
|
|
}
|
|
}
|
|
|
|
return $results;
|
|
}
|
|
|
|
protected function hasReviewersWithStatus(
|
|
DifferentialRevision $revision,
|
|
array $phids,
|
|
array $statuses,
|
|
$include_voided = null) {
|
|
|
|
foreach ($revision->getReviewers() as $reviewer) {
|
|
$reviewer_phid = $reviewer->getReviewerPHID();
|
|
if (empty($phids[$reviewer_phid])) {
|
|
continue;
|
|
}
|
|
|
|
$status = $reviewer->getReviewerStatus();
|
|
if (empty($statuses[$status])) {
|
|
continue;
|
|
}
|
|
|
|
if ($include_voided !== null) {
|
|
if ($status == DifferentialReviewerStatus::STATUS_ACCEPTED) {
|
|
$is_voided = (bool)$reviewer->getVoidedPHID();
|
|
if ($is_voided !== $include_voided) {
|
|
continue;
|
|
}
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
|
|
}
|