Page MenuHomePhabricator

D12026.diff
No OneTemporary

D12026.diff

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
@@ -1298,6 +1298,7 @@
'PhabricatorApplicationTransactionResponse' => 'applications/transactions/response/PhabricatorApplicationTransactionResponse.php',
'PhabricatorApplicationTransactionShowOlderController' => 'applications/transactions/controller/PhabricatorApplicationTransactionShowOlderController.php',
'PhabricatorApplicationTransactionStructureException' => 'applications/transactions/exception/PhabricatorApplicationTransactionStructureException.php',
+ 'PhabricatorApplicationTransactionTemplatedCommentQuery' => 'applications/transactions/query/PhabricatorApplicationTransactionTemplatedCommentQuery.php',
'PhabricatorApplicationTransactionTextDiffDetailView' => 'applications/transactions/view/PhabricatorApplicationTransactionTextDiffDetailView.php',
'PhabricatorApplicationTransactionTransactionPHIDType' => 'applications/transactions/phid/PhabricatorApplicationTransactionTransactionPHIDType.php',
'PhabricatorApplicationTransactionValidationError' => 'applications/transactions/error/PhabricatorApplicationTransactionValidationError.php',
@@ -4541,6 +4542,7 @@
'PhabricatorApplicationTransactionResponse' => 'AphrontProxyResponse',
'PhabricatorApplicationTransactionShowOlderController' => 'PhabricatorApplicationTransactionController',
'PhabricatorApplicationTransactionStructureException' => 'Exception',
+ 'PhabricatorApplicationTransactionTemplatedCommentQuery' => 'PhabricatorApplicationTransactionCommentQuery',
'PhabricatorApplicationTransactionTextDiffDetailView' => 'AphrontView',
'PhabricatorApplicationTransactionTransactionPHIDType' => 'PhabricatorPHIDType',
'PhabricatorApplicationTransactionValidationError' => 'Phobject',
diff --git a/src/applications/differential/query/DifferentialTransactionQuery.php b/src/applications/differential/query/DifferentialTransactionQuery.php
--- a/src/applications/differential/query/DifferentialTransactionQuery.php
+++ b/src/applications/differential/query/DifferentialTransactionQuery.php
@@ -11,11 +11,7 @@
PhabricatorUser $viewer,
DifferentialRevision $revision) {
- // TODO: This probably needs to move somewhere more central as we move
- // away from DifferentialInlineCommentQuery, but
- // PhabricatorApplicationTransactionCommentQuery is currently `final` and
- // I'm not yet decided on how to approach that. For now, just get the PHIDs
- // and then execute a PHID-based query through the standard stack.
+ // TODO: Subclass ApplicationTransactionCommentQuery to do this for real.
$table = new DifferentialTransactionComment();
$conn_r = $table->establishConnection('r');
@@ -36,7 +32,7 @@
return array();
}
- $comments = id(new PhabricatorApplicationTransactionCommentQuery())
+ $comments = id(new PhabricatorApplicationTransactionTemplatedCommentQuery())
->setTemplate(new DifferentialTransactionComment())
->setViewer($viewer)
->withPHIDs($phids)
diff --git a/src/applications/transactions/controller/PhabricatorApplicationTransactionCommentHistoryController.php b/src/applications/transactions/controller/PhabricatorApplicationTransactionCommentHistoryController.php
--- a/src/applications/transactions/controller/PhabricatorApplicationTransactionCommentHistoryController.php
+++ b/src/applications/transactions/controller/PhabricatorApplicationTransactionCommentHistoryController.php
@@ -36,7 +36,7 @@
return new Aphront400Response();
}
- $comments = id(new PhabricatorApplicationTransactionCommentQuery())
+ $comments = id(new PhabricatorApplicationTransactionTemplatedCommentQuery())
->setViewer($user)
->setTemplate($xaction->getApplicationTransactionCommentObject())
->withTransactionPHIDs(array($xaction->getPHID()))
diff --git a/src/applications/transactions/query/PhabricatorApplicationTransactionCommentQuery.php b/src/applications/transactions/query/PhabricatorApplicationTransactionCommentQuery.php
--- a/src/applications/transactions/query/PhabricatorApplicationTransactionCommentQuery.php
+++ b/src/applications/transactions/query/PhabricatorApplicationTransactionCommentQuery.php
@@ -1,16 +1,18 @@
<?php
-final class PhabricatorApplicationTransactionCommentQuery
+abstract class PhabricatorApplicationTransactionCommentQuery
extends PhabricatorCursorPagedPolicyAwareQuery {
- private $template;
-
+ private $ids;
+ private $authorPHIDs;
private $phids;
private $transactionPHIDs;
+ private $isDeleted;
+
+ abstract protected function getTemplate();
- public function setTemplate(
- PhabricatorApplicationTransactionComment $template) {
- $this->template = $template;
+ public function withIDs(array $ids) {
+ $this->ids = $ids;
return $this;
}
@@ -24,13 +26,23 @@
return $this;
}
+ public function withAuthorPHIDs(array $phids) {
+ $this->authorPHIDs = $phids;
+ return $this;
+ }
+
+ public function withDeleted($deleted) {
+ $this->isDeleted = $deleted;
+ return $this;
+ }
+
protected function loadPage() {
- $table = $this->template;
+ $table = $this->getTemplate();
$conn_r = $table->establishConnection('r');
$data = queryfx_all(
$conn_r,
- 'SELECT * FROM %T xc %Q %Q %Q',
+ 'SELECT * FROM %T xcomment %Q %Q %Q',
$table->getTableName(),
$this->buildWhereClause($conn_r),
$this->buildOrderClause($conn_r),
@@ -39,23 +51,44 @@
return $table->loadAllFromArray($data);
}
- private function buildWhereClause(AphrontDatabaseConnection $conn_r) {
+ protected function buildWhereClause(AphrontDatabaseConnection $conn_r) {
$where = array();
- if ($this->phids) {
+ if ($this->ids !== null) {
+ $where[] = qsprintf(
+ $conn_r,
+ 'xcomment.id IN (%Ld)',
+ $this->ids);
+ }
+
+ if ($this->phids !== null) {
$where[] = qsprintf(
$conn_r,
- 'phid IN (%Ls)',
+ 'xcomment.phid IN (%Ls)',
$this->phids);
}
- if ($this->transactionPHIDs) {
+ if ($this->authorPHIDs !== null) {
+ $where[] = qsprintf(
+ $conn_r,
+ 'xcomment.authorPHID IN (%Ls)',
+ $this->authorPHIDs);
+ }
+
+ if ($this->transactionPHIDs !== null) {
$where[] = qsprintf(
$conn_r,
- 'transactionPHID IN (%Ls)',
+ 'xcomment.transactionPHID IN (%Ls)',
$this->transactionPHIDs);
}
+ if ($this->isDeleted !== null) {
+ $where[] = qsprintf(
+ $conn_r,
+ 'xcomment.isDeleted = %d',
+ (int)$this->isDeleted);
+ }
+
return $this->formatWhereClause($where);
}
diff --git a/src/applications/transactions/query/PhabricatorApplicationTransactionQuery.php b/src/applications/transactions/query/PhabricatorApplicationTransactionQuery.php
--- a/src/applications/transactions/query/PhabricatorApplicationTransactionQuery.php
+++ b/src/applications/transactions/query/PhabricatorApplicationTransactionQuery.php
@@ -80,11 +80,12 @@
$comments = array();
if ($comment_phids) {
- $comments = id(new PhabricatorApplicationTransactionCommentQuery())
- ->setTemplate($table->getApplicationTransactionCommentObject())
- ->setViewer($this->getViewer())
- ->withPHIDs($comment_phids)
- ->execute();
+ $comments =
+ id(new PhabricatorApplicationTransactionTemplatedCommentQuery())
+ ->setTemplate($table->getApplicationTransactionCommentObject())
+ ->setViewer($this->getViewer())
+ ->withPHIDs($comment_phids)
+ ->execute();
$comments = mpull($comments, null, 'getPHID');
}
diff --git a/src/applications/transactions/query/PhabricatorApplicationTransactionTemplatedCommentQuery.php b/src/applications/transactions/query/PhabricatorApplicationTransactionTemplatedCommentQuery.php
new file mode 100644
--- /dev/null
+++ b/src/applications/transactions/query/PhabricatorApplicationTransactionTemplatedCommentQuery.php
@@ -0,0 +1,18 @@
+<?php
+
+final class PhabricatorApplicationTransactionTemplatedCommentQuery
+ extends PhabricatorApplicationTransactionCommentQuery {
+
+ private $template;
+
+ public function setTemplate(
+ PhabricatorApplicationTransactionComment $template) {
+ $this->template = $template;
+ return $this;
+ }
+
+ protected function getTemplate() {
+ return $this->template;
+ }
+
+}
diff --git a/src/infrastructure/diff/PhabricatorInlineCommentController.php b/src/infrastructure/diff/PhabricatorInlineCommentController.php
--- a/src/infrastructure/diff/PhabricatorInlineCommentController.php
+++ b/src/infrastructure/diff/PhabricatorInlineCommentController.php
@@ -330,11 +330,12 @@
}
if ($reply_phids) {
- $reply_comments = id(new PhabricatorApplicationTransactionCommentQuery())
- ->setTemplate($template)
- ->setViewer($viewer)
- ->withPHIDs($reply_phids)
- ->execute();
+ $reply_comments =
+ id(new PhabricatorApplicationTransactionTemplatedCommentQuery())
+ ->setTemplate($template)
+ ->setViewer($viewer)
+ ->withPHIDs($reply_phids)
+ ->execute();
$reply_comments = mpull($reply_comments, null, 'getPHID');
} else {
$reply_comments = array();

File Metadata

Mime Type
text/plain
Expires
Wed, Dec 25, 9:44 PM (2 h, 32 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6927692
Default Alt Text
D12026.diff (9 KB)

Event Timeline