Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F14416329
D12026.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
9 KB
Referenced Files
None
Subscribers
None
D12026.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D12026: Prepare TransactionCommentQuery for extension
Attached
Detach File
Event Timeline
Log In to Comment