[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhabricatorProjectColumnTransactionEditor 4 extends PhabricatorApplicationTransactionEditor { 5 6 public function getEditorApplicationClass() { 7 return 'PhabricatorProjectApplication'; 8 } 9 10 public function getEditorObjectsDescription() { 11 return pht('Workboard Columns'); 12 } 13 14 public function getTransactionTypes() { 15 $types = parent::getTransactionTypes(); 16 17 $types[] = PhabricatorProjectColumnTransaction::TYPE_NAME; 18 $types[] = PhabricatorProjectColumnTransaction::TYPE_STATUS; 19 $types[] = PhabricatorProjectColumnTransaction::TYPE_LIMIT; 20 21 return $types; 22 } 23 24 protected function getCustomTransactionOldValue( 25 PhabricatorLiskDAO $object, 26 PhabricatorApplicationTransaction $xaction) { 27 28 switch ($xaction->getTransactionType()) { 29 case PhabricatorProjectColumnTransaction::TYPE_NAME: 30 return $object->getName(); 31 case PhabricatorProjectColumnTransaction::TYPE_STATUS: 32 return $object->getStatus(); 33 case PhabricatorProjectColumnTransaction::TYPE_LIMIT: 34 return $object->getPointLimit(); 35 36 } 37 38 return parent::getCustomTransactionOldValue($object, $xaction); 39 } 40 41 protected function getCustomTransactionNewValue( 42 PhabricatorLiskDAO $object, 43 PhabricatorApplicationTransaction $xaction) { 44 45 switch ($xaction->getTransactionType()) { 46 case PhabricatorProjectColumnTransaction::TYPE_NAME: 47 case PhabricatorProjectColumnTransaction::TYPE_STATUS: 48 return $xaction->getNewValue(); 49 case PhabricatorProjectColumnTransaction::TYPE_LIMIT: 50 if ($xaction->getNewValue()) { 51 return (int)$xaction->getNewValue(); 52 } 53 return null; 54 } 55 56 return parent::getCustomTransactionNewValue($object, $xaction); 57 } 58 59 protected function applyCustomInternalTransaction( 60 PhabricatorLiskDAO $object, 61 PhabricatorApplicationTransaction $xaction) { 62 63 switch ($xaction->getTransactionType()) { 64 case PhabricatorProjectColumnTransaction::TYPE_NAME: 65 $object->setName($xaction->getNewValue()); 66 return; 67 case PhabricatorProjectColumnTransaction::TYPE_STATUS: 68 $object->setStatus($xaction->getNewValue()); 69 return; 70 case PhabricatorProjectColumnTransaction::TYPE_LIMIT: 71 $object->setPointLimit($xaction->getNewValue()); 72 return; 73 } 74 75 return parent::applyCustomInternalTransaction($object, $xaction); 76 } 77 78 protected function applyCustomExternalTransaction( 79 PhabricatorLiskDAO $object, 80 PhabricatorApplicationTransaction $xaction) { 81 82 switch ($xaction->getTransactionType()) { 83 case PhabricatorProjectColumnTransaction::TYPE_NAME: 84 case PhabricatorProjectColumnTransaction::TYPE_STATUS: 85 case PhabricatorProjectColumnTransaction::TYPE_LIMIT: 86 return; 87 } 88 89 return parent::applyCustomExternalTransaction($object, $xaction); 90 } 91 92 protected function validateTransaction( 93 PhabricatorLiskDAO $object, 94 $type, 95 array $xactions) { 96 97 $errors = parent::validateTransaction($object, $type, $xactions); 98 99 switch ($type) { 100 case PhabricatorProjectColumnTransaction::TYPE_LIMIT: 101 foreach ($xactions as $xaction) { 102 $value = $xaction->getNewValue(); 103 if (strlen($value) && !preg_match('/^\d+\z/', $value)) { 104 $errors[] = new PhabricatorApplicationTransactionValidationError( 105 $type, 106 pht('Invalid'), 107 pht('Column point limit must be empty, or a positive integer.'), 108 $xaction); 109 } 110 } 111 break; 112 case PhabricatorProjectColumnTransaction::TYPE_NAME: 113 $missing = $this->validateIsEmptyTextField( 114 $object->getName(), 115 $xactions); 116 117 // The default "Backlog" column is allowed to be unnamed, which 118 // means we use the default name. 119 120 if ($missing && !$object->isDefaultColumn()) { 121 $error = new PhabricatorApplicationTransactionValidationError( 122 $type, 123 pht('Required'), 124 pht('Column name is required.'), 125 nonempty(last($xactions), null)); 126 127 $error->setIsMissingFieldError(true); 128 $errors[] = $error; 129 } 130 break; 131 } 132 133 return $errors; 134 } 135 136 137 protected function requireCapabilities( 138 PhabricatorLiskDAO $object, 139 PhabricatorApplicationTransaction $xaction) { 140 141 switch ($xaction->getTransactionType()) { 142 case PhabricatorProjectColumnTransaction::TYPE_NAME: 143 case PhabricatorProjectColumnTransaction::TYPE_STATUS: 144 PhabricatorPolicyFilter::requireCapability( 145 $this->requireActor(), 146 $object, 147 PhabricatorPolicyCapability::CAN_EDIT); 148 return; 149 } 150 151 return parent::requireCapabilities($object, $xaction); 152 } 153 154 }
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 |