Differential D21556 Diff 51308 src/applications/differential/customfield/DifferentialReviewersField.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/differential/customfield/DifferentialReviewersField.php
| Show First 20 Lines • Show All 66 Lines • ▼ Show 20 Lines | final class DifferentialReviewersField | ||||
| public function getWarningsForRevisionHeader(array $handles) { | public function getWarningsForRevisionHeader(array $handles) { | ||||
| $revision = $this->getObject(); | $revision = $this->getObject(); | ||||
| if (!$revision->isNeedsReview()) { | if (!$revision->isNeedsReview()) { | ||||
| return array(); | return array(); | ||||
| } | } | ||||
| $viewer = $this->getViewer(); | |||||
| PhabricatorPolicyFilterSet::loadHandleViewCapabilities( | |||||
| $viewer, | |||||
| $handles, | |||||
| array($revision)); | |||||
| $all_resigned = true; | $all_resigned = true; | ||||
| $all_disabled = true; | $all_disabled = true; | ||||
| $any_reviewers = false; | $any_reviewers = false; | ||||
| $all_exiled = true; | |||||
| foreach ($this->getValue() as $reviewer) { | foreach ($this->getValue() as $reviewer) { | ||||
| $reviewer_phid = $reviewer->getReviewerPHID(); | $reviewer_phid = $reviewer->getReviewerPHID(); | ||||
| $handle = $handles[$reviewer_phid]; | |||||
| $any_reviewers = true; | $any_reviewers = true; | ||||
| if (!$handles[$reviewer_phid]->isDisabled()) { | if (!$handle->isDisabled()) { | ||||
| $all_disabled = false; | $all_disabled = false; | ||||
| } | } | ||||
| if (!$reviewer->isResigned()) { | if (!$reviewer->isResigned()) { | ||||
| $all_resigned = false; | $all_resigned = false; | ||||
| } | } | ||||
| if (!$handle->hasCapabilities()) { | |||||
| $all_exiled = false; | |||||
| } else { | |||||
| if ($handle->hasViewCapability($revision)) { | |||||
| $all_exiled = false; | |||||
| } | |||||
| } | |||||
| } | } | ||||
| $warnings = array(); | $warnings = array(); | ||||
| if (!$any_reviewers) { | if (!$any_reviewers) { | ||||
| $warnings[] = pht( | $warnings[] = pht( | ||||
| 'This revision needs review, but there are no reviewers specified.'); | 'This revision needs review, but there are no reviewers specified.'); | ||||
| } else if ($all_disabled) { | } else if ($all_disabled) { | ||||
| $warnings[] = pht( | $warnings[] = pht( | ||||
| 'This revision needs review, but all specified reviewers are '. | 'This revision needs review, but all specified reviewers are '. | ||||
| 'disabled or inactive.'); | 'disabled or inactive.'); | ||||
| } else if ($all_resigned) { | } else if ($all_resigned) { | ||||
| $warnings[] = pht( | $warnings[] = pht( | ||||
| 'This revision needs review, but all reviewers have resigned.'); | 'This revision needs review, but all reviewers have resigned.'); | ||||
| } else if ($all_exiled) { | |||||
| $warnings[] = pht( | |||||
| 'This revision needs review, but no reviewers have permission '. | |||||
| 'to view it.'); | |||||
| } | } | ||||
| return $warnings; | return $warnings; | ||||
| } | } | ||||
| } | } | ||||