diff --git a/src/applications/maniphest/conduit/ManiphestQueryConduitAPIMethod.php b/src/applications/maniphest/conduit/ManiphestQueryConduitAPIMethod.php --- a/src/applications/maniphest/conduit/ManiphestQueryConduitAPIMethod.php +++ b/src/applications/maniphest/conduit/ManiphestQueryConduitAPIMethod.php @@ -38,6 +38,7 @@ 'projectPHIDs' => 'optional list', 'ccPHIDs' => 'optional list', 'fullText' => 'optional string', + 'title' => 'optional string', 'status' => 'optional '.$status_const, 'order' => 'optional '.$order_const, @@ -95,6 +96,11 @@ $query->withFullTextSearch($full_text); } + $title = $request->getValue('title'); + if ($title) { + $query->withTitle($title); + } + $status = $request->getValue('status'); if ($status) { $query->withStatus($status); diff --git a/src/applications/maniphest/query/ManiphestTaskQuery.php b/src/applications/maniphest/query/ManiphestTaskQuery.php --- a/src/applications/maniphest/query/ManiphestTaskQuery.php +++ b/src/applications/maniphest/query/ManiphestTaskQuery.php @@ -24,6 +24,7 @@ private $hasOpenSubtasks; private $parentTaskIDs; private $subtaskIDs; + private $title; private $fullTextSearch = ''; @@ -127,6 +128,11 @@ return $this; } + public function withTitle($title) { + $this->title = $title; + return $this; + } + public function setGroupBy($group) { $this->groupBy = $group; @@ -346,6 +352,13 @@ $this->taskPHIDs); } + if ($this->title !== null) { + $where[] = qsprintf( + $conn, + 'task.title = %s', + $this->title); + } + if ($this->statuses !== null) { $where[] = qsprintf( $conn,