diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 46279975fa..16b8d66961 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -170,6 +170,7 @@ phutil_register_library_map(array( 'ConduitAPI_maniphest_find_Method' => 'applications/conduit/method/maniphest/ConduitAPI_maniphest_find_Method.php', 'ConduitAPI_maniphest_gettasktransactions_Method' => 'applications/conduit/method/maniphest/ConduitAPI_maniphest_gettasktransactions_Method.php', 'ConduitAPI_maniphest_info_Method' => 'applications/conduit/method/maniphest/ConduitAPI_maniphest_info_Method.php', + 'ConduitAPI_maniphest_query_Method' => 'applications/conduit/method/maniphest/ConduitAPI_maniphest_query_Method.php', 'ConduitAPI_maniphest_update_Method' => 'applications/conduit/method/maniphest/ConduitAPI_maniphest_update_Method.php', 'ConduitAPI_owners_query_Method' => 'applications/conduit/method/owners/ConduitAPI_owners_query_Method.php', 'ConduitAPI_paste_Method' => 'applications/conduit/method/paste/ConduitAPI_paste_Method.php', @@ -1244,9 +1245,10 @@ phutil_register_library_map(array( 'ConduitAPI_macro_query_Method' => 'ConduitAPI_macro_Method', 'ConduitAPI_maniphest_Method' => 'ConduitAPIMethod', 'ConduitAPI_maniphest_createtask_Method' => 'ConduitAPI_maniphest_Method', - 'ConduitAPI_maniphest_find_Method' => 'ConduitAPI_maniphest_Method', + 'ConduitAPI_maniphest_find_Method' => 'ConduitAPI_maniphest_query_Method', 'ConduitAPI_maniphest_gettasktransactions_Method' => 'ConduitAPI_maniphest_Method', 'ConduitAPI_maniphest_info_Method' => 'ConduitAPI_maniphest_Method', + 'ConduitAPI_maniphest_query_Method' => 'ConduitAPI_maniphest_Method', 'ConduitAPI_maniphest_update_Method' => 'ConduitAPI_maniphest_Method', 'ConduitAPI_owners_query_Method' => 'ConduitAPIMethod', 'ConduitAPI_paste_Method' => 'ConduitAPIMethod', diff --git a/src/applications/conduit/method/maniphest/ConduitAPI_maniphest_find_Method.php b/src/applications/conduit/method/maniphest/ConduitAPI_maniphest_find_Method.php index ba2c89a136..320d5e99b3 100644 --- a/src/applications/conduit/method/maniphest/ConduitAPI_maniphest_find_Method.php +++ b/src/applications/conduit/method/maniphest/ConduitAPI_maniphest_find_Method.php @@ -1,7 +1,7 @@ 'optional list', - 'authorPHIDs' => 'optional list', - 'projectPHIDs' => 'optional list', - 'ccPHIDs' => 'optional list', - - 'order' => 'optional enum<'.$orders.'>', - 'status' => 'optional enum<'.$statuses.'>', - - 'limit' => 'optional int', - 'offset' => 'optional int', - ); - } - - public function defineReturnType() { - return 'list'; - } - - public function defineErrorTypes() { - return array( - ); - } - - protected function execute(ConduitAPIRequest $request) { - $query = new ManiphestTaskQuery(); - - $owners = $request->getValue('ownerPHIDs'); - if ($owners) { - $query->withOwners($owners); - } - - $authors = $request->getValue('authorPHIDs'); - if ($authors) { - $query->withAuthors($authors); - } - - $projects = $request->getValue('projectPHIDs'); - if ($projects) { - $query->withProjects($projects); - } - - $ccs = $request->getValue('ccPHIDs'); - if ($ccs) { - $query->withSubscribers($ccs); - } - - $order = $request->getValue('order'); - if ($order) { - $query->setOrderBy($order); - } - - $status = $request->getValue('status'); - if ($status) { - $query->withStatus($status); - } - - $limit = $request->getValue('limit'); - if ($limit) { - $query->setLimit($limit); - } - - $offset = $request->getValue('offset'); - if ($offset) { - $query->setOffset($offset); - } - - $results = $query->execute(); - return $this->buildTaskInfoDictionaries($results); + return "Deprecated alias of maniphest.query"; } } diff --git a/src/applications/conduit/method/maniphest/ConduitAPI_maniphest_query_Method.php b/src/applications/conduit/method/maniphest/ConduitAPI_maniphest_query_Method.php new file mode 100644 index 0000000000..8be8af5c4d --- /dev/null +++ b/src/applications/conduit/method/maniphest/ConduitAPI_maniphest_query_Method.php @@ -0,0 +1,125 @@ + 'optional list', + 'authorPHIDs' => 'optional list', + 'projectPHIDs' => 'optional list', + 'ccPHIDs' => 'optional list', + + 'order' => 'optional enum<'.$orders.'>', + 'status' => 'optional enum<'.$statuses.'>', + + 'limit' => 'optional int', + 'offset' => 'optional int', + ); + } + + public function defineReturnType() { + return 'list'; + } + + public function defineErrorTypes() { + return array( + ); + } + + protected function execute(ConduitAPIRequest $request) { + $query = new ManiphestTaskQuery(); + + $owners = $request->getValue('ownerPHIDs'); + if ($owners) { + $query->withOwners($owners); + } + + $authors = $request->getValue('authorPHIDs'); + if ($authors) { + $query->withAuthors($authors); + } + + $projects = $request->getValue('projectPHIDs'); + if ($projects) { + $query->withProjects($projects); + } + + $ccs = $request->getValue('ccPHIDs'); + if ($ccs) { + $query->withSubscribers($ccs); + } + + $order = $request->getValue('order'); + if ($order) { + $query->setOrderBy($order); + } + + $status = $request->getValue('status'); + if ($status) { + $query->withStatus($status); + } + + $limit = $request->getValue('limit'); + if ($limit) { + $query->setLimit($limit); + } + + $offset = $request->getValue('offset'); + if ($offset) { + $query->setOffset($offset); + } + + $results = $query->execute(); + return $this->buildTaskInfoDictionaries($results); + } + +} diff --git a/src/applications/maniphest/ManiphestTaskQuery.php b/src/applications/maniphest/ManiphestTaskQuery.php index 1ab0880d59..65fccf07d5 100644 --- a/src/applications/maniphest/ManiphestTaskQuery.php +++ b/src/applications/maniphest/ManiphestTaskQuery.php @@ -40,6 +40,11 @@ final class ManiphestTaskQuery { const STATUS_ANY = 'status-any'; const STATUS_OPEN = 'status-open'; const STATUS_CLOSED = 'status-closed'; + const STATUS_RESOLVED = 'status-resolved'; + const STATUS_WONTFIX = 'status-wontfix'; + const STATUS_INVALID = 'status-invalid'; + const STATUS_SPITE = 'status-spite'; + const STATUS_DUPLICATE = 'status-duplicate'; private $priority = null; @@ -282,6 +287,15 @@ final class ManiphestTaskQuery { } private function buildStatusWhereClause($conn) { + + static $map = array( + self::STATUS_RESOLVED => ManiphestTaskStatus::STATUS_CLOSED_RESOLVED, + self::STATUS_WONTFIX => ManiphestTaskStatus::STATUS_CLOSED_WONTFIX, + self::STATUS_INVALID => ManiphestTaskStatus::STATUS_CLOSED_INVALID, + self::STATUS_SPITE => ManiphestTaskStatus::STATUS_CLOSED_SPITE, + self::STATUS_DUPLICATE => ManiphestTaskStatus::STATUS_CLOSED_DUPLICATE, + ); + switch ($this->status) { case self::STATUS_ANY: return null; @@ -290,7 +304,14 @@ final class ManiphestTaskQuery { case self::STATUS_CLOSED: return 'status > 0'; default: - throw new Exception("Unknown status query '{$this->status}'!"); + $constant = idx($map, $this->status); + if (!$constant) { + throw new Exception("Unknown status query '{$this->status}'!"); + } + return qsprintf( + $conn, + 'status = %d', + $constant); } }