Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15423146
D17990.id43264.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
21 KB
Referenced Files
None
Subscribers
None
D17990.id43264.diff
View Options
diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -1620,16 +1620,23 @@
'NuanceItemActionController' => 'applications/nuance/controller/NuanceItemActionController.php',
'NuanceItemCommand' => 'applications/nuance/storage/NuanceItemCommand.php',
'NuanceItemCommandQuery' => 'applications/nuance/query/NuanceItemCommandQuery.php',
+ 'NuanceItemCommandTransaction' => 'applications/nuance/xaction/NuanceItemCommandTransaction.php',
'NuanceItemController' => 'applications/nuance/controller/NuanceItemController.php',
'NuanceItemEditor' => 'applications/nuance/editor/NuanceItemEditor.php',
'NuanceItemListController' => 'applications/nuance/controller/NuanceItemListController.php',
'NuanceItemManageController' => 'applications/nuance/controller/NuanceItemManageController.php',
+ 'NuanceItemOwnerTransaction' => 'applications/nuance/xaction/NuanceItemOwnerTransaction.php',
'NuanceItemPHIDType' => 'applications/nuance/phid/NuanceItemPHIDType.php',
+ 'NuanceItemPropertyTransaction' => 'applications/nuance/xaction/NuanceItemPropertyTransaction.php',
'NuanceItemQuery' => 'applications/nuance/query/NuanceItemQuery.php',
+ 'NuanceItemQueueTransaction' => 'applications/nuance/xaction/NuanceItemQueueTransaction.php',
+ 'NuanceItemRequestorTransaction' => 'applications/nuance/xaction/NuanceItemRequestorTransaction.php',
'NuanceItemSearchEngine' => 'applications/nuance/query/NuanceItemSearchEngine.php',
+ 'NuanceItemSourceTransaction' => 'applications/nuance/xaction/NuanceItemSourceTransaction.php',
'NuanceItemTransaction' => 'applications/nuance/storage/NuanceItemTransaction.php',
'NuanceItemTransactionComment' => 'applications/nuance/storage/NuanceItemTransactionComment.php',
'NuanceItemTransactionQuery' => 'applications/nuance/query/NuanceItemTransactionQuery.php',
+ 'NuanceItemTransactionType' => 'applications/nuance/xaction/NuanceItemTransactionType.php',
'NuanceItemType' => 'applications/nuance/item/NuanceItemType.php',
'NuanceItemUpdateWorker' => 'applications/nuance/worker/NuanceItemUpdateWorker.php',
'NuanceItemViewController' => 'applications/nuance/controller/NuanceItemViewController.php',
@@ -1651,6 +1658,7 @@
'NuanceQueueTransaction' => 'applications/nuance/storage/NuanceQueueTransaction.php',
'NuanceQueueTransactionComment' => 'applications/nuance/storage/NuanceQueueTransactionComment.php',
'NuanceQueueTransactionQuery' => 'applications/nuance/query/NuanceQueueTransactionQuery.php',
+ 'NuanceQueueTransactionType' => 'applications/nuance/xaction/NuanceQueueTransactionType.php',
'NuanceQueueViewController' => 'applications/nuance/controller/NuanceQueueViewController.php',
'NuanceSchemaSpec' => 'applications/nuance/storage/NuanceSchemaSpec.php',
'NuanceSource' => 'applications/nuance/storage/NuanceSource.php',
@@ -1672,6 +1680,7 @@
'NuanceSourceTransaction' => 'applications/nuance/storage/NuanceSourceTransaction.php',
'NuanceSourceTransactionComment' => 'applications/nuance/storage/NuanceSourceTransactionComment.php',
'NuanceSourceTransactionQuery' => 'applications/nuance/query/NuanceSourceTransactionQuery.php',
+ 'NuanceSourceTransactionType' => 'applications/nuance/xaction/NuanceSourceTransactionType.php',
'NuanceSourceViewController' => 'applications/nuance/controller/NuanceSourceViewController.php',
'NuanceTransaction' => 'applications/nuance/storage/NuanceTransaction.php',
'NuanceWorker' => 'applications/nuance/worker/NuanceWorker.php',
@@ -6717,16 +6726,23 @@
'PhabricatorPolicyInterface',
),
'NuanceItemCommandQuery' => 'NuanceQuery',
+ 'NuanceItemCommandTransaction' => 'NuanceItemTransactionType',
'NuanceItemController' => 'NuanceController',
'NuanceItemEditor' => 'PhabricatorApplicationTransactionEditor',
'NuanceItemListController' => 'NuanceItemController',
'NuanceItemManageController' => 'NuanceController',
+ 'NuanceItemOwnerTransaction' => 'NuanceItemTransactionType',
'NuanceItemPHIDType' => 'PhabricatorPHIDType',
+ 'NuanceItemPropertyTransaction' => 'NuanceItemTransactionType',
'NuanceItemQuery' => 'NuanceQuery',
+ 'NuanceItemQueueTransaction' => 'NuanceItemTransactionType',
+ 'NuanceItemRequestorTransaction' => 'NuanceItemTransactionType',
'NuanceItemSearchEngine' => 'PhabricatorApplicationSearchEngine',
+ 'NuanceItemSourceTransaction' => 'NuanceItemTransactionType',
'NuanceItemTransaction' => 'NuanceTransaction',
'NuanceItemTransactionComment' => 'PhabricatorApplicationTransactionComment',
'NuanceItemTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
+ 'NuanceItemTransactionType' => 'PhabricatorModularTransactionType',
'NuanceItemType' => 'Phobject',
'NuanceItemUpdateWorker' => 'NuanceWorker',
'NuanceItemViewController' => 'NuanceController',
@@ -6752,6 +6768,7 @@
'NuanceQueueTransaction' => 'NuanceTransaction',
'NuanceQueueTransactionComment' => 'PhabricatorApplicationTransactionComment',
'NuanceQueueTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
+ 'NuanceQueueTransactionType' => 'PhabricatorModularTransactionType',
'NuanceQueueViewController' => 'NuanceQueueController',
'NuanceSchemaSpec' => 'PhabricatorConfigSchemaSpec',
'NuanceSource' => array(
@@ -6778,8 +6795,9 @@
'NuanceSourceTransaction' => 'NuanceTransaction',
'NuanceSourceTransactionComment' => 'PhabricatorApplicationTransactionComment',
'NuanceSourceTransactionQuery' => 'PhabricatorApplicationTransactionQuery',
+ 'NuanceSourceTransactionType' => 'PhabricatorModularTransactionType',
'NuanceSourceViewController' => 'NuanceSourceController',
- 'NuanceTransaction' => 'PhabricatorApplicationTransaction',
+ 'NuanceTransaction' => 'PhabricatorModularTransaction',
'NuanceWorker' => 'PhabricatorWorker',
'OwnersConduitAPIMethod' => 'ConduitAPIMethod',
'OwnersEditConduitAPIMethod' => 'PhabricatorEditEngineAPIMethod',
diff --git a/src/applications/nuance/editor/NuanceItemEditor.php b/src/applications/nuance/editor/NuanceItemEditor.php
--- a/src/applications/nuance/editor/NuanceItemEditor.php
+++ b/src/applications/nuance/editor/NuanceItemEditor.php
@@ -14,104 +14,10 @@
public function getTransactionTypes() {
$types = parent::getTransactionTypes();
- $types[] = NuanceItemTransaction::TYPE_OWNER;
- $types[] = NuanceItemTransaction::TYPE_SOURCE;
- $types[] = NuanceItemTransaction::TYPE_REQUESTOR;
- $types[] = NuanceItemTransaction::TYPE_PROPERTY;
- $types[] = NuanceItemTransaction::TYPE_QUEUE;
- $types[] = NuanceItemTransaction::TYPE_COMMAND;
-
- $types[] = PhabricatorTransactions::TYPE_EDGE;
- $types[] = PhabricatorTransactions::TYPE_COMMENT;
$types[] = PhabricatorTransactions::TYPE_VIEW_POLICY;
$types[] = PhabricatorTransactions::TYPE_EDIT_POLICY;
return $types;
}
- protected function getCustomTransactionOldValue(
- PhabricatorLiskDAO $object,
- PhabricatorApplicationTransaction $xaction) {
-
- switch ($xaction->getTransactionType()) {
- case NuanceItemTransaction::TYPE_REQUESTOR:
- return $object->getRequestorPHID();
- case NuanceItemTransaction::TYPE_SOURCE:
- return $object->getSourcePHID();
- case NuanceItemTransaction::TYPE_OWNER:
- return $object->getOwnerPHID();
- case NuanceItemTransaction::TYPE_QUEUE:
- return $object->getQueuePHID();
- case NuanceItemTransaction::TYPE_PROPERTY:
- $key = $xaction->getMetadataValue(
- NuanceItemTransaction::PROPERTY_KEY);
- return $object->getNuanceProperty($key);
- case NuanceItemTransaction::TYPE_COMMAND:
- return null;
- }
-
- return parent::getCustomTransactionOldValue($object, $xaction);
- }
-
- protected function getCustomTransactionNewValue(
- PhabricatorLiskDAO $object,
- PhabricatorApplicationTransaction $xaction) {
-
- switch ($xaction->getTransactionType()) {
- case NuanceItemTransaction::TYPE_REQUESTOR:
- case NuanceItemTransaction::TYPE_SOURCE:
- case NuanceItemTransaction::TYPE_OWNER:
- case NuanceItemTransaction::TYPE_PROPERTY:
- case NuanceItemTransaction::TYPE_QUEUE:
- case NuanceItemTransaction::TYPE_COMMAND:
- return $xaction->getNewValue();
- }
-
- return parent::getCustomTransactionNewValue($object, $xaction);
- }
-
- protected function applyCustomInternalTransaction(
- PhabricatorLiskDAO $object,
- PhabricatorApplicationTransaction $xaction) {
-
- switch ($xaction->getTransactionType()) {
- case NuanceItemTransaction::TYPE_REQUESTOR:
- $object->setRequestorPHID($xaction->getNewValue());
- break;
- case NuanceItemTransaction::TYPE_SOURCE:
- $object->setSourcePHID($xaction->getNewValue());
- break;
- case NuanceItemTransaction::TYPE_OWNER:
- $object->setOwnerPHID($xaction->getNewValue());
- break;
- case NuanceItemTransaction::TYPE_QUEUE:
- $object->setQueuePHID($xaction->getNewValue());
- break;
- case NuanceItemTransaction::TYPE_PROPERTY:
- $key = $xaction->getMetadataValue(
- NuanceItemTransaction::PROPERTY_KEY);
- $object->setNuanceProperty($key, $xaction->getNewValue());
- break;
- case NuanceItemTransaction::TYPE_COMMAND:
- break;
- }
- }
-
- protected function applyCustomExternalTransaction(
- PhabricatorLiskDAO $object,
- PhabricatorApplicationTransaction $xaction) {
-
- switch ($xaction->getTransactionType()) {
- case NuanceItemTransaction::TYPE_REQUESTOR:
- case NuanceItemTransaction::TYPE_SOURCE:
- case NuanceItemTransaction::TYPE_OWNER:
- case NuanceItemTransaction::TYPE_PROPERTY:
- case NuanceItemTransaction::TYPE_QUEUE:
- case NuanceItemTransaction::TYPE_COMMAND:
- return;
- }
-
- return parent::applyCustomExternalTransaction($object, $xaction);
- }
-
}
diff --git a/src/applications/nuance/item/NuanceItemType.php b/src/applications/nuance/item/NuanceItemType.php
--- a/src/applications/nuance/item/NuanceItemType.php
+++ b/src/applications/nuance/item/NuanceItemType.php
@@ -115,7 +115,7 @@
}
$xaction = id(new NuanceItemTransaction())
- ->setTransactionType(NuanceItemTransaction::TYPE_COMMAND)
+ ->setTransactionType(NuanceItemCommandTransaction::TRANSACTIONTYPE)
->setNewValue(
array(
'command' => $command->getCommand(),
diff --git a/src/applications/nuance/source/NuanceSourceDefinition.php b/src/applications/nuance/source/NuanceSourceDefinition.php
--- a/src/applications/nuance/source/NuanceSourceDefinition.php
+++ b/src/applications/nuance/source/NuanceSourceDefinition.php
@@ -162,18 +162,19 @@
$xactions = array();
$xactions[] = id(new NuanceItemTransaction())
- ->setTransactionType(NuanceItemTransaction::TYPE_SOURCE)
+ ->setTransactionType(NuanceItemSourceTransaction::TRANSACTIONTYPE)
->setNewValue($source->getPHID());
// TODO: Eventually, apply real routing rules. For now, just put everything
// in the default queue for the source.
$xactions[] = id(new NuanceItemTransaction())
- ->setTransactionType(NuanceItemTransaction::TYPE_QUEUE)
+ ->setTransactionType(NuanceItemQueueTransaction::TRANSACTIONTYPE)
->setNewValue($source->getDefaultQueuePHID());
+ // TODO: Maybe this should all be modular transactions now?
foreach ($properties as $key => $property) {
$xactions[] = id(new NuanceItemTransaction())
- ->setTransactionType(NuanceItemTransaction::TYPE_PROPERTY)
+ ->setTransactionType(NuanceItemPropertyTransaction::TRANSACTIONTYPE)
->setMetadataValue(NuanceItemTransaction::PROPERTY_KEY, $key)
->setNewValue($property);
}
diff --git a/src/applications/nuance/storage/NuanceItemTransaction.php b/src/applications/nuance/storage/NuanceItemTransaction.php
--- a/src/applications/nuance/storage/NuanceItemTransaction.php
+++ b/src/applications/nuance/storage/NuanceItemTransaction.php
@@ -5,13 +5,6 @@
const PROPERTY_KEY = 'property.key';
- const TYPE_OWNER = 'nuance.item.owner';
- const TYPE_REQUESTOR = 'nuance.item.requestor';
- const TYPE_SOURCE = 'nuance.item.source';
- const TYPE_PROPERTY = 'nuance.item.property';
- const TYPE_QUEUE = 'nuance.item.queue';
- const TYPE_COMMAND = 'nuance.item.command';
-
public function getApplicationTransactionType() {
return NuanceItemPHIDType::TYPECONST;
}
@@ -20,61 +13,8 @@
return new NuanceItemTransactionComment();
}
- public function shouldHide() {
- $old = $this->getOldValue();
- $type = $this->getTransactionType();
-
- switch ($type) {
- case self::TYPE_REQUESTOR:
- case self::TYPE_SOURCE:
- return ($old === null);
- }
-
- return parent::shouldHide();
- }
-
- public function getRequiredHandlePHIDs() {
- $old = $this->getOldValue();
- $new = $this->getNewValue();
- $type = $this->getTransactionType();
-
- $phids = parent::getRequiredHandlePHIDs();
- switch ($type) {
- case self::TYPE_QUEUE:
- if ($old) {
- $phids[] = $old;
- }
- if ($new) {
- $phids[] = $new;
- }
- break;
- }
-
- return $phids;
- }
-
- public function getTitle() {
- $old = $this->getOldValue();
- $new = $this->getNewValue();
- $type = $this->getTransactionType();
-
- $author_phid = $this->getAuthorPHID();
-
- switch ($type) {
- case self::TYPE_QUEUE:
- return pht(
- '%s routed this item to the %s queue.',
- $this->renderHandleLink($author_phid),
- $this->renderHandleLink($new));
- case self::TYPE_COMMAND:
- // TODO: Give item types a chance to render this properly.
- return pht(
- '%s applied command "%s" to this item.',
- $this->renderHandleLink($author_phid),
- idx($new, 'command'));
- }
-
- return parent::getTitle();
+ public function getBaseTransactionClass() {
+ return 'NuanceItemTransactionType';
}
}
diff --git a/src/applications/nuance/storage/NuanceQueueTransaction.php b/src/applications/nuance/storage/NuanceQueueTransaction.php
--- a/src/applications/nuance/storage/NuanceQueueTransaction.php
+++ b/src/applications/nuance/storage/NuanceQueueTransaction.php
@@ -12,6 +12,10 @@
return new NuanceQueueTransactionComment();
}
+ public function getBaseTransactionClass() {
+ return 'NuanceSourceTransactionType';
+ }
+
public function getTitle() {
$old = $this->getOldValue();
$new = $this->getNewValue();
diff --git a/src/applications/nuance/storage/NuanceSourceTransaction.php b/src/applications/nuance/storage/NuanceSourceTransaction.php
--- a/src/applications/nuance/storage/NuanceSourceTransaction.php
+++ b/src/applications/nuance/storage/NuanceSourceTransaction.php
@@ -14,6 +14,10 @@
return new NuanceSourceTransactionComment();
}
+ public function getBaseTransactionClass() {
+ return 'NuanceSourceTransactionType';
+ }
+
public function shouldHide() {
$old = $this->getOldValue();
$new = $this->getNewValue();
diff --git a/src/applications/nuance/storage/NuanceTransaction.php b/src/applications/nuance/storage/NuanceTransaction.php
--- a/src/applications/nuance/storage/NuanceTransaction.php
+++ b/src/applications/nuance/storage/NuanceTransaction.php
@@ -1,7 +1,7 @@
<?php
abstract class NuanceTransaction
- extends PhabricatorApplicationTransaction {
+ extends PhabricatorModularTransaction {
public function getApplicationName() {
return 'nuance';
diff --git a/src/applications/nuance/xaction/NuanceItemCommandTransaction.php b/src/applications/nuance/xaction/NuanceItemCommandTransaction.php
new file mode 100644
--- /dev/null
+++ b/src/applications/nuance/xaction/NuanceItemCommandTransaction.php
@@ -0,0 +1,22 @@
+<?php
+
+final class NuanceItemCommandTransaction
+ extends NuanceItemTransactionType {
+
+ const TRANSACTIONTYPE = 'nuance.item.command';
+
+ public function generateOldValue($object) {
+ return null;
+ }
+
+ public function applyInternalEffects($object, $value) {
+ // TODO: Probably implement this.
+ }
+
+ public function getTitle() {
+ return pht(
+ '%s applied a command to this item.',
+ $this->renderAuthor());
+ }
+
+}
diff --git a/src/applications/nuance/xaction/NuanceItemOwnerTransaction.php b/src/applications/nuance/xaction/NuanceItemOwnerTransaction.php
new file mode 100644
--- /dev/null
+++ b/src/applications/nuance/xaction/NuanceItemOwnerTransaction.php
@@ -0,0 +1,27 @@
+<?php
+
+final class NuanceItemOwnerTransaction
+ extends NuanceItemTransactionType {
+
+ const TRANSACTIONTYPE = 'nuance.item.owner';
+
+ public function generateOldValue($object) {
+ return $object->getOwnerPHID();
+ }
+
+ public function applyInternalEffects($object, $value) {
+ $object->setOwnerPHID($value);
+ }
+
+ public function getTitle() {
+
+ // TODO: Assign, unassign strings probably need variants.
+
+ return pht(
+ '%s reassigned this item from %s to %s.',
+ $this->renderAuthor(),
+ $this->renderHandle($this->getOldValue()),
+ $this->renderHandle($this->getNewValue()));
+ }
+
+}
diff --git a/src/applications/nuance/xaction/NuanceItemPropertyTransaction.php b/src/applications/nuance/xaction/NuanceItemPropertyTransaction.php
new file mode 100644
--- /dev/null
+++ b/src/applications/nuance/xaction/NuanceItemPropertyTransaction.php
@@ -0,0 +1,27 @@
+<?php
+
+final class NuanceItemPropertyTransaction
+ extends NuanceItemTransactionType {
+
+ const TRANSACTIONTYPE = 'nuance.item.property';
+
+ public function generateOldValue($object) {
+ $property_key = NuanceItemTransaction::PROPERTY_KEY;
+ $key = $this->getMetadataValue($property_key);
+ return $object->getNuanceProperty($key);
+ }
+
+ public function applyInternalEffects($object, $value) {
+ $property_key = NuanceItemTransaction::PROPERTY_KEY;
+ $key = $this->getMetadataValue($property_key);
+
+ $object->setNuanceProperty($key, $value);
+ }
+
+ public function getTitle() {
+ return pht(
+ '%s set a property on this item.',
+ $this->renderAuthor());
+ }
+
+}
diff --git a/src/applications/nuance/xaction/NuanceItemQueueTransaction.php b/src/applications/nuance/xaction/NuanceItemQueueTransaction.php
new file mode 100644
--- /dev/null
+++ b/src/applications/nuance/xaction/NuanceItemQueueTransaction.php
@@ -0,0 +1,25 @@
+<?php
+
+final class NuanceItemQueueTransaction
+ extends NuanceItemTransactionType {
+
+ const TRANSACTIONTYPE = 'nuance.item.queue';
+
+ public function generateOldValue($object) {
+ return $object->getQueuePHID();
+ }
+
+ public function applyInternalEffects($object, $value) {
+ $object->setQueuePHID($value);
+ }
+
+ public function getTitle() {
+ return pht(
+ '%s rerouted this item from %s to %s.',
+ $this->renderAuthor(),
+ $this->renderHandle($this->getOldValue()),
+ $this->renderHandle($this->getNewValue()));
+ }
+
+
+}
diff --git a/src/applications/nuance/xaction/NuanceItemRequestorTransaction.php b/src/applications/nuance/xaction/NuanceItemRequestorTransaction.php
new file mode 100644
--- /dev/null
+++ b/src/applications/nuance/xaction/NuanceItemRequestorTransaction.php
@@ -0,0 +1,16 @@
+<?php
+
+final class NuanceItemRequestorTransaction
+ extends NuanceItemTransactionType {
+
+ const TRANSACTIONTYPE = 'nuance.item.requestor';
+
+ public function generateOldValue($object) {
+ return $object->getRequestorPHID();
+ }
+
+ public function applyInternalEffects($object, $value) {
+ $object->setRequestorPHID($value);
+ }
+
+}
diff --git a/src/applications/nuance/xaction/NuanceItemSourceTransaction.php b/src/applications/nuance/xaction/NuanceItemSourceTransaction.php
new file mode 100644
--- /dev/null
+++ b/src/applications/nuance/xaction/NuanceItemSourceTransaction.php
@@ -0,0 +1,16 @@
+<?php
+
+final class NuanceItemSourceTransaction
+ extends NuanceItemTransactionType {
+
+ const TRANSACTIONTYPE = 'nuance.item.source';
+
+ public function generateOldValue($object) {
+ return $object->getSourcePHID();
+ }
+
+ public function applyInternalEffects($object, $value) {
+ $object->setSourcePHID($value);
+ }
+
+}
diff --git a/src/applications/nuance/xaction/NuanceItemTransactionType.php b/src/applications/nuance/xaction/NuanceItemTransactionType.php
new file mode 100644
--- /dev/null
+++ b/src/applications/nuance/xaction/NuanceItemTransactionType.php
@@ -0,0 +1,4 @@
+<?php
+
+abstract class NuanceItemTransactionType
+ extends PhabricatorModularTransactionType {}
diff --git a/src/applications/nuance/xaction/NuanceQueueTransactionType.php b/src/applications/nuance/xaction/NuanceQueueTransactionType.php
new file mode 100644
--- /dev/null
+++ b/src/applications/nuance/xaction/NuanceQueueTransactionType.php
@@ -0,0 +1,4 @@
+<?php
+
+abstract class NuanceQueueTransactionType
+ extends PhabricatorModularTransactionType {}
diff --git a/src/applications/nuance/xaction/NuanceSourceTransactionType.php b/src/applications/nuance/xaction/NuanceSourceTransactionType.php
new file mode 100644
--- /dev/null
+++ b/src/applications/nuance/xaction/NuanceSourceTransactionType.php
@@ -0,0 +1,4 @@
+<?php
+
+abstract class NuanceSourceTransactionType
+ extends PhabricatorModularTransactionType {}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Mar 23, 1:27 PM (4 d, 18 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7718516
Default Alt Text
D17990.id43264.diff (21 KB)
Attached To
Mode
D17990: Convert Nuance Items to Modular Transactions
Attached
Detach File
Event Timeline
Log In to Comment