Something went wrong. Try again.
@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
Something went wrong. Try again.
2.3 kB · 76 lines
PHP
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677<?php
final class DarkConsoleController extends PhabricatorController {
protected $op; protected $data;
public function shouldRequireLogin() { return !PhabricatorEnv::getEnvConfig('darkconsole.always-on'); }
public function shouldRequireEnabledUser() { return !PhabricatorEnv::getEnvConfig('darkconsole.always-on'); }
public function shouldAllowPartialSessions() { return true; }
public function handleRequest(AphrontRequest $request) { $viewer = $this->getViewer(); $response = id(new AphrontAjaxResponse())->setDisableConsole(true);
if (!$viewer->isLoggedIn()) { return $response; }
// This should be '0' when closed and '1' when opened $visible = $request->getStr('visible'); if (phutil_nonempty_string($visible)) { $this->writeDarkConsoleSetting( PhabricatorDarkConsoleVisibleSetting::SETTINGKEY, (int)$visible); return $response; }
$tab = $request->getStr('tab'); if (phutil_nonempty_string($tab)) { $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);
// Reload the user to regenerate their preferences cache. If we don't // do this, the "Services" tab gets misleadingly spammed up with cache // fills that are only filling because you toggled the console or switched // tabs. This makes it harder to see what's really going on, so just force // a cache regeneration here. id(new PhabricatorPeopleQuery()) ->setViewer($viewer) ->withPHIDs(array($viewer->getPHID())) ->needUserSettings(true) ->execute(); }
}