Changeset View
Changeset View
Standalone View
Standalone View
src/applications/differential/view/DifferentialReviewersView.php
| Show All 20 Lines | final class DifferentialReviewersView extends AphrontView { | ||||
| public function setActiveDiff(DifferentialDiff $diff) { | public function setActiveDiff(DifferentialDiff $diff) { | ||||
| $this->diff = $diff; | $this->diff = $diff; | ||||
| return $this; | return $this; | ||||
| } | } | ||||
| public function render() { | public function render() { | ||||
| $viewer = $this->getUser(); | $viewer = $this->getUser(); | ||||
| $reviewers = $this->reviewers; | $reviewers = $this->reviewers; | ||||
| $diff = $this->diff; | |||||
| $handles = $this->handles; | |||||
| $view = new PHUIStatusListView(); | $view = new PHUIStatusListView(); | ||||
| // Move resigned reviewers to the bottom. | // Move resigned reviewers to the bottom. | ||||
| $head = array(); | $head = array(); | ||||
| $tail = array(); | $tail = array(); | ||||
| foreach ($reviewers as $key => $reviewer) { | foreach ($reviewers as $key => $reviewer) { | ||||
| if ($reviewer->isResigned()) { | if ($reviewer->isResigned()) { | ||||
| $tail[$key] = $reviewer; | $tail[$key] = $reviewer; | ||||
| } else { | } else { | ||||
| $head[$key] = $reviewer; | $head[$key] = $reviewer; | ||||
| } | } | ||||
| } | } | ||||
| PhabricatorPolicyFilterSet::loadHandleViewCapabilities( | |||||
| $viewer, | |||||
| $handles, | |||||
| array($diff)); | |||||
| $reviewers = $head + $tail; | $reviewers = $head + $tail; | ||||
| foreach ($reviewers as $reviewer) { | foreach ($reviewers as $reviewer) { | ||||
| $phid = $reviewer->getReviewerPHID(); | $phid = $reviewer->getReviewerPHID(); | ||||
| $handle = $this->handles[$phid]; | $handle = $handles[$phid]; | ||||
| $action_phid = $reviewer->getLastActionDiffPHID(); | $action_phid = $reviewer->getLastActionDiffPHID(); | ||||
| $is_current_action = $this->isCurrent($action_phid); | $is_current_action = $this->isCurrent($action_phid); | ||||
| $is_voided = (bool)$reviewer->getVoidedPHID(); | $is_voided = (bool)$reviewer->getVoidedPHID(); | ||||
| $comment_phid = $reviewer->getLastCommentDiffPHID(); | $comment_phid = $reviewer->getLastCommentDiffPHID(); | ||||
| $is_current_comment = $this->isCurrent($comment_phid); | $is_current_comment = $this->isCurrent($comment_phid); | ||||
| ▲ Show 20 Lines • Show All 94 Lines • ▼ Show 20 Lines | foreach ($reviewers as $reviewer) { | ||||
| $icon = PHUIStatusItemView::ICON_QUESTION; | $icon = PHUIStatusItemView::ICON_QUESTION; | ||||
| $color = 'bluegrey'; | $color = 'bluegrey'; | ||||
| $label = pht('Unknown ("%s")', $reviewer->getReviewerStatus()); | $label = pht('Unknown ("%s")', $reviewer->getReviewerStatus()); | ||||
| break; | break; | ||||
| } | } | ||||
| $item->setIcon($icon, $color, $label); | $item->setIcon($icon, $color, $label); | ||||
| $item->setTarget($handle->renderHovercardLink()); | $item->setTarget( | ||||
| $handle->renderHovercardLink( | |||||
| null, | |||||
| $diff->getPHID())); | |||||
| if ($reviewer->isPackage()) { | if ($reviewer->isPackage()) { | ||||
| if (!$reviewer->getChangesets()) { | if (!$reviewer->getChangesets()) { | ||||
| $item->setNote(pht('(Owns No Changed Paths)')); | $item->setNote(pht('(Owns No Changed Paths)')); | ||||
| } | } | ||||
| } | } | ||||
| if ($handle->hasCapabilities()) { | |||||
| if (!$handle->hasViewCapability($diff)) { | |||||
| $item | |||||
| ->setIcon('fa-eye-slash', 'red') | |||||
| ->setNote(pht('No View Permission')) | |||||
| ->setIsExiled(true); | |||||
| } | |||||
| } | |||||
| $view->addItem($item); | $view->addItem($item); | ||||
| } | } | ||||
| return $view; | return $view; | ||||
| } | } | ||||
| private function isCurrent($action_phid) { | private function isCurrent($action_phid) { | ||||
| if (!$this->diff) { | if (!$this->diff) { | ||||
| Show All 20 Lines | |||||