diff --git a/src/applications/repository/query/PhabricatorRepositoryQuery.php b/src/applications/repository/query/PhabricatorRepositoryQuery.php --- a/src/applications/repository/query/PhabricatorRepositoryQuery.php +++ b/src/applications/repository/query/PhabricatorRepositoryQuery.php @@ -413,8 +413,9 @@ if ($this->anyProjectPHIDs) { $where[] = qsprintf( $conn_r, - 'e.dst IN (%Ls)', - $this->anyProjectPHIDs); + 'e.dst IN (%Ls) AND e.type = %s', + $this->anyProjectPHIDs, + PhabricatorEdgeConfig::TYPE_OBJECT_HAS_PROJECT); } $where[] = $this->buildPagingClause($conn_r); diff --git a/src/applications/repository/query/PhabricatorRepositorySearchEngine.php b/src/applications/repository/query/PhabricatorRepositorySearchEngine.php --- a/src/applications/repository/query/PhabricatorRepositorySearchEngine.php +++ b/src/applications/repository/query/PhabricatorRepositorySearchEngine.php @@ -142,11 +142,13 @@ } public function getBuiltinQueryNames() { - $names = array( - 'active' => pht('Active Repositories'), - 'all' => pht('All Repositories'), - ); + $names = array(); + if ($this->requireViewer()->isLoggedIn()) { + $names['myprojects'] = pht('My Projects'); + } + $names['active'] = pht('Active Repositories'); + $names['all'] = pht('All Repositories'); return $names; } @@ -160,6 +162,14 @@ return $query->setParameter('status', 'open'); case 'all': return $query; + case 'myprojects': + $projects = id(new PhabricatorProjectQuery()) + ->setViewer($this->requireViewer()) + ->withMemberPHIDs(array($this->requireViewer()->getPHID())) + ->execute(); + $projects = mpull($projects, 'getPHID'); + $query->setParameter('anyProjectPHIDs', $projects); + return $query; } return parent::buildSavedQueryFromBuiltin($query_key);