@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.

Migrate Project lock to modular transactions

Summary: See T12673

Test Plan: Unit tests pass. Locked and unlocked a project and saw timeline changes.

Reviewers: #blessed_reviewers, epriestley

Reviewed By: #blessed_reviewers, epriestley

Subscribers: epriestley

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

+62 -60
+2
src/__phutil_library_map__.php
··· 3630 3630 'PhabricatorProjectListController' => 'applications/project/controller/PhabricatorProjectListController.php', 3631 3631 'PhabricatorProjectListView' => 'applications/project/view/PhabricatorProjectListView.php', 3632 3632 'PhabricatorProjectLockController' => 'applications/project/controller/PhabricatorProjectLockController.php', 3633 + 'PhabricatorProjectLockTransaction' => 'applications/project/xaction/PhabricatorProjectLockTransaction.php', 3633 3634 'PhabricatorProjectLogicalAncestorDatasource' => 'applications/project/typeahead/PhabricatorProjectLogicalAncestorDatasource.php', 3634 3635 'PhabricatorProjectLogicalDatasource' => 'applications/project/typeahead/PhabricatorProjectLogicalDatasource.php', 3635 3636 'PhabricatorProjectLogicalOrNotDatasource' => 'applications/project/typeahead/PhabricatorProjectLogicalOrNotDatasource.php', ··· 9048 9049 'PhabricatorProjectListController' => 'PhabricatorProjectController', 9049 9050 'PhabricatorProjectListView' => 'AphrontView', 9050 9051 'PhabricatorProjectLockController' => 'PhabricatorProjectController', 9052 + 'PhabricatorProjectLockTransaction' => 'PhabricatorProjectTransactionType', 9051 9053 'PhabricatorProjectLogicalAncestorDatasource' => 'PhabricatorTypeaheadCompositeDatasource', 9052 9054 'PhabricatorProjectLogicalDatasource' => 'PhabricatorTypeaheadCompositeDatasource', 9053 9055 'PhabricatorProjectLogicalOrNotDatasource' => 'PhabricatorTypeaheadCompositeDatasource',
+2 -1
src/applications/project/controller/PhabricatorProjectLockController.php
··· 49 49 } 50 50 51 51 $xactions[] = id(new PhabricatorProjectTransaction()) 52 - ->setTransactionType(PhabricatorProjectTransaction::TYPE_LOCKED) 52 + ->setTransactionType( 53 + PhabricatorProjectLockTransaction::TRANSACTIONTYPE) 53 54 ->setNewValue($new_value); 54 55 55 56 $editor = id(new PhabricatorProjectTransactionEditor())
+1 -9
src/applications/project/editor/PhabricatorProjectTransactionEditor.php
··· 30 30 $types[] = PhabricatorTransactions::TYPE_EDIT_POLICY; 31 31 $types[] = PhabricatorTransactions::TYPE_JOIN_POLICY; 32 32 33 - $types[] = PhabricatorProjectTransaction::TYPE_LOCKED; 34 33 $types[] = PhabricatorProjectTransaction::TYPE_PARENT; 35 34 $types[] = PhabricatorProjectTransaction::TYPE_MILESTONE; 36 35 $types[] = PhabricatorProjectTransaction::TYPE_HASWORKBOARD; ··· 46 45 PhabricatorApplicationTransaction $xaction) { 47 46 48 47 switch ($xaction->getTransactionType()) { 49 - case PhabricatorProjectTransaction::TYPE_LOCKED: 50 - return (int)$object->getIsMembershipLocked(); 51 48 case PhabricatorProjectTransaction::TYPE_HASWORKBOARD: 52 49 return (int)$object->getHasWorkboard(); 53 50 case PhabricatorProjectTransaction::TYPE_PARENT: ··· 69 66 PhabricatorApplicationTransaction $xaction) { 70 67 71 68 switch ($xaction->getTransactionType()) { 72 - case PhabricatorProjectTransaction::TYPE_LOCKED: 73 69 case PhabricatorProjectTransaction::TYPE_PARENT: 74 70 case PhabricatorProjectTransaction::TYPE_MILESTONE: 75 71 case PhabricatorProjectTransaction::TYPE_DEFAULT_SORT: ··· 93 89 PhabricatorApplicationTransaction $xaction) { 94 90 95 91 switch ($xaction->getTransactionType()) { 96 - case PhabricatorProjectTransaction::TYPE_LOCKED: 97 - $object->setIsMembershipLocked($xaction->getNewValue()); 98 - return; 99 92 case PhabricatorProjectTransaction::TYPE_PARENT: 100 93 $object->setParentProjectPHID($xaction->getNewValue()); 101 94 return; ··· 129 122 $new = $xaction->getNewValue(); 130 123 131 124 switch ($xaction->getTransactionType()) { 132 - case PhabricatorProjectTransaction::TYPE_LOCKED: 133 125 case PhabricatorProjectTransaction::TYPE_PARENT: 134 126 case PhabricatorProjectTransaction::TYPE_MILESTONE: 135 127 case PhabricatorProjectTransaction::TYPE_HASWORKBOARD: ··· 320 312 $object, 321 313 PhabricatorPolicyCapability::CAN_EDIT); 322 314 return; 323 - case PhabricatorProjectTransaction::TYPE_LOCKED: 315 + case PhabricatorProjectLockTransaction::TRANSACTIONTYPE: 324 316 PhabricatorPolicyFilter::requireCapability( 325 317 $this->requireActor(), 326 318 newv($this->getEditorApplicationClass(), array()),
+1 -50
src/applications/project/storage/PhabricatorProjectTransaction.php
··· 3 3 final class PhabricatorProjectTransaction 4 4 extends PhabricatorModularTransaction { 5 5 6 - const TYPE_LOCKED = 'project:locked'; 7 6 const TYPE_PARENT = 'project:parent'; 8 7 const TYPE_MILESTONE = 'project:milestone'; 9 8 const TYPE_HASWORKBOARD = 'project:hasworkboard'; ··· 87 86 } 88 87 89 88 public function getIcon() { 90 - $old = $this->getOldValue(); 91 - $new = $this->getNewValue(); 92 - 93 89 switch ($this->getTransactionType()) { 94 - case self::TYPE_LOCKED: 95 - if ($new) { 96 - return 'fa-lock'; 97 - } else { 98 - return 'fa-unlock'; 99 - } 100 90 case self::TYPE_MEMBERS: 101 91 return 'fa-user'; 102 92 } ··· 115 105 '%s created this project.', 116 106 $this->renderHandleLink($author_phid)); 117 107 118 - case self::TYPE_LOCKED: 119 - if ($new) { 120 - return pht( 121 - "%s locked this project's membership.", 122 - $author_handle); 123 - } else { 124 - return pht( 125 - "%s unlocked this project's membership.", 126 - $author_handle); 127 - } 128 - break; 129 - 130 108 case self::TYPE_MEMBERS: 131 109 $add = array_diff($new, $old); 132 110 $rem = array_diff($old, $new); ··· 196 174 return parent::getTitle(); 197 175 } 198 176 199 - public function getTitleForFeed() { 200 - $author_phid = $this->getAuthorPHID(); 201 - $object_phid = $this->getObjectPHID(); 202 - $author_handle = $this->renderHandleLink($author_phid); 203 - $object_handle = $this->renderHandleLink($object_phid); 204 - 205 - $old = $this->getOldValue(); 206 - $new = $this->getNewValue(); 207 - 208 - switch ($this->getTransactionType()) { 209 - case self::TYPE_LOCKED: 210 - if ($new) { 211 - return pht( 212 - '%s locked membership for %s.', 213 - $author_handle, 214 - $object_handle); 215 - } else { 216 - return pht( 217 - '%s unlocked membership for %s.', 218 - $author_handle, 219 - $object_handle); 220 - } 221 - } 222 - 223 - return parent::getTitleForFeed(); 224 - } 225 - 226 177 public function getMailTags() { 227 178 $tags = array(); 228 179 switch ($this->getTransactionType()) { ··· 247 198 } 248 199 break; 249 200 case PhabricatorProjectStatusTransaction::TRANSACTIONTYPE: 250 - case self::TYPE_LOCKED: 201 + case PhabricatorProjectLockTransaction::TRANSACTIONTYPE: 251 202 default: 252 203 $tags[] = self::MAILTAG_OTHER; 253 204 break;
+56
src/applications/project/xaction/PhabricatorProjectLockTransaction.php
··· 1 + <?php 2 + 3 + final class PhabricatorProjectLockTransaction 4 + extends PhabricatorProjectTransactionType { 5 + 6 + const TRANSACTIONTYPE = 'project:locked'; 7 + 8 + public function generateOldValue($object) { 9 + return (int)$object->getIsMembershipLocked(); 10 + } 11 + 12 + public function applyInternalEffects($object, $value) { 13 + $object->setIsMembershipLocked($value); 14 + } 15 + 16 + public function getTitle() { 17 + $new = $this->getNewValue(); 18 + 19 + if ($new) { 20 + return pht( 21 + "%s locked this project's membership.", 22 + $this->renderAuthor()); 23 + } else { 24 + return pht( 25 + "%s unlocked this project's membership.", 26 + $this->renderAuthor()); 27 + } 28 + } 29 + 30 + public function getTitleForFeed() { 31 + $new = $this->getNewValue(); 32 + 33 + if ($new) { 34 + return pht( 35 + '%s locked %s membership.', 36 + $this->renderAuthor(), 37 + $this->renderObject()); 38 + } else { 39 + return pht( 40 + '%s unlocked %s membership.', 41 + $this->renderAuthor(), 42 + $this->renderObject()); 43 + } 44 + } 45 + 46 + public function getIcon() { 47 + $new = $this->getNewValue(); 48 + 49 + if ($new) { 50 + return 'fa-lock'; 51 + } else { 52 + return 'fa-unlock'; 53 + } 54 + } 55 + 56 + }