3 final class DifferentialRevisionReclaimTransaction
4 extends DifferentialRevisionActionTransaction
{
6 const TRANSACTIONTYPE
= 'differential.revision.reclaim';
7 const ACTIONKEY
= 'reclaim';
9 protected function getRevisionActionLabel(
10 DifferentialRevision
$revision,
11 PhabricatorUser
$viewer) {
12 return pht('Reclaim Revision');
15 protected function getRevisionActionDescription(
16 DifferentialRevision
$revision,
17 PhabricatorUser
$viewer) {
18 return pht('This revision will be reclaimed and reopened.');
21 public function getIcon() {
25 public function getColor() {
29 protected function getRevisionActionOrder() {
33 public function getActionName() {
34 return pht('Reclaimed');
37 public function getCommandKeyword() {
41 public function getCommandAliases() {
45 public function getCommandSummary() {
46 return pht('Reclaim a revision.');
49 public function generateOldValue($object) {
50 return !$object->isAbandoned();
53 public function applyInternalEffects($object, $value) {
54 if ($object->getShouldBroadcast()) {
55 $new_status = DifferentialRevisionStatus
::NEEDS_REVIEW
;
57 $new_status = DifferentialRevisionStatus
::DRAFT
;
59 $object->setModernRevisionStatus($new_status);
62 protected function validateAction($object, PhabricatorUser
$viewer) {
63 if (!$object->isAbandoned()) {
66 'You can not reclaim this revision because it has not been '.
67 'abandoned. Only abandoned revisions can be reclaimed.'));
70 if (!$this->isViewerRevisionAuthor($object, $viewer)) {
73 'You can not reclaim this revision because you are not the '.
74 'revision author. You can only reclaim revisions you own.'));
78 public function getTitle() {
80 '%s reclaimed this revision.',
81 $this->renderAuthor());
84 public function getTitleForFeed() {
87 $this->renderAuthor(),
88 $this->renderObject());
91 public function getTransactionTypeForConduit($xaction) {
95 public function getFieldValuesForConduit($object, $data) {