Page MenuHomestyx hydra

No OneTemporary

diff --git a/src/applications/conduit/method/differential/ConduitAPI_differential_getrevisioncomments_Method.php b/src/applications/conduit/method/differential/ConduitAPI_differential_getrevisioncomments_Method.php
index 2220601b2f..5f09a73fb8 100644
--- a/src/applications/conduit/method/differential/ConduitAPI_differential_getrevisioncomments_Method.php
+++ b/src/applications/conduit/method/differential/ConduitAPI_differential_getrevisioncomments_Method.php
@@ -1,72 +1,110 @@
<?php
/*
* Copyright 2012 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* @group conduit
*/
final class ConduitAPI_differential_getrevisioncomments_Method
extends ConduitAPIMethod {
public function getMethodDescription() {
return "Retrieve Differential Revision Comments.";
}
public function defineParamTypes() {
return array(
'ids' => 'required list<int>',
+ 'inlines' => 'optional bool',
);
}
public function defineReturnType() {
return 'nonempty list<dict<string, wild>>';
}
public function defineErrorTypes() {
return array(
);
}
protected function execute(ConduitAPIRequest $request) {
$results = array();
$revision_ids = $request->getValue('ids');
if (!$revision_ids) {
return $results;
}
$comments = id(new DifferentialComment())->loadAllWhere(
'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/x-diff
Expires
Mon, Jul 28, 12:02 AM (1 w, 10 h ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
186274
Default Alt Text
(3 KB)

Event Timeline