Extend TransactionCommentQuery for Differential
Summary: Ref T2009. Ref T1460. Replace hard-coded garbage with a real Query-layer query. Test Plan: Submitted inline comments in Differential. Reviewers: btrahan Reviewed By: btrahan Subscribers: epriestley Maniphest Tasks: T2009, T1460 Differential Revision: https://secure.phabricator.com/D12027
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
abstract class PhabricatorDiffInlineCommentQuery
|
||||
extends PhabricatorApplicationTransactionCommentQuery {
|
||||
|
||||
private $needReplyToComments;
|
||||
|
||||
public function needReplyToComments($need_reply_to) {
|
||||
$this->needReplyToComments = $need_reply_to;
|
||||
return $this;
|
||||
}
|
||||
|
||||
protected function willFilterPage(array $comments) {
|
||||
if ($this->needReplyToComments) {
|
||||
$reply_phids = array();
|
||||
foreach ($comments as $comment) {
|
||||
$reply_phid = $comment->getReplyToCommentPHID();
|
||||
if ($reply_phid) {
|
||||
$reply_phids[] = $reply_phid;
|
||||
}
|
||||
}
|
||||
|
||||
if ($reply_phids) {
|
||||
$reply_comments = newv(get_class($this), array())
|
||||
->setViewer($this->getViewer())
|
||||
->setParentQuery($this)
|
||||
->withPHIDs($reply_phids)
|
||||
->execute();
|
||||
$reply_comments = mpull($reply_comments, null, 'getPHID');
|
||||
} else {
|
||||
$reply_comments = array();
|
||||
}
|
||||
|
||||
foreach ($comments as $key => $comment) {
|
||||
$reply_phid = $comment->getReplyToCommentPHID();
|
||||
if (!$reply_phid) {
|
||||
$comment->attachReplyToComment(null);
|
||||
continue;
|
||||
}
|
||||
$reply = idx($reply_comments, $reply_phid);
|
||||
if (!$reply) {
|
||||
$this->didRejectResult($comment);
|
||||
unset($comments[$key]);
|
||||
continue;
|
||||
}
|
||||
$comment->attachReplyToComment($reply);
|
||||
}
|
||||
}
|
||||
|
||||
return $comments;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user