Page MenuHomePhabricator

D17403.id41851.diff
No OneTemporary

D17403.id41851.diff

diff --git a/src/applications/diffusion/xaction/DiffusionCommitAuditorsTransaction.php b/src/applications/diffusion/xaction/DiffusionCommitAuditorsTransaction.php
--- a/src/applications/diffusion/xaction/DiffusionCommitAuditorsTransaction.php
+++ b/src/applications/diffusion/xaction/DiffusionCommitAuditorsTransaction.php
@@ -58,6 +58,31 @@
return ($old !== $new);
}
+ public function mergeTransactions(
+ $object,
+ PhabricatorApplicationTransaction $u,
+ PhabricatorApplicationTransaction $v) {
+
+ $u_new = $u->getNewValue();
+ $v_new = $v->getNewValue();
+
+ $result = $v_new;
+ foreach (array('-', '+') as $key) {
+ $u_value = idx($u_new, $key, array());
+ $v_value = idx($v_new, $key, array());
+
+ $merged = $u_value + $v_value;
+
+ if ($merged) {
+ $result[$key] = $merged;
+ }
+ }
+
+ $u->setNewValue($result);
+
+ return $u;
+ }
+
public function applyExternalEffects($object, $value) {
$src_phid = $object->getPHID();
diff --git a/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php b/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
--- a/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
+++ b/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php
@@ -1462,6 +1462,12 @@
$type = $u->getTransactionType();
+ $xtype = $this->getModularTransactionType($type);
+ if ($xtype) {
+ $object = $this->object;
+ return $xtype->mergeTransactions($object, $u, $v);
+ }
+
switch ($type) {
case PhabricatorTransactions::TYPE_SUBSCRIBERS:
return $this->mergePHIDOrEdgeTransactions($u, $v);
diff --git a/src/applications/transactions/storage/PhabricatorModularTransactionType.php b/src/applications/transactions/storage/PhabricatorModularTransactionType.php
--- a/src/applications/transactions/storage/PhabricatorModularTransactionType.php
+++ b/src/applications/transactions/storage/PhabricatorModularTransactionType.php
@@ -87,6 +87,13 @@
return array();
}
+ public function mergeTransactions(
+ $object,
+ PhabricatorApplicationTransaction $u,
+ PhabricatorApplicationTransaction $v) {
+ return null;
+ }
+
final public function setStorage(
PhabricatorApplicationTransaction $xaction) {
$this->storage = $xaction;

File Metadata

Mime Type
text/plain
Expires
Thu, Mar 20, 9:28 AM (5 h, 38 m ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7382161
Default Alt Text
D17403.id41851.diff (2 KB)

Event Timeline