@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Modularize "HarbormasterBuildableTransaction"

Summary: Ref T13072. Trivially convert this into a modular transaction type.

Test Plan: Issued commands to a buildable.

Subscribers: PHID-OPKG-gm6ozazyms6q6i22gyam

Maniphest Tasks: T13072

Differential Revision: https://secure.phabricator.com/D21694

+80 -133
+5 -1
src/__phutil_library_map__.php
··· 1475 1475 'HarbormasterBuildableEngine' => 'applications/harbormaster/engine/HarbormasterBuildableEngine.php', 1476 1476 'HarbormasterBuildableInterface' => 'applications/harbormaster/interface/HarbormasterBuildableInterface.php', 1477 1477 'HarbormasterBuildableListController' => 'applications/harbormaster/controller/HarbormasterBuildableListController.php', 1478 + 'HarbormasterBuildableMessageTransaction' => 'applications/harbormaster/xaction/buildable/HarbormasterBuildableMessageTransaction.php', 1478 1479 'HarbormasterBuildablePHIDType' => 'applications/harbormaster/phid/HarbormasterBuildablePHIDType.php', 1479 1480 'HarbormasterBuildableQuery' => 'applications/harbormaster/query/HarbormasterBuildableQuery.php', 1480 1481 'HarbormasterBuildableSearchAPIMethod' => 'applications/harbormaster/conduit/HarbormasterBuildableSearchAPIMethod.php', ··· 1483 1484 'HarbormasterBuildableTransaction' => 'applications/harbormaster/storage/HarbormasterBuildableTransaction.php', 1484 1485 'HarbormasterBuildableTransactionEditor' => 'applications/harbormaster/editor/HarbormasterBuildableTransactionEditor.php', 1485 1486 'HarbormasterBuildableTransactionQuery' => 'applications/harbormaster/query/HarbormasterBuildableTransactionQuery.php', 1487 + 'HarbormasterBuildableTransactionType' => 'applications/harbormaster/xaction/buildable/HarbormasterBuildableTransactionType.php', 1486 1488 'HarbormasterBuildableViewController' => 'applications/harbormaster/controller/HarbormasterBuildableViewController.php', 1487 1489 'HarbormasterBuildkiteBuildStepImplementation' => 'applications/harbormaster/step/HarbormasterBuildkiteBuildStepImplementation.php', 1488 1490 'HarbormasterBuildkiteBuildableInterface' => 'applications/harbormaster/interface/HarbormasterBuildkiteBuildableInterface.php', ··· 7730 7732 'HarbormasterBuildableActionController' => 'HarbormasterController', 7731 7733 'HarbormasterBuildableEngine' => 'Phobject', 7732 7734 'HarbormasterBuildableListController' => 'HarbormasterController', 7735 + 'HarbormasterBuildableMessageTransaction' => 'HarbormasterBuildableTransactionType', 7733 7736 'HarbormasterBuildablePHIDType' => 'PhabricatorPHIDType', 7734 7737 'HarbormasterBuildableQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', 7735 7738 'HarbormasterBuildableSearchAPIMethod' => 'PhabricatorSearchEngineAPIMethod', 7736 7739 'HarbormasterBuildableSearchEngine' => 'PhabricatorApplicationSearchEngine', 7737 7740 'HarbormasterBuildableStatus' => 'Phobject', 7738 - 'HarbormasterBuildableTransaction' => 'PhabricatorApplicationTransaction', 7741 + 'HarbormasterBuildableTransaction' => 'PhabricatorModularTransaction', 7739 7742 'HarbormasterBuildableTransactionEditor' => 'PhabricatorApplicationTransactionEditor', 7740 7743 'HarbormasterBuildableTransactionQuery' => 'PhabricatorApplicationTransactionQuery', 7744 + 'HarbormasterBuildableTransactionType' => 'PhabricatorModularTransactionType', 7741 7745 'HarbormasterBuildableViewController' => 'HarbormasterController', 7742 7746 'HarbormasterBuildkiteBuildStepImplementation' => 'HarbormasterBuildStepImplementation', 7743 7747 'HarbormasterBuildkiteHookController' => 'HarbormasterController',
+3 -7
src/applications/harbormaster/controller/HarbormasterBuildableActionController.php
··· 111 111 ->setContinueOnNoEffect(true) 112 112 ->setContinueOnMissingFields(true); 113 113 114 + $xaction_type = HarbormasterBuildableMessageTransaction::TRANSACTIONTYPE; 115 + 114 116 $xaction = id(new HarbormasterBuildableTransaction()) 115 - ->setTransactionType(HarbormasterBuildableTransaction::TYPE_COMMAND) 117 + ->setTransactionType($xaction_type) 116 118 ->setNewValue($action); 117 119 118 120 $editor->applyTransactions($buildable, array($xaction)); 119 - 120 - $build_editor = id(new HarbormasterBuildTransactionEditor()) 121 - ->setActor($viewer) 122 - ->setContentSourceFromRequest($request) 123 - ->setContinueOnNoEffect(true) 124 - ->setContinueOnMissingFields(true); 125 121 126 122 foreach ($can_send as $build) { 127 123 $build->sendMessage(
-56
src/applications/harbormaster/editor/HarbormasterBuildableTransactionEditor.php
··· 11 11 return pht('Harbormaster Buildables'); 12 12 } 13 13 14 - public function getTransactionTypes() { 15 - $types = parent::getTransactionTypes(); 16 - 17 - $types[] = HarbormasterBuildableTransaction::TYPE_COMMAND; 18 - 19 - return $types; 20 - } 21 - 22 - protected function getCustomTransactionOldValue( 23 - PhabricatorLiskDAO $object, 24 - PhabricatorApplicationTransaction $xaction) { 25 - 26 - switch ($xaction->getTransactionType()) { 27 - case HarbormasterBuildableTransaction::TYPE_COMMAND: 28 - return null; 29 - } 30 - 31 - return parent::getCustomTransactionOldValue($object, $xaction); 32 - } 33 - 34 - protected function getCustomTransactionNewValue( 35 - PhabricatorLiskDAO $object, 36 - PhabricatorApplicationTransaction $xaction) { 37 - 38 - switch ($xaction->getTransactionType()) { 39 - case HarbormasterBuildableTransaction::TYPE_COMMAND: 40 - return $xaction->getNewValue(); 41 - } 42 - 43 - return parent::getCustomTransactionNewValue($object, $xaction); 44 - } 45 - 46 - protected function applyCustomInternalTransaction( 47 - PhabricatorLiskDAO $object, 48 - PhabricatorApplicationTransaction $xaction) { 49 - 50 - switch ($xaction->getTransactionType()) { 51 - case HarbormasterBuildableTransaction::TYPE_COMMAND: 52 - return; 53 - } 54 - 55 - return parent::applyCustomInternalTransaction($object, $xaction); 56 - } 57 - 58 - protected function applyCustomExternalTransaction( 59 - PhabricatorLiskDAO $object, 60 - PhabricatorApplicationTransaction $xaction) { 61 - 62 - switch ($xaction->getTransactionType()) { 63 - case HarbormasterBuildableTransaction::TYPE_COMMAND: 64 - return; 65 - } 66 - 67 - return parent::applyCustomExternalTransaction($object, $xaction); 68 - } 69 - 70 14 }
+3 -69
src/applications/harbormaster/storage/HarbormasterBuildableTransaction.php
··· 1 1 <?php 2 2 3 3 final class HarbormasterBuildableTransaction 4 - extends PhabricatorApplicationTransaction { 5 - 6 - const TYPE_COMMAND = 'harbormaster:buildable:command'; 4 + extends PhabricatorModularTransaction { 7 5 8 6 public function getApplicationName() { 9 7 return 'harbormaster'; ··· 13 11 return HarbormasterBuildablePHIDType::TYPECONST; 14 12 } 15 13 16 - public function getTitle() { 17 - $author_phid = $this->getAuthorPHID(); 18 - 19 - $old = $this->getOldValue(); 20 - $new = $this->getNewValue(); 21 - 22 - switch ($this->getTransactionType()) { 23 - case self::TYPE_COMMAND: 24 - switch ($new) { 25 - case HarbormasterBuildMessageRestartTransaction::MESSAGETYPE: 26 - return pht( 27 - '%s restarted this buildable.', 28 - $this->renderHandleLink($author_phid)); 29 - case HarbormasterBuildMessageResumeTransaction::MESSAGETYPE: 30 - return pht( 31 - '%s resumed this buildable.', 32 - $this->renderHandleLink($author_phid)); 33 - case HarbormasterBuildMessagePauseTransaction::MESSAGETYPE: 34 - return pht( 35 - '%s paused this buildable.', 36 - $this->renderHandleLink($author_phid)); 37 - case HarbormasterBuildMessageAbortTransaction::MESSAGETYPE: 38 - return pht( 39 - '%s aborted this buildable.', 40 - $this->renderHandleLink($author_phid)); 41 - } 42 - } 43 - return parent::getTitle(); 44 - } 45 - 46 - public function getIcon() { 47 - $author_phid = $this->getAuthorPHID(); 48 - 49 - $old = $this->getOldValue(); 50 - $new = $this->getNewValue(); 51 - 52 - switch ($this->getTransactionType()) { 53 - case self::TYPE_COMMAND: 54 - switch ($new) { 55 - case HarbormasterBuildMessageRestartTransaction::MESSAGETYPE: 56 - return 'fa-backward'; 57 - case HarbormasterBuildMessageResumeTransaction::MESSAGETYPE: 58 - return 'fa-play'; 59 - case HarbormasterBuildMessagePauseTransaction::MESSAGETYPE: 60 - return 'fa-pause'; 61 - case HarbormasterBuildMessageAbortTransaction::MESSAGETYPE: 62 - return 'fa-exclamation-triangle'; 63 - } 64 - } 65 - 66 - return parent::getIcon(); 14 + public function getBaseTransactionClass() { 15 + return 'HarbormasterBuildableTransactionType'; 67 16 } 68 17 69 - public function getColor() { 70 - $author_phid = $this->getAuthorPHID(); 71 - 72 - $old = $this->getOldValue(); 73 - $new = $this->getNewValue(); 74 - 75 - switch ($this->getTransactionType()) { 76 - case self::TYPE_COMMAND: 77 - switch ($new) { 78 - case HarbormasterBuildMessagePauseTransaction::MESSAGETYPE: 79 - return 'red'; 80 - } 81 - } 82 - return parent::getColor(); 83 - } 84 18 }
+65
src/applications/harbormaster/xaction/buildable/HarbormasterBuildableMessageTransaction.php
··· 1 + <?php 2 + 3 + final class HarbormasterBuildableMessageTransaction 4 + extends HarbormasterBuildableTransactionType { 5 + 6 + const TRANSACTIONTYPE = 'harbormaster:buildable:command'; 7 + 8 + public function generateOldValue($object) { 9 + return null; 10 + } 11 + 12 + public function getTitle() { 13 + $new = $this->getNewValue(); 14 + 15 + switch ($new) { 16 + case HarbormasterBuildMessageRestartTransaction::MESSAGETYPE: 17 + return pht( 18 + '%s restarted this buildable.', 19 + $this->renderAuthor()); 20 + case HarbormasterBuildMessageResumeTransaction::MESSAGETYPE: 21 + return pht( 22 + '%s resumed this buildable.', 23 + $this->renderAuthor()); 24 + case HarbormasterBuildMessagePauseTransaction::MESSAGETYPE: 25 + return pht( 26 + '%s paused this buildable.', 27 + $this->renderAuthor()); 28 + case HarbormasterBuildMessageAbortTransaction::MESSAGETYPE: 29 + return pht( 30 + '%s aborted this buildable.', 31 + $this->renderAuthor()); 32 + } 33 + 34 + return parent::getTitle(); 35 + } 36 + 37 + public function getIcon() { 38 + $new = $this->getNewValue(); 39 + 40 + switch ($new) { 41 + case HarbormasterBuildMessageRestartTransaction::MESSAGETYPE: 42 + return 'fa-backward'; 43 + case HarbormasterBuildMessageResumeTransaction::MESSAGETYPE: 44 + return 'fa-play'; 45 + case HarbormasterBuildMessagePauseTransaction::MESSAGETYPE: 46 + return 'fa-pause'; 47 + case HarbormasterBuildMessageAbortTransaction::MESSAGETYPE: 48 + return 'fa-exclamation-triangle'; 49 + } 50 + 51 + return parent::getIcon(); 52 + } 53 + 54 + public function getColor() { 55 + $new = $this->getNewValue(); 56 + 57 + switch ($new) { 58 + case HarbormasterBuildMessagePauseTransaction::MESSAGETYPE: 59 + return 'red'; 60 + } 61 + 62 + return parent::getColor(); 63 + } 64 + 65 + }
+4
src/applications/harbormaster/xaction/buildable/HarbormasterBuildableTransactionType.php
··· 1 + <?php 2 + 3 + abstract class HarbormasterBuildableTransactionType 4 + extends PhabricatorModularTransactionType {}