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 |