Page MenuHomePhabricator

D16029.diff
No OneTemporary

D16029.diff

diff --git a/resources/sql/autopatches/20160603.user.01.removedcenabled.sql b/resources/sql/autopatches/20160603.user.01.removedcenabled.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20160603.user.01.removedcenabled.sql
@@ -0,0 +1,2 @@
+ALTER TABLE {$NAMESPACE}_user.user
+ DROP COLUMN consoleEnabled;
diff --git a/resources/sql/autopatches/20160603.user.02.removedctab.sql b/resources/sql/autopatches/20160603.user.02.removedctab.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20160603.user.02.removedctab.sql
@@ -0,0 +1,2 @@
+ALTER TABLE {$NAMESPACE}_user.user
+ DROP COLUMN consoleTab;
diff --git a/resources/sql/autopatches/20160603.user.03.removedcvisible.sql b/resources/sql/autopatches/20160603.user.03.removedcvisible.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20160603.user.03.removedcvisible.sql
@@ -0,0 +1,2 @@
+ALTER TABLE {$NAMESPACE}_user.user
+ DROP COLUMN consoleVisible;
diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -2240,6 +2240,8 @@
'PhabricatorDaemonsSetupCheck' => 'applications/config/check/PhabricatorDaemonsSetupCheck.php',
'PhabricatorDailyRoutineTriggerClock' => 'infrastructure/daemon/workers/clock/PhabricatorDailyRoutineTriggerClock.php',
'PhabricatorDarkConsoleSetting' => 'applications/settings/setting/PhabricatorDarkConsoleSetting.php',
+ 'PhabricatorDarkConsoleTabSetting' => 'applications/settings/setting/PhabricatorDarkConsoleTabSetting.php',
+ 'PhabricatorDarkConsoleVisibleSetting' => 'applications/settings/setting/PhabricatorDarkConsoleVisibleSetting.php',
'PhabricatorDashboard' => 'applications/dashboard/storage/PhabricatorDashboard.php',
'PhabricatorDashboardAddPanelController' => 'applications/dashboard/controller/PhabricatorDashboardAddPanelController.php',
'PhabricatorDashboardApplication' => 'applications/dashboard/application/PhabricatorDashboardApplication.php',
@@ -6797,6 +6799,8 @@
'PhabricatorDaemonsSetupCheck' => 'PhabricatorSetupCheck',
'PhabricatorDailyRoutineTriggerClock' => 'PhabricatorTriggerClock',
'PhabricatorDarkConsoleSetting' => 'PhabricatorSelectSetting',
+ 'PhabricatorDarkConsoleTabSetting' => 'PhabricatorInternalSetting',
+ 'PhabricatorDarkConsoleVisibleSetting' => 'PhabricatorInternalSetting',
'PhabricatorDashboard' => array(
'PhabricatorDashboardDAO',
'PhabricatorApplicationTransactionInterface',
diff --git a/src/applications/console/controller/DarkConsoleController.php b/src/applications/console/controller/DarkConsoleController.php
--- a/src/applications/console/controller/DarkConsoleController.php
+++ b/src/applications/console/controller/DarkConsoleController.php
@@ -17,30 +17,48 @@
return true;
}
- public function processRequest() {
- $request = $this->getRequest();
- $user = $request->getUser();
+ public function handleRequest(AphrontRequest $request) {
+ $viewer = $this->getViewer();
$response = id(new AphrontAjaxResponse())->setDisableConsole(true);
- if (!$user->isLoggedIn()) {
+ if (!$viewer->isLoggedIn()) {
return $response;
}
$visible = $request->getStr('visible');
if (strlen($visible)) {
- $user->setConsoleVisible((int)$visible);
- $user->save();
+ $this->writeDarkConsoleSetting(
+ PhabricatorDarkConsoleVisibleSetting::SETTINGKEY,
+ (int)$visible);
return $response;
}
$tab = $request->getStr('tab');
if (strlen($tab)) {
- $user->setConsoleTab($tab);
- $user->save();
+ $this->writeDarkConsoleSetting(
+ PhabricatorDarkConsoleTabSetting::SETTINGKEY,
+ $tab);
return $response;
}
return new Aphront404Response();
}
+ private function writeDarkConsoleSetting($key, $value) {
+ $viewer = $this->getViewer();
+ $request = $this->getRequest();
+
+ $preferences = PhabricatorUserPreferences::loadUserPreferences($viewer);
+
+ $editor = id(new PhabricatorUserPreferencesEditor())
+ ->setActor($viewer)
+ ->setContentSourceFromRequest($request)
+ ->setContinueOnNoEffect(true)
+ ->setContinueOnMissingFields(true);
+
+ $xactions = array();
+ $xactions[] = $preferences->newTransaction($key, $value);
+ $editor->applyTransactions($preferences, $xactions);
+ }
+
}
diff --git a/src/applications/console/core/DarkConsoleCore.php b/src/applications/console/core/DarkConsoleCore.php
--- a/src/applications/console/core/DarkConsoleCore.php
+++ b/src/applications/console/core/DarkConsoleCore.php
@@ -93,7 +93,8 @@
public function render(AphrontRequest $request) {
$user = $request->getUser();
- $visible = $user ? $user->getConsoleVisible() : true;
+ $visible = $user->getUserSetting(
+ PhabricatorDarkConsoleVisibleSetting::SETTINGKEY);
return javelin_tag(
'div',
diff --git a/src/applications/people/storage/PhabricatorUser.php b/src/applications/people/storage/PhabricatorUser.php
--- a/src/applications/people/storage/PhabricatorUser.php
+++ b/src/applications/people/storage/PhabricatorUser.php
@@ -34,10 +34,6 @@
protected $availabilityCache;
protected $availabilityCacheTTL;
- protected $consoleEnabled = 0;
- protected $consoleVisible = 0;
- protected $consoleTab = '';
-
protected $conduitCertificate;
protected $isSystemAgent = 0;
@@ -190,9 +186,6 @@
'passwordSalt' => 'text32?',
'passwordHash' => 'text128?',
'profileImagePHID' => 'phid?',
- 'consoleEnabled' => 'bool',
- 'consoleVisible' => 'bool',
- 'consoleTab' => 'text64',
'conduitCertificate' => 'text255',
'isSystemAgent' => 'bool',
'isMailingList' => 'bool',
diff --git a/src/applications/settings/setting/PhabricatorDarkConsoleTabSetting.php b/src/applications/settings/setting/PhabricatorDarkConsoleTabSetting.php
new file mode 100644
--- /dev/null
+++ b/src/applications/settings/setting/PhabricatorDarkConsoleTabSetting.php
@@ -0,0 +1,12 @@
+<?php
+
+final class PhabricatorDarkConsoleTabSetting
+ extends PhabricatorInternalSetting {
+
+ const SETTINGKEY = 'darkconsole.tab';
+
+ public function getSettingName() {
+ return pht('DarkConsole Tab');
+ }
+
+}
diff --git a/src/applications/settings/setting/PhabricatorDarkConsoleVisibleSetting.php b/src/applications/settings/setting/PhabricatorDarkConsoleVisibleSetting.php
new file mode 100644
--- /dev/null
+++ b/src/applications/settings/setting/PhabricatorDarkConsoleVisibleSetting.php
@@ -0,0 +1,12 @@
+<?php
+
+final class PhabricatorDarkConsoleVisibleSetting
+ extends PhabricatorInternalSetting {
+
+ const SETTINGKEY = 'darkconsole.visible';
+
+ public function getSettingName() {
+ return pht('DarkConsole Visible');
+ }
+
+}
diff --git a/src/view/page/PhabricatorStandardPageView.php b/src/view/page/PhabricatorStandardPageView.php
--- a/src/view/page/PhabricatorStandardPageView.php
+++ b/src/view/page/PhabricatorStandardPageView.php
@@ -639,13 +639,23 @@
$headers[DarkConsoleServicesPlugin::getQueryAnalyzerHeader()] = true;
}
+ if ($user) {
+ $setting_tab = PhabricatorDarkConsoleTabSetting::SETTINGKEY;
+ $setting_visible = PhabricatorDarkConsoleVisibleSetting::SETTINGKEY;
+ $tab = $user->getUserSetting($setting_tab);
+ $visible = $user->getUserSetting($setting_visible);
+ } else {
+ $tab = null;
+ $visible = true;
+ }
+
return array(
// NOTE: We use a generic label here to prevent input reflection
// and mitigate compression attacks like BREACH. See discussion in
// T3684.
'uri' => pht('Main Request'),
- 'selected' => $user ? $user->getConsoleTab() : null,
- 'visible' => $user ? (int)$user->getConsoleVisible() : true,
+ 'selected' => $tab,
+ 'visible' => $visible,
'headers' => $headers,
);
}

File Metadata

Mime Type
text/plain
Expires
Tue, Feb 4, 6:00 AM (13 h, 3 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7088982
Default Alt Text
D16029.diff (7 KB)

Event Timeline