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 @@ -371,6 +371,7 @@ 'DifferentialGetRawDiffConduitAPIMethod' => 'applications/differential/conduit/DifferentialGetRawDiffConduitAPIMethod.php', 'DifferentialGetRevisionCommentsConduitAPIMethod' => 'applications/differential/conduit/DifferentialGetRevisionCommentsConduitAPIMethod.php', 'DifferentialGetRevisionConduitAPIMethod' => 'applications/differential/conduit/DifferentialGetRevisionConduitAPIMethod.php', + 'DifferentialGetRevisionTransactionsConduitAPIMethod' => 'applications/differential/conduit/DifferentialGetRevisionTransactionsConduitAPIMethod.php', 'DifferentialGetWorkingCopy' => 'applications/differential/DifferentialGetWorkingCopy.php', 'DifferentialGitHubLandingStrategy' => 'applications/differential/landing/DifferentialGitHubLandingStrategy.php', 'DifferentialGitSVNIDField' => 'applications/differential/customfield/DifferentialGitSVNIDField.php', @@ -3614,6 +3615,7 @@ 'DifferentialGetRawDiffConduitAPIMethod' => 'DifferentialConduitAPIMethod', 'DifferentialGetRevisionCommentsConduitAPIMethod' => 'DifferentialConduitAPIMethod', 'DifferentialGetRevisionConduitAPIMethod' => 'DifferentialConduitAPIMethod', + 'DifferentialGetRevisionTransactionsConduitAPIMethod' => 'DifferentialConduitAPIMethod', 'DifferentialGitHubLandingStrategy' => 'DifferentialLandingStrategy', 'DifferentialGitSVNIDField' => 'DifferentialCustomField', 'DifferentialHiddenComment' => 'DifferentialDAO', diff --git a/src/applications/differential/conduit/DifferentialGetRevisionTransactionsConduitAPIMethod.php b/src/applications/differential/conduit/DifferentialGetRevisionTransactionsConduitAPIMethod.php new file mode 100644 --- /dev/null +++ b/src/applications/differential/conduit/DifferentialGetRevisionTransactionsConduitAPIMethod.php @@ -0,0 +1,75 @@ + 'required list', + ); + } + + protected function defineReturnType() { + return 'nonempty list>'; + } + + protected function execute(ConduitAPIRequest $request) { + $results = array(); + $revision_ids = $request->getValue('ids'); + + if (!$revision_ids) { + return $results; + } + + $revisions = id(new DifferentialRevisionQuery()) + ->setViewer($request->getUser()) + ->withIDs($revision_ids) + ->execute(); + $revisions = mpull($revisions, null, 'getPHID'); + + $transactions = array(); + if ($revisions) { + $transactions = id(new DifferentialTransactionQuery()) + ->setViewer($request->getUser()) + ->withObjectPHIDs(mpull($revisions, 'getPHID')) + ->needComments(true) + ->execute(); + } + + foreach ($transactions as $transaction) { + $revision_phid = $transaction->getObjectPHID(); + if (empty($revisions[$revision_phid])) { + continue; + } + + $revision_id = $revisions[$revision_phid]->getID(); + + $comments = null; + if ($transaction->hasComment()) { + $comments = $transaction->getComment()->getContent(); + } + + $results[$revision_id][] = array( + 'revisionID' => $revision_id, + 'transactionPHID' => $transaction->getPHID(), + 'transactionType' => $transaction->getTransactionType(), + 'oldValue' => $transaction->getOldValue(), + 'newValue' => $transaction->getNewValue(), + 'comments' => $comments, + 'authorPHID' => $transaction->getAuthorPHID(), + 'dateCreated' => $transaction->getDateCreated(), + ); + } + + return $results; + } + +} diff --git a/src/applications/maniphest/conduit/ManiphestGetTaskTransactionsConduitAPIMethod.php b/src/applications/maniphest/conduit/ManiphestGetTaskTransactionsConduitAPIMethod.php --- a/src/applications/maniphest/conduit/ManiphestGetTaskTransactionsConduitAPIMethod.php +++ b/src/applications/maniphest/conduit/ManiphestGetTaskTransactionsConduitAPIMethod.php @@ -58,13 +58,13 @@ } $results[$task_id][] = array( - 'taskID' => $task_id, + 'taskID' => $task_id, 'transactionPHID' => $transaction->getPHID(), - 'transactionType' => $transaction->getTransactionType(), - 'oldValue' => $transaction->getOldValue(), - 'newValue' => $transaction->getNewValue(), - 'comments' => $comments, - 'authorPHID' => $transaction->getAuthorPHID(), + 'transactionType' => $transaction->getTransactionType(), + 'oldValue' => $transaction->getOldValue(), + 'newValue' => $transaction->getNewValue(), + 'comments' => $comments, + 'authorPHID' => $transaction->getAuthorPHID(), 'dateCreated' => $transaction->getDateCreated(), ); }