Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/console/controller/DarkConsoleController.php
13402 views
1
<?php
2
3
final class DarkConsoleController extends PhabricatorController {
4
5
protected $op;
6
protected $data;
7
8
public function shouldRequireLogin() {
9
return !PhabricatorEnv::getEnvConfig('darkconsole.always-on');
10
}
11
12
public function shouldRequireEnabledUser() {
13
return !PhabricatorEnv::getEnvConfig('darkconsole.always-on');
14
}
15
16
public function shouldAllowPartialSessions() {
17
return true;
18
}
19
20
public function handleRequest(AphrontRequest $request) {
21
$viewer = $this->getViewer();
22
$response = id(new AphrontAjaxResponse())->setDisableConsole(true);
23
24
if (!$viewer->isLoggedIn()) {
25
return $response;
26
}
27
28
$visible = $request->getStr('visible');
29
if (phutil_nonempty_string($visible)) {
30
$this->writeDarkConsoleSetting(
31
PhabricatorDarkConsoleVisibleSetting::SETTINGKEY,
32
(int)$visible);
33
return $response;
34
}
35
36
$tab = $request->getStr('tab');
37
if (phutil_nonempty_string($tab)) {
38
$this->writeDarkConsoleSetting(
39
PhabricatorDarkConsoleTabSetting::SETTINGKEY,
40
$tab);
41
return $response;
42
}
43
44
return new Aphront404Response();
45
}
46
47
private function writeDarkConsoleSetting($key, $value) {
48
$viewer = $this->getViewer();
49
$request = $this->getRequest();
50
51
$preferences = PhabricatorUserPreferences::loadUserPreferences($viewer);
52
53
$editor = id(new PhabricatorUserPreferencesEditor())
54
->setActor($viewer)
55
->setContentSourceFromRequest($request)
56
->setContinueOnNoEffect(true)
57
->setContinueOnMissingFields(true);
58
59
$xactions = array();
60
$xactions[] = $preferences->newTransaction($key, $value);
61
$editor->applyTransactions($preferences, $xactions);
62
63
// Reload the user to regenerate their preferences cache. If we don't
64
// do this, the "Services" tab gets misleadingly spammed up with cache
65
// fills that are only filling because you toggled the console or switched
66
// tabs. This makes it harder to see what's really going on, so just force
67
// a cache regeneration here.
68
id(new PhabricatorPeopleQuery())
69
->setViewer($viewer)
70
->withPHIDs(array($viewer->getPHID()))
71
->needUserSettings(true)
72
->execute();
73
}
74
75
}
76
77