From 6ac5f84c8bc90abe8e8a377e720081c679f1c349 Mon Sep 17 00:00:00 2001 From: epriestley Date: Sun, 5 Jun 2016 13:35:25 -0700 Subject: [PATCH] Redirect older "/panel/" settings URIs to modern location Summary: Ref T11098. We have a fair number of these, including links in email, which we can't turn into explicit `/user/` URIs. Just redirect them to the modern places. Test Plan: Clicked "Customize Menu..." on home page. Reviewers: chad, avivey Reviewed By: avivey Subscribers: avivey Maniphest Tasks: T11098 Differential Revision: https://secure.phabricator.com/D16049 --- .../application/PhabricatorSettingsApplication.php | 2 ++ .../PhabricatorSettingsMainController.php | 13 +++++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/applications/settings/application/PhabricatorSettingsApplication.php b/src/applications/settings/application/PhabricatorSettingsApplication.php index 4adf8ee19f..45a694fb59 100644 --- a/src/applications/settings/application/PhabricatorSettingsApplication.php +++ b/src/applications/settings/application/PhabricatorSettingsApplication.php @@ -36,6 +36,8 @@ final class PhabricatorSettingsApplication extends PhabricatorApplication { => 'PhabricatorSettingsMainController', 'builtin/(?Pglobal)/'.$panel_pattern => 'PhabricatorSettingsMainController', + 'panel/(?P[^/]+)/' + => 'PhabricatorSettingsMainController', 'adjust/' => 'PhabricatorSettingsAdjustController', 'timezone/(?P[^/]+)/' => 'PhabricatorSettingsTimezoneController', diff --git a/src/applications/settings/controller/PhabricatorSettingsMainController.php b/src/applications/settings/controller/PhabricatorSettingsMainController.php index 8c58772fe2..2a368d8650 100644 --- a/src/applications/settings/controller/PhabricatorSettingsMainController.php +++ b/src/applications/settings/controller/PhabricatorSettingsMainController.php @@ -30,6 +30,19 @@ final class PhabricatorSettingsMainController public function handleRequest(AphrontRequest $request) { $viewer = $this->getViewer(); + // Redirect "/panel/XYZ/" to the viewer's personal settings panel. This + // was the primary URI before global settings were introduced and allows + // generation of viewer-agnostic URIs for email. + $panel = $request->getURIData('panel'); + if ($panel) { + $panel = phutil_escape_uri($panel); + $username = $viewer->getUsername(); + + $panel_uri = "/user/{$username}/page/{$panel}/"; + $panel_uri = $this->getApplicationURI($panel_uri); + return id(new AphrontRedirectResponse())->setURI($panel_uri); + } + $username = $request->getURIData('username'); $builtin = $request->getURIData('builtin');