Changeset View
Changeset View
Standalone View
Standalone View
src/applications/console/controller/DarkConsoleController.php
| Show All 11 Lines | final class DarkConsoleController extends PhabricatorController { | ||||
| public function shouldRequireEnabledUser() { | public function shouldRequireEnabledUser() { | ||||
| return !PhabricatorEnv::getEnvConfig('darkconsole.always-on'); | return !PhabricatorEnv::getEnvConfig('darkconsole.always-on'); | ||||
| } | } | ||||
| public function shouldAllowPartialSessions() { | public function shouldAllowPartialSessions() { | ||||
| return true; | return true; | ||||
| } | } | ||||
| public function processRequest() { | public function handleRequest(AphrontRequest $request) { | ||||
| $request = $this->getRequest(); | $viewer = $this->getViewer(); | ||||
| $user = $request->getUser(); | |||||
| $response = id(new AphrontAjaxResponse())->setDisableConsole(true); | $response = id(new AphrontAjaxResponse())->setDisableConsole(true); | ||||
| if (!$user->isLoggedIn()) { | if (!$viewer->isLoggedIn()) { | ||||
| return $response; | return $response; | ||||
| } | } | ||||
| $visible = $request->getStr('visible'); | $visible = $request->getStr('visible'); | ||||
| if (strlen($visible)) { | if (strlen($visible)) { | ||||
| $user->setConsoleVisible((int)$visible); | $this->writeDarkConsoleSetting( | ||||
| $user->save(); | PhabricatorDarkConsoleVisibleSetting::SETTINGKEY, | ||||
| (int)$visible); | |||||
| return $response; | return $response; | ||||
| } | } | ||||
| $tab = $request->getStr('tab'); | $tab = $request->getStr('tab'); | ||||
| if (strlen($tab)) { | if (strlen($tab)) { | ||||
| $user->setConsoleTab($tab); | $this->writeDarkConsoleSetting( | ||||
| $user->save(); | PhabricatorDarkConsoleTabSetting::SETTINGKEY, | ||||
| $tab); | |||||
| return $response; | return $response; | ||||
| } | } | ||||
| return new Aphront404Response(); | 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); | |||||
| } | |||||
| } | } | ||||