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 @@ + $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'; + } + + 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; } }