mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-23 22:10:55 +01:00
Add support for querying feed transactions by author and date range
Summary: Depends on D20531. Ref T13294. Enable finding raw transactions in particular date ranges or with particular authors. Test Plan: {F6463471} Reviewers: amckinley Reviewed By: amckinley Maniphest Tasks: T13294 Differential Revision: https://secure.phabricator.com/D20533
This commit is contained in:
parent
642113708a
commit
2e5b1885e7
2 changed files with 45 additions and 2 deletions
|
@ -4,6 +4,7 @@ final class PhabricatorFeedTransactionQuery
|
||||||
extends PhabricatorCursorPagedPolicyAwareQuery {
|
extends PhabricatorCursorPagedPolicyAwareQuery {
|
||||||
|
|
||||||
private $phids;
|
private $phids;
|
||||||
|
private $authorPHIDs;
|
||||||
private $createdMin;
|
private $createdMin;
|
||||||
private $createdMax;
|
private $createdMax;
|
||||||
|
|
||||||
|
@ -12,6 +13,11 @@ final class PhabricatorFeedTransactionQuery
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function withAuthorPHIDs(array $phids) {
|
||||||
|
$this->authorPHIDs = $phids;
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
public function withDateCreatedBetween($min, $max) {
|
public function withDateCreatedBetween($min, $max) {
|
||||||
$this->createdMin = $min;
|
$this->createdMin = $min;
|
||||||
$this->createdMax = $max;
|
$this->createdMax = $max;
|
||||||
|
@ -59,6 +65,7 @@ final class PhabricatorFeedTransactionQuery
|
||||||
$created_max = $this->createdMax;
|
$created_max = $this->createdMax;
|
||||||
|
|
||||||
$xaction_phids = $this->phids;
|
$xaction_phids = $this->phids;
|
||||||
|
$author_phids = $this->authorPHIDs;
|
||||||
|
|
||||||
foreach ($queries as $query) {
|
foreach ($queries as $query) {
|
||||||
$query->withDateCreatedBetween($created_min, $created_max);
|
$query->withDateCreatedBetween($created_min, $created_max);
|
||||||
|
@ -67,6 +74,10 @@ final class PhabricatorFeedTransactionQuery
|
||||||
$query->withPHIDs($xaction_phids);
|
$query->withPHIDs($xaction_phids);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($author_phids !== null) {
|
||||||
|
$query->withAuthorPHIDs($author_phids);
|
||||||
|
}
|
||||||
|
|
||||||
if ($limit !== null) {
|
if ($limit !== null) {
|
||||||
$query->setLimit($limit);
|
$query->setLimit($limit);
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,12 +16,44 @@ final class PhabricatorFeedTransactionSearchEngine
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function buildCustomSearchFields() {
|
protected function buildCustomSearchFields() {
|
||||||
return array();
|
return array(
|
||||||
|
id(new PhabricatorUsersSearchField())
|
||||||
|
->setLabel(pht('Authors'))
|
||||||
|
->setKey('authorPHIDs')
|
||||||
|
->setAliases(array('author', 'authors')),
|
||||||
|
id(new PhabricatorSearchDateField())
|
||||||
|
->setLabel(pht('Created After'))
|
||||||
|
->setKey('createdStart'),
|
||||||
|
id(new PhabricatorSearchDateField())
|
||||||
|
->setLabel(pht('Created Before'))
|
||||||
|
->setKey('createdEnd'),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function buildQueryFromParameters(array $map) {
|
protected function buildQueryFromParameters(array $map) {
|
||||||
$query = $this->newQuery();
|
$query = $this->newQuery();
|
||||||
|
|
||||||
|
if ($map['authorPHIDs']) {
|
||||||
|
$query->withAuthorPHIDs($map['authorPHIDs']);
|
||||||
|
}
|
||||||
|
|
||||||
|
$created_min = $map['createdStart'];
|
||||||
|
$created_max = $map['createdEnd'];
|
||||||
|
|
||||||
|
if ($created_min && $created_max) {
|
||||||
|
if ($created_min > $created_max) {
|
||||||
|
throw new PhabricatorSearchConstraintException(
|
||||||
|
pht(
|
||||||
|
'The specified "Created Before" date is earlier in time than the '.
|
||||||
|
'specified "Created After" date, so this query can never match '.
|
||||||
|
'any results.'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($created_min || $created_max) {
|
||||||
|
$query->withDateCreatedBetween($created_min, $created_max);
|
||||||
|
}
|
||||||
|
|
||||||
return $query;
|
return $query;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,7 +125,7 @@ final class PhabricatorFeedTransactionSearchEngine
|
||||||
$table = id(new AphrontTableView($rows))
|
$table = id(new AphrontTableView($rows))
|
||||||
->setHeaders(
|
->setHeaders(
|
||||||
array(
|
array(
|
||||||
pht('Actor'),
|
pht('Author'),
|
||||||
pht('Object'),
|
pht('Object'),
|
||||||
pht('Transaction'),
|
pht('Transaction'),
|
||||||
pht('Date'),
|
pht('Date'),
|
||||||
|
|
Loading…
Reference in a new issue