Page MenuHomePhabricator

D18467.diff
No OneTemporary

D18467.diff

diff --git a/src/applications/differential/xaction/DifferentialRevisionStatusTransaction.php b/src/applications/differential/xaction/DifferentialRevisionStatusTransaction.php
--- a/src/applications/differential/xaction/DifferentialRevisionStatusTransaction.php
+++ b/src/applications/differential/xaction/DifferentialRevisionStatusTransaction.php
@@ -70,4 +70,15 @@
return DifferentialRevisionStatus::newForStatus($new);
}
+ public function getTransactionTypeForConduit($xaction) {
+ return 'status';
+ }
+
+ public function getFieldValuesForConduit($object, $data) {
+ return array(
+ 'old' => $object->getOldValue(),
+ 'new' => $object->getNewValue(),
+ );
+ }
+
}
diff --git a/src/applications/differential/xaction/DifferentialRevisionTitleTransaction.php b/src/applications/differential/xaction/DifferentialRevisionTitleTransaction.php
--- a/src/applications/differential/xaction/DifferentialRevisionTitleTransaction.php
+++ b/src/applications/differential/xaction/DifferentialRevisionTitleTransaction.php
@@ -55,4 +55,15 @@
return $errors;
}
+ public function getTransactionTypeForConduit($xaction) {
+ return 'title';
+ }
+
+ public function getFieldValuesForConduit($object, $data) {
+ return array(
+ 'old' => $object->getOldValue(),
+ 'new' => $object->getNewValue(),
+ );
+ }
+
}
diff --git a/src/applications/transactions/conduit/TransactionSearchConduitAPIMethod.php b/src/applications/transactions/conduit/TransactionSearchConduitAPIMethod.php
--- a/src/applications/transactions/conduit/TransactionSearchConduitAPIMethod.php
+++ b/src/applications/transactions/conduit/TransactionSearchConduitAPIMethod.php
@@ -89,6 +89,36 @@
$comment_map = array();
}
+ $modular_classes = array();
+ $modular_objects = array();
+ $modular_xactions = array();
+ foreach ($xactions as $xaction) {
+ if (!$xaction instanceof PhabricatorModularTransaction) {
+ continue;
+ }
+
+ $modular_template = $xaction->getModularType();
+ $modular_class = get_class($modular_template);
+ if (!isset($modular_objects[$modular_class])) {
+ try {
+ $modular_object = newv($modular_class, array());
+ $modular_objects[$modular_class] = $modular_object;
+ } catch (Exception $ex) {
+ continue;
+ }
+ }
+
+ $modular_classes[$xaction->getPHID()] = $modular_class;
+ $modular_xactions[$modular_class][] = $xaction;
+ }
+
+ $modular_data_map = array();
+ foreach ($modular_objects as $class => $modular_type) {
+ $modular_data_map[$class] = $modular_type
+ ->setViewer($viewer)
+ ->loadTransactionTypeConduitData($modular_xactions[$class]);
+ }
+
$data = array();
foreach ($xactions as $xaction) {
$comments = idx($comment_map, $xaction->getPHID());
@@ -126,6 +156,18 @@
}
$fields = array();
+ $type = null;
+
+ if (isset($modular_classes[$xaction->getPHID()])) {
+ $modular_class = $modular_classes[$xaction->getPHID()];
+ $modular_object = $modular_objects[$modular_class];
+ $modular_data = $modular_data_map[$modular_class];
+
+ $type = $modular_object->getTransactionTypeForConduit($xaction);
+ $fields = $modular_object->getFieldValuesForConduit(
+ $xaction,
+ $modular_data);
+ }
if (!$fields) {
$fields = (object)$fields;
@@ -134,6 +176,7 @@
$data[] = array(
'id' => (int)$xaction->getID(),
'phid' => (string)$xaction->getPHID(),
+ 'type' => $type,
'authorPHID' => (string)$xaction->getAuthorPHID(),
'objectPHID' => (string)$xaction->getObjectPHID(),
'dateCreated' => (int)$xaction->getDateCreated(),
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
@@ -332,4 +332,16 @@
return $this->getStorage()->getMetadataValue($key, $default);
}
+ public function loadTransactionTypeConduitData(array $xactions) {
+ return null;
+ }
+
+ public function getTransactionTypeForConduit($xaction) {
+ return null;
+ }
+
+ public function getFieldValuesForConduit($xaction, $data) {
+ return array();
+ }
+
}

File Metadata

Mime Type
text/plain
Expires
Fri, May 10, 11:28 PM (3 w, 3 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6284316
Default Alt Text
D18467.diff (4 KB)

Event Timeline