From f87ec6a5dff9bc732bc5e532426830eb96b08d90 Mon Sep 17 00:00:00 2001 From: epriestley Date: Mon, 9 Sep 2019 12:15:00 -0700 Subject: [PATCH] (stable) Don't offer personal saved queries in global "Search Scope" settings dropdown Summary: Fixes T13405. We currently offer non-global custom saved queries here, but this doesn't make sense as a global default setting. Test Plan: Saved a global search query, edited global search settings, no longer saw the non-global query as an option. Maniphest Tasks: T13405 Differential Revision: https://secure.phabricator.com/D20793 --- .../setting/PhabricatorSearchScopeSetting.php | 3 ++- .../page/menu/PhabricatorMainMenuSearchView.php | 17 ++++++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/applications/settings/setting/PhabricatorSearchScopeSetting.php b/src/applications/settings/setting/PhabricatorSearchScopeSetting.php index 54fa12a84c..c4b1941540 100644 --- a/src/applications/settings/setting/PhabricatorSearchScopeSetting.php +++ b/src/applications/settings/setting/PhabricatorSearchScopeSetting.php @@ -25,7 +25,8 @@ final class PhabricatorSearchScopeSetting protected function getSelectOptions() { $scopes = PhabricatorMainMenuSearchView::getGlobalSearchScopeItems( $this->getViewer(), - new PhabricatorSettingsApplication()); + new PhabricatorSettingsApplication(), + $only_global = true); $scope_map = array(); foreach ($scopes as $scope) { diff --git a/src/view/page/menu/PhabricatorMainMenuSearchView.php b/src/view/page/menu/PhabricatorMainMenuSearchView.php index 60e7233e96..e038eec6c8 100644 --- a/src/view/page/menu/PhabricatorMainMenuSearchView.php +++ b/src/view/page/menu/PhabricatorMainMenuSearchView.php @@ -118,7 +118,8 @@ final class PhabricatorMainMenuSearchView extends AphrontView { public static function getGlobalSearchScopeItems( PhabricatorUser $viewer, - PhabricatorApplication $application = null) { + PhabricatorApplication $application = null, + $global_only = false) { $items = array(); $items[] = array( @@ -154,14 +155,24 @@ final class PhabricatorMainMenuSearchView extends AphrontView { $engine = id(new PhabricatorSearchApplicationSearchEngine()) ->setViewer($viewer); $engine_queries = $engine->loadEnabledNamedQueries(); - $query_map = mpull($engine_queries, 'getQueryName', 'getQueryKey'); - foreach ($query_map as $query_key => $query_name) { + foreach ($engine_queries as $query) { + $query_key = $query->getQueryKey(); if ($query_key == 'all') { // Skip the builtin "All" query since it's redundant with the default // setting. continue; } + // In the global "Settings" panel, we don't want to offer personal + // queries the viewer may have saved. + if ($global_only) { + if (!$query->isGlobal()) { + continue; + } + } + + $query_name = $query->getQueryName(); + $items[] = array( 'icon' => 'fa-certificate', 'name' => $query_name,