Page MenuHomePhabricator

D20534.diff
No OneTemporary

D20534.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
@@ -4809,6 +4809,7 @@
'PhabricatorTransactionsApplication' => 'applications/transactions/application/PhabricatorTransactionsApplication.php',
'PhabricatorTransactionsDestructionEngineExtension' => 'applications/transactions/engineextension/PhabricatorTransactionsDestructionEngineExtension.php',
'PhabricatorTransactionsFulltextEngineExtension' => 'applications/transactions/engineextension/PhabricatorTransactionsFulltextEngineExtension.php',
+ 'PhabricatorTransactionsObjectTypeDatasource' => 'applications/transactions/typeahead/PhabricatorTransactionsObjectTypeDatasource.php',
'PhabricatorTransformedFile' => 'applications/files/storage/PhabricatorTransformedFile.php',
'PhabricatorTranslationSetting' => 'applications/settings/setting/PhabricatorTranslationSetting.php',
'PhabricatorTranslationsConfigOptions' => 'applications/config/option/PhabricatorTranslationsConfigOptions.php',
@@ -11158,6 +11159,7 @@
'PhabricatorTransactionsApplication' => 'PhabricatorApplication',
'PhabricatorTransactionsDestructionEngineExtension' => 'PhabricatorDestructionEngineExtension',
'PhabricatorTransactionsFulltextEngineExtension' => 'PhabricatorFulltextEngineExtension',
+ 'PhabricatorTransactionsObjectTypeDatasource' => 'PhabricatorTypeaheadDatasource',
'PhabricatorTransformedFile' => 'PhabricatorFileDAO',
'PhabricatorTranslationSetting' => 'PhabricatorOptionGroupSetting',
'PhabricatorTranslationsConfigOptions' => 'PhabricatorApplicationConfigOptions',
diff --git a/src/applications/feed/query/PhabricatorFeedTransactionQuery.php b/src/applications/feed/query/PhabricatorFeedTransactionQuery.php
--- a/src/applications/feed/query/PhabricatorFeedTransactionQuery.php
+++ b/src/applications/feed/query/PhabricatorFeedTransactionQuery.php
@@ -5,6 +5,7 @@
private $phids;
private $authorPHIDs;
+ private $objectTypes;
private $createdMin;
private $createdMax;
@@ -18,6 +19,11 @@
return $this;
}
+ public function withObjectTypes(array $types) {
+ $this->objectTypes = $types;
+ return $this;
+ }
+
public function withDateCreatedBetween($min, $max) {
$this->createdMin = $min;
$this->createdMax = $max;
@@ -158,12 +164,24 @@
}
}
+ $object_types = $this->objectTypes;
+ if ($object_types) {
+ $object_types = array_fuse($object_types);
+ }
+
$results = array();
foreach ($queries as $query) {
+ $query_type = $query->getTemplateApplicationTransaction()
+ ->getApplicationTransactionType();
+
if ($type_map) {
- $type = $query->getTemplateApplicationTransaction()
- ->getApplicationTransactionType();
- if (!isset($type_map[$type])) {
+ if (!isset($type_map[$query_type])) {
+ continue;
+ }
+ }
+
+ if ($object_types) {
+ if (!isset($object_types[$query_type])) {
continue;
}
}
diff --git a/src/applications/feed/query/PhabricatorFeedTransactionSearchEngine.php b/src/applications/feed/query/PhabricatorFeedTransactionSearchEngine.php
--- a/src/applications/feed/query/PhabricatorFeedTransactionSearchEngine.php
+++ b/src/applications/feed/query/PhabricatorFeedTransactionSearchEngine.php
@@ -21,6 +21,11 @@
->setLabel(pht('Authors'))
->setKey('authorPHIDs')
->setAliases(array('author', 'authors')),
+ id(new PhabricatorSearchDatasourceField())
+ ->setLabel(pht('Object Types'))
+ ->setKey('objectTypes')
+ ->setAliases(array('objectType'))
+ ->setDatasource(new PhabricatorTransactionsObjectTypeDatasource()),
id(new PhabricatorSearchDateField())
->setLabel(pht('Created After'))
->setKey('createdStart'),
@@ -37,6 +42,10 @@
$query->withAuthorPHIDs($map['authorPHIDs']);
}
+ if ($map['objectTypes']) {
+ $query->withObjectTypes($map['objectTypes']);
+ }
+
$created_min = $map['createdStart'];
$created_max = $map['createdEnd'];
diff --git a/src/applications/transactions/typeahead/PhabricatorTransactionsObjectTypeDatasource.php b/src/applications/transactions/typeahead/PhabricatorTransactionsObjectTypeDatasource.php
new file mode 100644
--- /dev/null
+++ b/src/applications/transactions/typeahead/PhabricatorTransactionsObjectTypeDatasource.php
@@ -0,0 +1,63 @@
+<?php
+
+final class PhabricatorTransactionsObjectTypeDatasource
+ extends PhabricatorTypeaheadDatasource {
+
+ public function getBrowseTitle() {
+ return pht('Browse Forms');
+ }
+
+ public function getPlaceholderText() {
+ return pht('Type an object type name...');
+ }
+
+ public function getDatasourceApplicationClass() {
+ return 'PhabricatorTransactionsApplication';
+ }
+
+ protected function renderSpecialTokens(array $values) {
+ return $this->renderTokensFromResults($this->buildResults(), $values);
+ }
+
+ public function loadResults() {
+ $results = $this->buildResults();
+ return $this->filterResultsAgainstTokens($results);
+ }
+
+ private function buildResults() {
+ $queries = id(new PhutilClassMapQuery())
+ ->setAncestorClass('PhabricatorApplicationTransactionQuery')
+ ->execute();
+
+ $phid_types = PhabricatorPHIDType::getAllTypes();
+
+ $results = array();
+ foreach ($queries as $query) {
+ $query_type = $query->getTemplateApplicationTransaction()
+ ->getApplicationTransactionType();
+
+ $phid_type = idx($phid_types, $query_type);
+
+ if ($phid_type) {
+ $name = $phid_type->getTypeName();
+ $icon = $phid_type->getTypeIcon();
+ } else {
+ $name = pht('%s ("%s")', $query_type, get_class($query));
+ $icon = null;
+ }
+
+ $result = id(new PhabricatorTypeaheadResult())
+ ->setName($name)
+ ->setPHID($query_type);
+
+ if ($icon) {
+ $result->setIcon($icon);
+ }
+
+ $results[$query_type] = $result;
+ }
+
+ return $results;
+ }
+
+}

File Metadata

Mime Type
text/plain
Expires
Mon, Mar 24, 4:27 AM (1 d, 4 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7719563
Default Alt Text
D20534.diff (5 KB)

Event Timeline