@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
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

When a revision has only human reviewers but none can view it, show a warning banner

Summary: Ref T13602. Warn when a reivison has at least one human reviewer, no non-human reviewers, and no human reviewers can view it.

Test Plan: {F8430683}

Maniphest Tasks: T13602

Differential Revision: https://secure.phabricator.com/D21556

+23 -1
+23 -1
src/applications/differential/customfield/DifferentialReviewersField.php
··· 72 72 return array(); 73 73 } 74 74 75 + $viewer = $this->getViewer(); 76 + 77 + PhabricatorPolicyFilterSet::loadHandleViewCapabilities( 78 + $viewer, 79 + $handles, 80 + array($revision)); 81 + 75 82 $all_resigned = true; 76 83 $all_disabled = true; 77 84 $any_reviewers = false; 85 + $all_exiled = true; 78 86 79 87 foreach ($this->getValue() as $reviewer) { 80 88 $reviewer_phid = $reviewer->getReviewerPHID(); 89 + $handle = $handles[$reviewer_phid]; 81 90 82 91 $any_reviewers = true; 83 92 84 - if (!$handles[$reviewer_phid]->isDisabled()) { 93 + if (!$handle->isDisabled()) { 85 94 $all_disabled = false; 86 95 } 87 96 88 97 if (!$reviewer->isResigned()) { 89 98 $all_resigned = false; 90 99 } 100 + 101 + if (!$handle->hasCapabilities()) { 102 + $all_exiled = false; 103 + } else { 104 + if ($handle->hasViewCapability($revision)) { 105 + $all_exiled = false; 106 + } 107 + } 108 + 91 109 } 92 110 93 111 $warnings = array(); ··· 101 119 } else if ($all_resigned) { 102 120 $warnings[] = pht( 103 121 'This revision needs review, but all reviewers have resigned.'); 122 + } else if ($all_exiled) { 123 + $warnings[] = pht( 124 + 'This revision needs review, but no reviewers have permission '. 125 + 'to view it.'); 104 126 } 105 127 106 128 return $warnings;