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

Convert Nuance Items to Modular Transactions

Summary:
Ref T12738. Moves existing non-modular transactions to modular transactions.

Some of these are pretty flimsy, but a lot of them don't actually work or do anything in Nuance yet anyway.

Test Plan: Gently poked Nuance, nothing fell over.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T12738

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

+180 -162
+19 -1
src/__phutil_library_map__.php
··· 1620 1620 'NuanceItemActionController' => 'applications/nuance/controller/NuanceItemActionController.php', 1621 1621 'NuanceItemCommand' => 'applications/nuance/storage/NuanceItemCommand.php', 1622 1622 'NuanceItemCommandQuery' => 'applications/nuance/query/NuanceItemCommandQuery.php', 1623 + 'NuanceItemCommandTransaction' => 'applications/nuance/xaction/NuanceItemCommandTransaction.php', 1623 1624 'NuanceItemController' => 'applications/nuance/controller/NuanceItemController.php', 1624 1625 'NuanceItemEditor' => 'applications/nuance/editor/NuanceItemEditor.php', 1625 1626 'NuanceItemListController' => 'applications/nuance/controller/NuanceItemListController.php', 1626 1627 'NuanceItemManageController' => 'applications/nuance/controller/NuanceItemManageController.php', 1628 + 'NuanceItemOwnerTransaction' => 'applications/nuance/xaction/NuanceItemOwnerTransaction.php', 1627 1629 'NuanceItemPHIDType' => 'applications/nuance/phid/NuanceItemPHIDType.php', 1630 + 'NuanceItemPropertyTransaction' => 'applications/nuance/xaction/NuanceItemPropertyTransaction.php', 1628 1631 'NuanceItemQuery' => 'applications/nuance/query/NuanceItemQuery.php', 1632 + 'NuanceItemQueueTransaction' => 'applications/nuance/xaction/NuanceItemQueueTransaction.php', 1633 + 'NuanceItemRequestorTransaction' => 'applications/nuance/xaction/NuanceItemRequestorTransaction.php', 1629 1634 'NuanceItemSearchEngine' => 'applications/nuance/query/NuanceItemSearchEngine.php', 1635 + 'NuanceItemSourceTransaction' => 'applications/nuance/xaction/NuanceItemSourceTransaction.php', 1630 1636 'NuanceItemTransaction' => 'applications/nuance/storage/NuanceItemTransaction.php', 1631 1637 'NuanceItemTransactionComment' => 'applications/nuance/storage/NuanceItemTransactionComment.php', 1632 1638 'NuanceItemTransactionQuery' => 'applications/nuance/query/NuanceItemTransactionQuery.php', 1639 + 'NuanceItemTransactionType' => 'applications/nuance/xaction/NuanceItemTransactionType.php', 1633 1640 'NuanceItemType' => 'applications/nuance/item/NuanceItemType.php', 1634 1641 'NuanceItemUpdateWorker' => 'applications/nuance/worker/NuanceItemUpdateWorker.php', 1635 1642 'NuanceItemViewController' => 'applications/nuance/controller/NuanceItemViewController.php', ··· 1651 1658 'NuanceQueueTransaction' => 'applications/nuance/storage/NuanceQueueTransaction.php', 1652 1659 'NuanceQueueTransactionComment' => 'applications/nuance/storage/NuanceQueueTransactionComment.php', 1653 1660 'NuanceQueueTransactionQuery' => 'applications/nuance/query/NuanceQueueTransactionQuery.php', 1661 + 'NuanceQueueTransactionType' => 'applications/nuance/xaction/NuanceQueueTransactionType.php', 1654 1662 'NuanceQueueViewController' => 'applications/nuance/controller/NuanceQueueViewController.php', 1655 1663 'NuanceSchemaSpec' => 'applications/nuance/storage/NuanceSchemaSpec.php', 1656 1664 'NuanceSource' => 'applications/nuance/storage/NuanceSource.php', ··· 1672 1680 'NuanceSourceTransaction' => 'applications/nuance/storage/NuanceSourceTransaction.php', 1673 1681 'NuanceSourceTransactionComment' => 'applications/nuance/storage/NuanceSourceTransactionComment.php', 1674 1682 'NuanceSourceTransactionQuery' => 'applications/nuance/query/NuanceSourceTransactionQuery.php', 1683 + 'NuanceSourceTransactionType' => 'applications/nuance/xaction/NuanceSourceTransactionType.php', 1675 1684 'NuanceSourceViewController' => 'applications/nuance/controller/NuanceSourceViewController.php', 1676 1685 'NuanceTransaction' => 'applications/nuance/storage/NuanceTransaction.php', 1677 1686 'NuanceWorker' => 'applications/nuance/worker/NuanceWorker.php', ··· 6720 6729 'PhabricatorPolicyInterface', 6721 6730 ), 6722 6731 'NuanceItemCommandQuery' => 'NuanceQuery', 6732 + 'NuanceItemCommandTransaction' => 'NuanceItemTransactionType', 6723 6733 'NuanceItemController' => 'NuanceController', 6724 6734 'NuanceItemEditor' => 'PhabricatorApplicationTransactionEditor', 6725 6735 'NuanceItemListController' => 'NuanceItemController', 6726 6736 'NuanceItemManageController' => 'NuanceController', 6737 + 'NuanceItemOwnerTransaction' => 'NuanceItemTransactionType', 6727 6738 'NuanceItemPHIDType' => 'PhabricatorPHIDType', 6739 + 'NuanceItemPropertyTransaction' => 'NuanceItemTransactionType', 6728 6740 'NuanceItemQuery' => 'NuanceQuery', 6741 + 'NuanceItemQueueTransaction' => 'NuanceItemTransactionType', 6742 + 'NuanceItemRequestorTransaction' => 'NuanceItemTransactionType', 6729 6743 'NuanceItemSearchEngine' => 'PhabricatorApplicationSearchEngine', 6744 + 'NuanceItemSourceTransaction' => 'NuanceItemTransactionType', 6730 6745 'NuanceItemTransaction' => 'NuanceTransaction', 6731 6746 'NuanceItemTransactionComment' => 'PhabricatorApplicationTransactionComment', 6732 6747 'NuanceItemTransactionQuery' => 'PhabricatorApplicationTransactionQuery', 6748 + 'NuanceItemTransactionType' => 'PhabricatorModularTransactionType', 6733 6749 'NuanceItemType' => 'Phobject', 6734 6750 'NuanceItemUpdateWorker' => 'NuanceWorker', 6735 6751 'NuanceItemViewController' => 'NuanceController', ··· 6755 6771 'NuanceQueueTransaction' => 'NuanceTransaction', 6756 6772 'NuanceQueueTransactionComment' => 'PhabricatorApplicationTransactionComment', 6757 6773 'NuanceQueueTransactionQuery' => 'PhabricatorApplicationTransactionQuery', 6774 + 'NuanceQueueTransactionType' => 'PhabricatorModularTransactionType', 6758 6775 'NuanceQueueViewController' => 'NuanceQueueController', 6759 6776 'NuanceSchemaSpec' => 'PhabricatorConfigSchemaSpec', 6760 6777 'NuanceSource' => array( ··· 6781 6798 'NuanceSourceTransaction' => 'NuanceTransaction', 6782 6799 'NuanceSourceTransactionComment' => 'PhabricatorApplicationTransactionComment', 6783 6800 'NuanceSourceTransactionQuery' => 'PhabricatorApplicationTransactionQuery', 6801 + 'NuanceSourceTransactionType' => 'PhabricatorModularTransactionType', 6784 6802 'NuanceSourceViewController' => 'NuanceSourceController', 6785 - 'NuanceTransaction' => 'PhabricatorApplicationTransaction', 6803 + 'NuanceTransaction' => 'PhabricatorModularTransaction', 6786 6804 'NuanceWorker' => 'PhabricatorWorker', 6787 6805 'OwnersConduitAPIMethod' => 'ConduitAPIMethod', 6788 6806 'OwnersEditConduitAPIMethod' => 'PhabricatorEditEngineAPIMethod',
-94
src/applications/nuance/editor/NuanceItemEditor.php
··· 14 14 public function getTransactionTypes() { 15 15 $types = parent::getTransactionTypes(); 16 16 17 - $types[] = NuanceItemTransaction::TYPE_OWNER; 18 - $types[] = NuanceItemTransaction::TYPE_SOURCE; 19 - $types[] = NuanceItemTransaction::TYPE_REQUESTOR; 20 - $types[] = NuanceItemTransaction::TYPE_PROPERTY; 21 - $types[] = NuanceItemTransaction::TYPE_QUEUE; 22 - $types[] = NuanceItemTransaction::TYPE_COMMAND; 23 - 24 - $types[] = PhabricatorTransactions::TYPE_EDGE; 25 - $types[] = PhabricatorTransactions::TYPE_COMMENT; 26 17 $types[] = PhabricatorTransactions::TYPE_VIEW_POLICY; 27 18 $types[] = PhabricatorTransactions::TYPE_EDIT_POLICY; 28 19 29 20 return $types; 30 - } 31 - 32 - protected function getCustomTransactionOldValue( 33 - PhabricatorLiskDAO $object, 34 - PhabricatorApplicationTransaction $xaction) { 35 - 36 - switch ($xaction->getTransactionType()) { 37 - case NuanceItemTransaction::TYPE_REQUESTOR: 38 - return $object->getRequestorPHID(); 39 - case NuanceItemTransaction::TYPE_SOURCE: 40 - return $object->getSourcePHID(); 41 - case NuanceItemTransaction::TYPE_OWNER: 42 - return $object->getOwnerPHID(); 43 - case NuanceItemTransaction::TYPE_QUEUE: 44 - return $object->getQueuePHID(); 45 - case NuanceItemTransaction::TYPE_PROPERTY: 46 - $key = $xaction->getMetadataValue( 47 - NuanceItemTransaction::PROPERTY_KEY); 48 - return $object->getNuanceProperty($key); 49 - case NuanceItemTransaction::TYPE_COMMAND: 50 - return null; 51 - } 52 - 53 - return parent::getCustomTransactionOldValue($object, $xaction); 54 - } 55 - 56 - protected function getCustomTransactionNewValue( 57 - PhabricatorLiskDAO $object, 58 - PhabricatorApplicationTransaction $xaction) { 59 - 60 - switch ($xaction->getTransactionType()) { 61 - case NuanceItemTransaction::TYPE_REQUESTOR: 62 - case NuanceItemTransaction::TYPE_SOURCE: 63 - case NuanceItemTransaction::TYPE_OWNER: 64 - case NuanceItemTransaction::TYPE_PROPERTY: 65 - case NuanceItemTransaction::TYPE_QUEUE: 66 - case NuanceItemTransaction::TYPE_COMMAND: 67 - return $xaction->getNewValue(); 68 - } 69 - 70 - return parent::getCustomTransactionNewValue($object, $xaction); 71 - } 72 - 73 - protected function applyCustomInternalTransaction( 74 - PhabricatorLiskDAO $object, 75 - PhabricatorApplicationTransaction $xaction) { 76 - 77 - switch ($xaction->getTransactionType()) { 78 - case NuanceItemTransaction::TYPE_REQUESTOR: 79 - $object->setRequestorPHID($xaction->getNewValue()); 80 - break; 81 - case NuanceItemTransaction::TYPE_SOURCE: 82 - $object->setSourcePHID($xaction->getNewValue()); 83 - break; 84 - case NuanceItemTransaction::TYPE_OWNER: 85 - $object->setOwnerPHID($xaction->getNewValue()); 86 - break; 87 - case NuanceItemTransaction::TYPE_QUEUE: 88 - $object->setQueuePHID($xaction->getNewValue()); 89 - break; 90 - case NuanceItemTransaction::TYPE_PROPERTY: 91 - $key = $xaction->getMetadataValue( 92 - NuanceItemTransaction::PROPERTY_KEY); 93 - $object->setNuanceProperty($key, $xaction->getNewValue()); 94 - break; 95 - case NuanceItemTransaction::TYPE_COMMAND: 96 - break; 97 - } 98 - } 99 - 100 - protected function applyCustomExternalTransaction( 101 - PhabricatorLiskDAO $object, 102 - PhabricatorApplicationTransaction $xaction) { 103 - 104 - switch ($xaction->getTransactionType()) { 105 - case NuanceItemTransaction::TYPE_REQUESTOR: 106 - case NuanceItemTransaction::TYPE_SOURCE: 107 - case NuanceItemTransaction::TYPE_OWNER: 108 - case NuanceItemTransaction::TYPE_PROPERTY: 109 - case NuanceItemTransaction::TYPE_QUEUE: 110 - case NuanceItemTransaction::TYPE_COMMAND: 111 - return; 112 - } 113 - 114 - return parent::applyCustomExternalTransaction($object, $xaction); 115 21 } 116 22 117 23 }
+1 -1
src/applications/nuance/item/NuanceItemType.php
··· 115 115 } 116 116 117 117 $xaction = id(new NuanceItemTransaction()) 118 - ->setTransactionType(NuanceItemTransaction::TYPE_COMMAND) 118 + ->setTransactionType(NuanceItemCommandTransaction::TRANSACTIONTYPE) 119 119 ->setNewValue( 120 120 array( 121 121 'command' => $command->getCommand(),
+4 -3
src/applications/nuance/source/NuanceSourceDefinition.php
··· 162 162 $xactions = array(); 163 163 164 164 $xactions[] = id(new NuanceItemTransaction()) 165 - ->setTransactionType(NuanceItemTransaction::TYPE_SOURCE) 165 + ->setTransactionType(NuanceItemSourceTransaction::TRANSACTIONTYPE) 166 166 ->setNewValue($source->getPHID()); 167 167 168 168 // TODO: Eventually, apply real routing rules. For now, just put everything 169 169 // in the default queue for the source. 170 170 $xactions[] = id(new NuanceItemTransaction()) 171 - ->setTransactionType(NuanceItemTransaction::TYPE_QUEUE) 171 + ->setTransactionType(NuanceItemQueueTransaction::TRANSACTIONTYPE) 172 172 ->setNewValue($source->getDefaultQueuePHID()); 173 173 174 + // TODO: Maybe this should all be modular transactions now? 174 175 foreach ($properties as $key => $property) { 175 176 $xactions[] = id(new NuanceItemTransaction()) 176 - ->setTransactionType(NuanceItemTransaction::TYPE_PROPERTY) 177 + ->setTransactionType(NuanceItemPropertyTransaction::TRANSACTIONTYPE) 177 178 ->setMetadataValue(NuanceItemTransaction::PROPERTY_KEY, $key) 178 179 ->setNewValue($property); 179 180 }
+2 -62
src/applications/nuance/storage/NuanceItemTransaction.php
··· 5 5 6 6 const PROPERTY_KEY = 'property.key'; 7 7 8 - const TYPE_OWNER = 'nuance.item.owner'; 9 - const TYPE_REQUESTOR = 'nuance.item.requestor'; 10 - const TYPE_SOURCE = 'nuance.item.source'; 11 - const TYPE_PROPERTY = 'nuance.item.property'; 12 - const TYPE_QUEUE = 'nuance.item.queue'; 13 - const TYPE_COMMAND = 'nuance.item.command'; 14 - 15 8 public function getApplicationTransactionType() { 16 9 return NuanceItemPHIDType::TYPECONST; 17 10 } ··· 20 13 return new NuanceItemTransactionComment(); 21 14 } 22 15 23 - public function shouldHide() { 24 - $old = $this->getOldValue(); 25 - $type = $this->getTransactionType(); 26 - 27 - switch ($type) { 28 - case self::TYPE_REQUESTOR: 29 - case self::TYPE_SOURCE: 30 - return ($old === null); 31 - } 32 - 33 - return parent::shouldHide(); 34 - } 35 - 36 - public function getRequiredHandlePHIDs() { 37 - $old = $this->getOldValue(); 38 - $new = $this->getNewValue(); 39 - $type = $this->getTransactionType(); 40 - 41 - $phids = parent::getRequiredHandlePHIDs(); 42 - switch ($type) { 43 - case self::TYPE_QUEUE: 44 - if ($old) { 45 - $phids[] = $old; 46 - } 47 - if ($new) { 48 - $phids[] = $new; 49 - } 50 - break; 51 - } 52 - 53 - return $phids; 54 - } 55 - 56 - public function getTitle() { 57 - $old = $this->getOldValue(); 58 - $new = $this->getNewValue(); 59 - $type = $this->getTransactionType(); 60 - 61 - $author_phid = $this->getAuthorPHID(); 62 - 63 - switch ($type) { 64 - case self::TYPE_QUEUE: 65 - return pht( 66 - '%s routed this item to the %s queue.', 67 - $this->renderHandleLink($author_phid), 68 - $this->renderHandleLink($new)); 69 - case self::TYPE_COMMAND: 70 - // TODO: Give item types a chance to render this properly. 71 - return pht( 72 - '%s applied command "%s" to this item.', 73 - $this->renderHandleLink($author_phid), 74 - idx($new, 'command')); 75 - } 76 - 77 - return parent::getTitle(); 16 + public function getBaseTransactionClass() { 17 + return 'NuanceItemTransactionType'; 78 18 } 79 19 80 20 }
+4
src/applications/nuance/storage/NuanceQueueTransaction.php
··· 12 12 return new NuanceQueueTransactionComment(); 13 13 } 14 14 15 + public function getBaseTransactionClass() { 16 + return 'NuanceSourceTransactionType'; 17 + } 18 + 15 19 public function getTitle() { 16 20 $old = $this->getOldValue(); 17 21 $new = $this->getNewValue();
+4
src/applications/nuance/storage/NuanceSourceTransaction.php
··· 14 14 return new NuanceSourceTransactionComment(); 15 15 } 16 16 17 + public function getBaseTransactionClass() { 18 + return 'NuanceSourceTransactionType'; 19 + } 20 + 17 21 public function shouldHide() { 18 22 $old = $this->getOldValue(); 19 23 $new = $this->getNewValue();
+1 -1
src/applications/nuance/storage/NuanceTransaction.php
··· 1 1 <?php 2 2 3 3 abstract class NuanceTransaction 4 - extends PhabricatorApplicationTransaction { 4 + extends PhabricatorModularTransaction { 5 5 6 6 public function getApplicationName() { 7 7 return 'nuance';
+22
src/applications/nuance/xaction/NuanceItemCommandTransaction.php
··· 1 + <?php 2 + 3 + final class NuanceItemCommandTransaction 4 + extends NuanceItemTransactionType { 5 + 6 + const TRANSACTIONTYPE = 'nuance.item.command'; 7 + 8 + public function generateOldValue($object) { 9 + return null; 10 + } 11 + 12 + public function applyInternalEffects($object, $value) { 13 + // TODO: Probably implement this. 14 + } 15 + 16 + public function getTitle() { 17 + return pht( 18 + '%s applied a command to this item.', 19 + $this->renderAuthor()); 20 + } 21 + 22 + }
+27
src/applications/nuance/xaction/NuanceItemOwnerTransaction.php
··· 1 + <?php 2 + 3 + final class NuanceItemOwnerTransaction 4 + extends NuanceItemTransactionType { 5 + 6 + const TRANSACTIONTYPE = 'nuance.item.owner'; 7 + 8 + public function generateOldValue($object) { 9 + return $object->getOwnerPHID(); 10 + } 11 + 12 + public function applyInternalEffects($object, $value) { 13 + $object->setOwnerPHID($value); 14 + } 15 + 16 + public function getTitle() { 17 + 18 + // TODO: Assign, unassign strings probably need variants. 19 + 20 + return pht( 21 + '%s reassigned this item from %s to %s.', 22 + $this->renderAuthor(), 23 + $this->renderHandle($this->getOldValue()), 24 + $this->renderHandle($this->getNewValue())); 25 + } 26 + 27 + }
+27
src/applications/nuance/xaction/NuanceItemPropertyTransaction.php
··· 1 + <?php 2 + 3 + final class NuanceItemPropertyTransaction 4 + extends NuanceItemTransactionType { 5 + 6 + const TRANSACTIONTYPE = 'nuance.item.property'; 7 + 8 + public function generateOldValue($object) { 9 + $property_key = NuanceItemTransaction::PROPERTY_KEY; 10 + $key = $this->getMetadataValue($property_key); 11 + return $object->getNuanceProperty($key); 12 + } 13 + 14 + public function applyInternalEffects($object, $value) { 15 + $property_key = NuanceItemTransaction::PROPERTY_KEY; 16 + $key = $this->getMetadataValue($property_key); 17 + 18 + $object->setNuanceProperty($key, $value); 19 + } 20 + 21 + public function getTitle() { 22 + return pht( 23 + '%s set a property on this item.', 24 + $this->renderAuthor()); 25 + } 26 + 27 + }
+25
src/applications/nuance/xaction/NuanceItemQueueTransaction.php
··· 1 + <?php 2 + 3 + final class NuanceItemQueueTransaction 4 + extends NuanceItemTransactionType { 5 + 6 + const TRANSACTIONTYPE = 'nuance.item.queue'; 7 + 8 + public function generateOldValue($object) { 9 + return $object->getQueuePHID(); 10 + } 11 + 12 + public function applyInternalEffects($object, $value) { 13 + $object->setQueuePHID($value); 14 + } 15 + 16 + public function getTitle() { 17 + return pht( 18 + '%s rerouted this item from %s to %s.', 19 + $this->renderAuthor(), 20 + $this->renderHandle($this->getOldValue()), 21 + $this->renderHandle($this->getNewValue())); 22 + } 23 + 24 + 25 + }
+16
src/applications/nuance/xaction/NuanceItemRequestorTransaction.php
··· 1 + <?php 2 + 3 + final class NuanceItemRequestorTransaction 4 + extends NuanceItemTransactionType { 5 + 6 + const TRANSACTIONTYPE = 'nuance.item.requestor'; 7 + 8 + public function generateOldValue($object) { 9 + return $object->getRequestorPHID(); 10 + } 11 + 12 + public function applyInternalEffects($object, $value) { 13 + $object->setRequestorPHID($value); 14 + } 15 + 16 + }
+16
src/applications/nuance/xaction/NuanceItemSourceTransaction.php
··· 1 + <?php 2 + 3 + final class NuanceItemSourceTransaction 4 + extends NuanceItemTransactionType { 5 + 6 + const TRANSACTIONTYPE = 'nuance.item.source'; 7 + 8 + public function generateOldValue($object) { 9 + return $object->getSourcePHID(); 10 + } 11 + 12 + public function applyInternalEffects($object, $value) { 13 + $object->setSourcePHID($value); 14 + } 15 + 16 + }
+4
src/applications/nuance/xaction/NuanceItemTransactionType.php
··· 1 + <?php 2 + 3 + abstract class NuanceItemTransactionType 4 + extends PhabricatorModularTransactionType {}
+4
src/applications/nuance/xaction/NuanceQueueTransactionType.php
··· 1 + <?php 2 + 3 + abstract class NuanceQueueTransactionType 4 + extends PhabricatorModularTransactionType {}
+4
src/applications/nuance/xaction/NuanceSourceTransactionType.php
··· 1 + <?php 2 + 3 + abstract class NuanceSourceTransactionType 4 + extends PhabricatorModularTransactionType {}