Page MenuHomePhabricator

D14767.id35706.diff
No OneTemporary

D14767.id35706.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
@@ -233,6 +233,7 @@
'ConduitException' => 'applications/conduit/protocol/exception/ConduitException.php',
'ConduitGetCapabilitiesConduitAPIMethod' => 'applications/conduit/method/ConduitGetCapabilitiesConduitAPIMethod.php',
'ConduitGetCertificateConduitAPIMethod' => 'applications/conduit/method/ConduitGetCertificateConduitAPIMethod.php',
+ 'ConduitIntListParameterType' => 'applications/conduit/parametertype/ConduitIntListParameterType.php',
'ConduitIntParameterType' => 'applications/conduit/parametertype/ConduitIntParameterType.php',
'ConduitListParameterType' => 'applications/conduit/parametertype/ConduitListParameterType.php',
'ConduitLogGarbageCollector' => 'applications/conduit/garbagecollector/ConduitLogGarbageCollector.php',
@@ -4085,6 +4086,7 @@
'ConduitException' => 'Exception',
'ConduitGetCapabilitiesConduitAPIMethod' => 'ConduitAPIMethod',
'ConduitGetCertificateConduitAPIMethod' => 'ConduitAPIMethod',
+ 'ConduitIntListParameterType' => 'ConduitListParameterType',
'ConduitIntParameterType' => 'ConduitListParameterType',
'ConduitListParameterType' => 'ConduitParameterType',
'ConduitLogGarbageCollector' => 'PhabricatorGarbageCollector',
diff --git a/src/applications/conduit/parametertype/ConduitIntListParameterType.php b/src/applications/conduit/parametertype/ConduitIntListParameterType.php
new file mode 100644
--- /dev/null
+++ b/src/applications/conduit/parametertype/ConduitIntListParameterType.php
@@ -0,0 +1,40 @@
+<?php
+
+final class ConduitIntListParameterType
+ extends ConduitListParameterType {
+
+ protected function getParameterValue(array $request, $key) {
+ $list = parent::getParameterValue($request, $key);
+
+ foreach ($list as $idx => $item) {
+ if (!is_int($item)) {
+ $this->raiseValidationException(
+ $request,
+ $key,
+ pht(
+ 'Expected a list of integers, but item with index "%s" is '.
+ 'not an integer.',
+ $idx));
+ }
+ }
+
+ return $this->validateIntList($request, $key, $list);
+ }
+
+ protected function getParameterTypeName() {
+ return 'list<int>';
+ }
+
+ protected function getParameterFormatDescriptions() {
+ return array(
+ pht('List of integers.'),
+ );
+ }
+
+ protected function getParameterExamples() {
+ return array(
+ '[123, 0, -456]',
+ );
+ }
+
+}
diff --git a/src/applications/maniphest/query/ManiphestTaskSearchEngine.php b/src/applications/maniphest/query/ManiphestTaskSearchEngine.php
--- a/src/applications/maniphest/query/ManiphestTaskSearchEngine.php
+++ b/src/applications/maniphest/query/ManiphestTaskSearchEngine.php
@@ -48,20 +48,30 @@
id(new PhabricatorOwnersSearchField())
->setLabel(pht('Assigned To'))
->setKey('assignedPHIDs')
- ->setAliases(array('assigned')),
+ ->setConduitKey('assigned')
+ ->setAliases(array('assigned'))
+ ->setDescription(
+ pht('Search for tasks owned by a user from a list.')),
id(new PhabricatorUsersSearchField())
->setLabel(pht('Authors'))
->setKey('authorPHIDs')
- ->setAliases(array('author', 'authors')),
+ ->setAliases(array('author', 'authors'))
+ ->setDescription(
+ pht('Search for tasks with given authors.')),
id(new PhabricatorSearchDatasourceField())
->setLabel(pht('Statuses'))
->setKey('statuses')
->setAliases(array('status'))
+ ->setDescription(
+ pht('Search for tasks with given statuses.'))
->setDatasource(new ManiphestTaskStatusFunctionDatasource()),
id(new PhabricatorSearchDatasourceField())
->setLabel(pht('Priorities'))
->setKey('priorities')
->setAliases(array('priority'))
+ ->setDescription(
+ pht('Search for tasks with given priorities.'))
+ ->setConduitParameterType(new ConduitIntListParameterType())
->setDatasource(new ManiphestTaskPriorityDatasource()),
id(new PhabricatorSearchTextField())
->setLabel(pht('Contains Words'))
diff --git a/src/applications/owners/searchfield/PhabricatorOwnersSearchField.php b/src/applications/owners/searchfield/PhabricatorOwnersSearchField.php
--- a/src/applications/owners/searchfield/PhabricatorOwnersSearchField.php
+++ b/src/applications/owners/searchfield/PhabricatorOwnersSearchField.php
@@ -15,4 +15,8 @@
return new PhabricatorPeopleOwnerDatasource();
}
+ protected function newConduitParameterType() {
+ return new ConduitUserListParameterType();
+ }
+
}
diff --git a/src/applications/search/field/PhabricatorSearchDatasourceField.php b/src/applications/search/field/PhabricatorSearchDatasourceField.php
--- a/src/applications/search/field/PhabricatorSearchDatasourceField.php
+++ b/src/applications/search/field/PhabricatorSearchDatasourceField.php
@@ -4,6 +4,7 @@
extends PhabricatorSearchTokenizerField {
private $datasource;
+ private $conduitParameterType;
protected function newDatasource() {
return id(clone $this->datasource);
@@ -14,8 +15,17 @@
return $this;
}
+ public function setConduitParameterType(ConduitParameterType $type) {
+ $this->conduitParameterType = $type;
+ return $this;
+ }
+
protected function newConduitParameterType() {
- return new ConduitStringListParameterType();
+ if (!$this->conduitParameterType) {
+ return new ConduitStringListParameterType();
+ }
+
+ return $this->conduitParameterType;
}
}

File Metadata

Mime Type
text/plain
Expires
Wed, Apr 23, 6:26 AM (2 w, 1 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7388989
Default Alt Text
D14767.id35706.diff (5 KB)

Event Timeline