Path: blob/master/src/applications/differential/xaction/DifferentialRevisionAbandonTransaction.php
12256 views
<?php12final class DifferentialRevisionAbandonTransaction3extends DifferentialRevisionActionTransaction {45const TRANSACTIONTYPE = 'differential.revision.abandon';6const ACTIONKEY = 'abandon';78protected function getRevisionActionLabel(9DifferentialRevision $revision,10PhabricatorUser $viewer) {11return pht('Abandon Revision');12}1314protected function getRevisionActionDescription(15DifferentialRevision $revision,16PhabricatorUser $viewer) {17return pht('This revision will be abandoned and closed.');18}1920public function getIcon() {21return 'fa-plane';22}2324public function getColor() {25return 'indigo';26}2728protected function getRevisionActionOrder() {29return 500;30}3132public function getActionName() {33return pht('Abandoned');34}3536public function getCommandKeyword() {37return 'abandon';38}3940public function getCommandAliases() {41return array();42}4344public function getCommandSummary() {45return pht('Abandon a revision.');46}4748public function generateOldValue($object) {49return $object->isAbandoned();50}5152public function applyInternalEffects($object, $value) {53$status_abandoned = DifferentialRevisionStatus::ABANDONED;54$object->setModernRevisionStatus($status_abandoned);55}5657protected function validateAction($object, PhabricatorUser $viewer) {58if ($object->isClosed()) {59throw new Exception(60pht(61'You can not abandon this revision because it has already been '.62'closed. Only open revisions can be abandoned.'));63}6465$config_key = 'differential.always-allow-abandon';66if (!PhabricatorEnv::getEnvConfig($config_key)) {67if (!$this->isViewerRevisionAuthor($object, $viewer)) {68throw new Exception(69pht(70'You can not abandon this revision because you are not the '.71'author. You can only abandon revisions you own. You can change '.72'this behavior by adjusting the "%s" setting in Config.',73$config_key));74}75}76}7778public function getTitle() {79return pht(80'%s abandoned this revision.',81$this->renderAuthor());82}8384public function getTitleForFeed() {85return pht(86'%s abandoned %s.',87$this->renderAuthor(),88$this->renderObject());89}9091public function getTransactionTypeForConduit($xaction) {92return 'abandon';93}9495public function getFieldValuesForConduit($object, $data) {96return array();97}9899}100101102