[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class HarbormasterBuildTransactionEditor 4 extends PhabricatorApplicationTransactionEditor { 5 6 public function getEditorApplicationClass() { 7 return 'PhabricatorHarbormasterApplication'; 8 } 9 10 public function getEditorObjectsDescription() { 11 return pht('Harbormaster Builds'); 12 } 13 14 public function getTransactionTypes() { 15 $types = parent::getTransactionTypes(); 16 17 $types[] = HarbormasterBuildTransaction::TYPE_CREATE; 18 $types[] = HarbormasterBuildTransaction::TYPE_COMMAND; 19 20 return $types; 21 } 22 23 protected function getCustomTransactionOldValue( 24 PhabricatorLiskDAO $object, 25 PhabricatorApplicationTransaction $xaction) { 26 27 switch ($xaction->getTransactionType()) { 28 case HarbormasterBuildTransaction::TYPE_CREATE: 29 case HarbormasterBuildTransaction::TYPE_COMMAND: 30 return null; 31 } 32 33 return parent::getCustomTransactionOldValue($object, $xaction); 34 } 35 36 protected function getCustomTransactionNewValue( 37 PhabricatorLiskDAO $object, 38 PhabricatorApplicationTransaction $xaction) { 39 40 switch ($xaction->getTransactionType()) { 41 case HarbormasterBuildTransaction::TYPE_CREATE: 42 return true; 43 case HarbormasterBuildTransaction::TYPE_COMMAND: 44 return $xaction->getNewValue(); 45 } 46 47 return parent::getCustomTransactionNewValue($object, $xaction); 48 } 49 50 protected function applyCustomInternalTransaction( 51 PhabricatorLiskDAO $object, 52 PhabricatorApplicationTransaction $xaction) { 53 54 switch ($xaction->getTransactionType()) { 55 case HarbormasterBuildTransaction::TYPE_CREATE: 56 return; 57 case HarbormasterBuildTransaction::TYPE_COMMAND: 58 return $this->executeBuildCommand($object, $xaction); 59 } 60 61 return parent::applyCustomInternalTransaction($object, $xaction); 62 } 63 64 private function executeBuildCommand( 65 HarbormasterBuild $build, 66 HarbormasterBuildTransaction $xaction) { 67 68 $command = $xaction->getNewValue(); 69 70 switch ($command) { 71 case HarbormasterBuildCommand::COMMAND_RESTART: 72 $issuable = $build->canRestartBuild(); 73 break; 74 case HarbormasterBuildCommand::COMMAND_STOP: 75 $issuable = $build->canStopBuild(); 76 break; 77 case HarbormasterBuildCommand::COMMAND_RESUME: 78 $issuable = $build->canResumeBuild(); 79 break; 80 default: 81 throw new Exception("Unknown command $command"); 82 } 83 84 if (!$issuable) { 85 return; 86 } 87 88 id(new HarbormasterBuildCommand()) 89 ->setAuthorPHID($xaction->getAuthorPHID()) 90 ->setTargetPHID($build->getPHID()) 91 ->setCommand($command) 92 ->save(); 93 94 PhabricatorWorker::scheduleTask( 95 'HarbormasterBuildWorker', 96 array( 97 'buildID' => $build->getID(), 98 )); 99 } 100 101 protected function applyCustomExternalTransaction( 102 PhabricatorLiskDAO $object, 103 PhabricatorApplicationTransaction $xaction) { 104 105 switch ($xaction->getTransactionType()) { 106 case HarbormasterBuildTransaction::TYPE_CREATE: 107 case HarbormasterBuildTransaction::TYPE_COMMAND: 108 return; 109 } 110 111 return parent::applyCustomExternalTransaction($object, $xaction); 112 } 113 114 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |