Page MenuHomePhabricator

D2844.id5298.diff
No OneTemporary

D2844.id5298.diff

Index: src/applications/conduit/method/differential/ConduitAPI_differential_getrevisioncomments_Method.php
===================================================================
--- src/applications/conduit/method/differential/ConduitAPI_differential_getrevisioncomments_Method.php
+++ src/applications/conduit/method/differential/ConduitAPI_differential_getrevisioncomments_Method.php
@@ -29,6 +29,7 @@
public function defineParamTypes() {
return array(
'ids' => 'required list<int>',
+ 'inlines' => 'optional bool',
);
}
@@ -53,18 +54,55 @@
'revisionID IN (%Ld)',
$revision_ids);
+ $with_inlines = $request->getValue('inlines');
+ if ($with_inlines) {
+ $inlines = id(new DifferentialInlineComment())->loadAllWhere(
+ 'revisionID IN (%Ld)',
+ $revision_ids);
+ $changesets = array();
+ if ($inlines) {
+ $changesets = id(new DifferentialChangeset())->loadAllWhere(
+ 'id IN (%Ld)',
+ array_unique(mpull($inlines, 'getChangesetID')));
+ $inlines = mgroup($inlines, 'getCommentID');
+ }
+ }
+
foreach ($comments as $comment) {
$revision_id = $comment->getRevisionID();
- if (!array_key_exists($revision_id, $results)) {
- $results[$revision_id] = array();
- }
- $results[$revision_id][] = array(
+ $result = array(
'revisionID' => $revision_id,
'action' => $comment->getAction(),
'authorPHID' => $comment->getAuthorPHID(),
'dateCreated' => $comment->getDateCreated(),
'content' => $comment->getContent(),
);
+
+ if ($with_inlines) {
+ $result['inlines'] = array();
+ foreach (idx($inlines, $comment->getID(), array()) as $inline) {
+ $file_path = null;
+ $diff_id = null;
+ $changeset = idx($changesets, $inline->getChangesetID());
+ if ($changeset) {
+ $file_path = ($inline->getIsNewFile() ?
+ $changeset->getFilename() :
+ $changeset->getOldFile());
+ $diff_id = $changeset->getDiffID();
+ }
+ $result['inlines'][] = array(
+ 'filePath' => $file_path,
+ 'isNewFile' => $inline->getIsNewFile(),
+ 'lineNumber' => $inline->getLineNumber(),
+ 'lineLength' => $inline->getLineLength(),
+ 'diffID' => $diff_id,
+ 'content' => $inline->getContent(),
+ );
+ }
+ // TODO: Put synthetic inlines without an attached comment somewhere.
+ }
+
+ $results[$revision_id][] = $result;
}
return $results;

File Metadata

Mime Type
text/plain
Expires
Wed, Mar 19, 5:35 AM (1 w, 7 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7350556
Default Alt Text
D2844.id5298.diff (2 KB)

Event Timeline