Differential D17569 Diff 42273 src/applications/differential/xaction/DifferentialRevisionAcceptTransaction.php
Changeset View
Changeset View
Standalone View
Standalone View
src/applications/differential/xaction/DifferentialRevisionAcceptTransaction.php
| Show First 20 Lines • Show All 78 Lines • ▼ Show 20 Lines | protected function getActionOptions( | ||||
| $viewer_phid = $viewer->getPHID(); | $viewer_phid = $viewer->getPHID(); | ||||
| if ($viewer_phid) { | if ($viewer_phid) { | ||||
| if (!isset($reviewers[$viewer_phid])) { | if (!isset($reviewers[$viewer_phid])) { | ||||
| $reviewer_phids[$viewer_phid] = $viewer_phid; | $reviewer_phids[$viewer_phid] = $viewer_phid; | ||||
| } | } | ||||
| } | } | ||||
| $default_unchecked = array(); | |||||
| foreach ($reviewers as $reviewer) { | foreach ($reviewers as $reviewer) { | ||||
| $reviewer_phid = $reviewer->getReviewerPHID(); | |||||
| if (!$reviewer->hasAuthority($viewer)) { | if (!$reviewer->hasAuthority($viewer)) { | ||||
| // If the viewer doesn't have authority to act on behalf of a reviewer, | // If the viewer doesn't have authority to act on behalf of a reviewer, | ||||
| // don't include that reviewer as an option. | // we check if they can accept by force. | ||||
| if ($revision->canReviewerForceAccept($viewer, $reviewer)) { | |||||
| $default_unchecked[$reviewer_phid] = true; | |||||
| } else { | |||||
| continue; | continue; | ||||
| } | } | ||||
| } | |||||
| if ($reviewer->isAccepted($diff_phid)) { | if ($reviewer->isAccepted($diff_phid)) { | ||||
| // If a reviewer is already in a full "accepted" state, don't | // If a reviewer is already in a full "accepted" state, don't | ||||
| // include that reviewer as an option. | // include that reviewer as an option. | ||||
| continue; | continue; | ||||
| } | } | ||||
| $reviewer_phid = $reviewer->getReviewerPHID(); | |||||
| $reviewer_phids[$reviewer_phid] = $reviewer_phid; | $reviewer_phids[$reviewer_phid] = $reviewer_phid; | ||||
| } | } | ||||
| $handles = $viewer->loadHandles($reviewer_phids); | $handles = $viewer->loadHandles($reviewer_phids); | ||||
| $head = array(); | |||||
| $tail = array(); | |||||
| foreach ($reviewer_phids as $reviewer_phid) { | foreach ($reviewer_phids as $reviewer_phid) { | ||||
| $is_force = isset($default_unchecked[$reviewer_phid]); | |||||
| if ($is_force) { | |||||
| $tail[] = $reviewer_phid; | |||||
| $options[$reviewer_phid] = pht( | $options[$reviewer_phid] = pht( | ||||
| 'Accept as %s', | 'Force accept as %s', | ||||
| $viewer->renderHandle($reviewer_phid)); | $viewer->renderHandle($reviewer_phid)); | ||||
| } else { | |||||
| $head[] = $reviewer_phid; | |||||
| $value[] = $reviewer_phid; | $value[] = $reviewer_phid; | ||||
| $options[$reviewer_phid] = pht( | |||||
| 'Accept as %s', | |||||
| $viewer->renderHandle($reviewer_phid)); | |||||
| } | } | ||||
| } | |||||
| // Reorder reviewers so "force accept" reviewers come at the end. | |||||
| $options = | |||||
| array_select_keys($options, $head) + | |||||
| array_select_keys($options, $tail); | |||||
| return array($options, $value); | return array($options, $value); | ||||
| } | } | ||||
| public function generateOldValue($object) { | public function generateOldValue($object) { | ||||
| $actor = $this->getActor(); | $actor = $this->getActor(); | ||||
| return $this->isViewerFullyAccepted($object, $actor); | return $this->isViewerFullyAccepted($object, $actor); | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 78 Lines • Show Last 20 Lines | |||||