diff --git a/src/applications/project/conduit/ConduitAPI_project_Method.php b/src/applications/project/conduit/ConduitAPI_project_Method.php --- a/src/applications/project/conduit/ConduitAPI_project_Method.php +++ b/src/applications/project/conduit/ConduitAPI_project_Method.php @@ -27,11 +27,15 @@ $member_phids = $project->getMemberPHIDs(); $member_phids = array_values($member_phids); + $project_slugs = $project->getSlugs(); + $project_slugs = array_values(mpull($project_slugs, 'getSlug')); + $result[$project->getPHID()] = array( 'id' => $project->getID(), 'phid' => $project->getPHID(), 'name' => $project->getName(), 'members' => $member_phids, + 'slugs' => $project_slugs, 'dateCreated' => $project->getDateCreated(), 'dateModified' => $project->getDateModified(), ); diff --git a/src/applications/project/conduit/ConduitAPI_project_query_Method.php b/src/applications/project/conduit/ConduitAPI_project_query_Method.php --- a/src/applications/project/conduit/ConduitAPI_project_query_Method.php +++ b/src/applications/project/conduit/ConduitAPI_project_query_Method.php @@ -46,6 +46,7 @@ $query = new PhabricatorProjectQuery(); $query->setViewer($request->getUser()); $query->needMembers(true); + $query->needSlugs(true); $ids = $request->getValue('ids'); if ($ids) { @@ -82,8 +83,26 @@ $query->setOffset($offset); } - $results = $query->execute(); - return $this->buildProjectInfoDictionaries($results); + $pager = $this->newPager($request); + $results = $query->executeWithCursorPager($pager); + $projects = $this->buildProjectInfoDictionaries($results); + + // TODO: This is pretty hideous. + $slug_map = array(); + foreach ($slugs as $slug) { + foreach ($projects as $project) { + if (in_array($slug, $project['slugs'])) { + $slug_map[$slug] = $project['phid']; + } + } + } + + $result = array( + 'data' => $projects, + 'slugMap' => $slug_map, + ); + + return $this->addPagerResults($result, $pager); } }