diff --git a/src/applications/conduit/method/maniphest/ConduitAPI_maniphest_query_Method.php b/src/applications/conduit/method/maniphest/ConduitAPI_maniphest_query_Method.php index 73ce3ae55d..8d7c535e88 100644 --- a/src/applications/conduit/method/maniphest/ConduitAPI_maniphest_query_Method.php +++ b/src/applications/conduit/method/maniphest/ConduitAPI_maniphest_query_Method.php @@ -53,10 +53,12 @@ class ConduitAPI_maniphest_query_Method $orders = implode(', ', $orders); return array( - 'ownerPHIDs' => 'optional list', - 'authorPHIDs' => 'optional list', - 'projectPHIDs' => 'optional list', - 'ccPHIDs' => 'optional list', + 'ids' => 'optional list', + 'phids' => 'optional list', + 'ownerPHIDs' => 'optional list', + 'authorPHIDs' => 'optional list', + 'projectPHIDs' => 'optional list', + 'ccPHIDs' => 'optional list', 'fullText' => 'optional string', 'status' => 'optional enum<'.$statuses.'>', @@ -79,6 +81,16 @@ class ConduitAPI_maniphest_query_Method protected function execute(ConduitAPIRequest $request) { $query = new ManiphestTaskQuery(); + $task_ids = $request->getValue('ids'); + if ($task_ids) { + $query->withTaskIDs($task_ids); + } + + $task_phids = $request->getValue('phids'); + if ($task_phids) { + $query->withTaskPHIDs($task_phids); + } + $owners = $request->getValue('ownerPHIDs'); if ($owners) { $query->withOwners($owners); diff --git a/src/applications/maniphest/ManiphestTaskQuery.php b/src/applications/maniphest/ManiphestTaskQuery.php index 5f8fcbbcdd..4ab9a2359d 100644 --- a/src/applications/maniphest/ManiphestTaskQuery.php +++ b/src/applications/maniphest/ManiphestTaskQuery.php @@ -25,6 +25,7 @@ final class ManiphestTaskQuery extends PhabricatorQuery { private $taskIDs = array(); + private $taskPHIDs = array(); private $authorPHIDs = array(); private $ownerPHIDs = array(); private $includeUnowned = null; @@ -85,6 +86,11 @@ final class ManiphestTaskQuery extends PhabricatorQuery { return $this; } + public function withTaskPHIDs(array $phids) { + $this->taskPHIDs = $phids; + return $this; + } + public function withOwners(array $owners) { $this->includeUnowned = false; foreach ($owners as $k => $phid) { @@ -197,6 +203,7 @@ final class ManiphestTaskQuery extends PhabricatorQuery { $where = array(); $where[] = $this->buildTaskIDsWhereClause($conn); + $where[] = $this->buildTaskPHIDsWhereClause($conn); $where[] = $this->buildStatusWhereClause($conn); $where[] = $this->buildPriorityWhereClause($conn); $where[] = $this->buildAuthorWhereClause($conn); @@ -288,7 +295,7 @@ final class ManiphestTaskQuery extends PhabricatorQuery { return $tasks; } - private function buildTaskIDsWhereClause($conn) { + private function buildTaskIDsWhereClause(AphrontDatabaseConnection $conn) { if (!$this->taskIDs) { return null; } @@ -299,7 +306,18 @@ final class ManiphestTaskQuery extends PhabricatorQuery { $this->taskIDs); } - private function buildStatusWhereClause($conn) { + private function buildTaskPHIDsWhereClause(AphrontDatabaseConnection $conn) { + if (!$this->taskPHIDs) { + return null; + } + + return qsprintf( + $conn, + 'phid in (%Ls)', + $this->taskPHIDs); + } + + private function buildStatusWhereClause(AphrontDatabaseConnection $conn) { static $map = array( self::STATUS_RESOLVED => ManiphestTaskStatus::STATUS_CLOSED_RESOLVED, @@ -328,7 +346,7 @@ final class ManiphestTaskQuery extends PhabricatorQuery { } } - private function buildPriorityWhereClause($conn) { + private function buildPriorityWhereClause(AphrontDatabaseConnection $conn) { if ($this->priority !== null) { return qsprintf( $conn, @@ -345,7 +363,7 @@ final class ManiphestTaskQuery extends PhabricatorQuery { return null; } - private function buildAuthorWhereClause($conn) { + private function buildAuthorWhereClause(AphrontDatabaseConnection $conn) { if (!$this->authorPHIDs) { return null; } @@ -356,7 +374,7 @@ final class ManiphestTaskQuery extends PhabricatorQuery { $this->authorPHIDs); } - private function buildOwnerWhereClause($conn) { + private function buildOwnerWhereClause(AphrontDatabaseConnection $conn) { if (!$this->ownerPHIDs) { if ($this->includeUnowned === null) { return null; @@ -384,7 +402,7 @@ final class ManiphestTaskQuery extends PhabricatorQuery { } } - private function buildFullTextWhereClause($conn) { + private function buildFullTextWhereClause(AphrontDatabaseConnection $conn) { if (!$this->fullTextSearch) { return null; } @@ -408,7 +426,7 @@ final class ManiphestTaskQuery extends PhabricatorQuery { $fulltext_results); } - private function buildSubscriberWhereClause($conn) { + private function buildSubscriberWhereClause(AphrontDatabaseConnection $conn) { if (!$this->subscriberPHIDs) { return null; } @@ -419,7 +437,7 @@ final class ManiphestTaskQuery extends PhabricatorQuery { $this->subscriberPHIDs); } - private function buildProjectWhereClause($conn) { + private function buildProjectWhereClause(AphrontDatabaseConnection $conn) { if (!$this->projectPHIDs && !$this->includeNoProject) { return null; } @@ -440,7 +458,7 @@ final class ManiphestTaskQuery extends PhabricatorQuery { return '('.implode(') OR (', $parts).')'; } - private function buildProjectJoinClause($conn) { + private function buildProjectJoinClause(AphrontDatabaseConnection $conn) { if (!$this->projectPHIDs && !$this->includeNoProject) { return null; } @@ -453,7 +471,7 @@ final class ManiphestTaskQuery extends PhabricatorQuery { $project_dao->getTableName()); } - private function buildAnyProjectWhereClause($conn) { + private function buildAnyProjectWhereClause(AphrontDatabaseConnection $conn) { if (!$this->anyProjectPHIDs) { return null; } @@ -464,7 +482,7 @@ final class ManiphestTaskQuery extends PhabricatorQuery { $this->anyProjectPHIDs); } - private function buildAnyProjectJoinClause($conn) { + private function buildAnyProjectJoinClause(AphrontDatabaseConnection $conn) { if (!$this->anyProjectPHIDs) { return null; } @@ -476,7 +494,7 @@ final class ManiphestTaskQuery extends PhabricatorQuery { $project_dao->getTableName()); } - private function buildXProjectWhereClause($conn) { + private function buildXProjectWhereClause(AphrontDatabaseConnection $conn) { if (!$this->xprojectPHIDs) { return null; } @@ -486,7 +504,7 @@ final class ManiphestTaskQuery extends PhabricatorQuery { 'xproject.projectPHID IS NULL'); } - private function buildXProjectJoinClause($conn) { + private function buildXProjectJoinClause(AphrontDatabaseConnection $conn) { if (!$this->xprojectPHIDs) { return null; } @@ -500,7 +518,7 @@ final class ManiphestTaskQuery extends PhabricatorQuery { $this->xprojectPHIDs); } - private function buildSubscriberJoinClause($conn) { + private function buildSubscriberJoinClause(AphrontDatabaseConnection $conn) { if (!$this->subscriberPHIDs) { return null; } @@ -512,7 +530,7 @@ final class ManiphestTaskQuery extends PhabricatorQuery { $subscriber_dao->getTableName()); } - private function buildOrderClause($conn) { + private function buildOrderClause(AphrontDatabaseConnection $conn) { $order = array(); switch ($this->groupBy) {