[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class AlmanacServiceEditor 4 extends PhabricatorApplicationTransactionEditor { 5 6 public function getEditorApplicationClass() { 7 return 'PhabricatorAlmanacApplication'; 8 } 9 10 public function getEditorObjectsDescription() { 11 return pht('Almanac Service'); 12 } 13 14 public function getTransactionTypes() { 15 $types = parent::getTransactionTypes(); 16 17 $types[] = AlmanacServiceTransaction::TYPE_NAME; 18 $types[] = PhabricatorTransactions::TYPE_VIEW_POLICY; 19 $types[] = PhabricatorTransactions::TYPE_EDIT_POLICY; 20 21 return $types; 22 } 23 24 protected function getCustomTransactionOldValue( 25 PhabricatorLiskDAO $object, 26 PhabricatorApplicationTransaction $xaction) { 27 switch ($xaction->getTransactionType()) { 28 case AlmanacServiceTransaction::TYPE_NAME: 29 return $object->getName(); 30 } 31 32 return parent::getCustomTransactionOldValue($object, $xaction); 33 } 34 35 protected function getCustomTransactionNewValue( 36 PhabricatorLiskDAO $object, 37 PhabricatorApplicationTransaction $xaction) { 38 39 switch ($xaction->getTransactionType()) { 40 case AlmanacServiceTransaction::TYPE_NAME: 41 return $xaction->getNewValue(); 42 } 43 44 return parent::getCustomTransactionNewValue($object, $xaction); 45 } 46 47 protected function applyCustomInternalTransaction( 48 PhabricatorLiskDAO $object, 49 PhabricatorApplicationTransaction $xaction) { 50 51 switch ($xaction->getTransactionType()) { 52 case AlmanacServiceTransaction::TYPE_NAME: 53 $object->setName($xaction->getNewValue()); 54 return; 55 case PhabricatorTransactions::TYPE_VIEW_POLICY: 56 case PhabricatorTransactions::TYPE_EDIT_POLICY: 57 case PhabricatorTransactions::TYPE_EDGE: 58 return; 59 } 60 61 return parent::applyCustomInternalTransaction($object, $xaction); 62 } 63 64 protected function applyCustomExternalTransaction( 65 PhabricatorLiskDAO $object, 66 PhabricatorApplicationTransaction $xaction) { 67 68 switch ($xaction->getTransactionType()) { 69 case AlmanacServiceTransaction::TYPE_NAME: 70 case PhabricatorTransactions::TYPE_VIEW_POLICY: 71 case PhabricatorTransactions::TYPE_EDIT_POLICY: 72 case PhabricatorTransactions::TYPE_EDGE: 73 return; 74 } 75 76 return parent::applyCustomExternalTransaction($object, $xaction); 77 } 78 79 protected function validateTransaction( 80 PhabricatorLiskDAO $object, 81 $type, 82 array $xactions) { 83 84 $errors = parent::validateTransaction($object, $type, $xactions); 85 86 switch ($type) { 87 case AlmanacServiceTransaction::TYPE_NAME: 88 $missing = $this->validateIsEmptyTextField( 89 $object->getName(), 90 $xactions); 91 92 if ($missing) { 93 $error = new PhabricatorApplicationTransactionValidationError( 94 $type, 95 pht('Required'), 96 pht('Service name is required.'), 97 nonempty(last($xactions), null)); 98 99 $error->setIsMissingFieldError(true); 100 $errors[] = $error; 101 } else { 102 foreach ($xactions as $xaction) { 103 $message = null; 104 105 $name = $xaction->getNewValue(); 106 107 try { 108 AlmanacNames::validateServiceOrDeviceName($name); 109 } catch (Exception $ex) { 110 $message = $ex->getMessage(); 111 } 112 113 if ($message !== null) { 114 $error = new PhabricatorApplicationTransactionValidationError( 115 $type, 116 pht('Invalid'), 117 $message, 118 $xaction); 119 $errors[] = $error; 120 } 121 } 122 } 123 124 if ($xactions) { 125 $duplicate = id(new AlmanacServiceQuery()) 126 ->setViewer(PhabricatorUser::getOmnipotentUser()) 127 ->withNames(array(last($xactions)->getNewValue())) 128 ->executeOne(); 129 if ($duplicate && ($duplicate->getID() != $object->getID())) { 130 $error = new PhabricatorApplicationTransactionValidationError( 131 $type, 132 pht('Not Unique'), 133 pht('Almanac services must have unique names.'), 134 last($xactions)); 135 $errors[] = $error; 136 } 137 } 138 139 break; 140 } 141 142 return $errors; 143 } 144 145 146 147 }
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 |