Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/view/page/menu/PhabricatorMainMenuBarExtension.php
12242 views
1
<?php
2
3
abstract class PhabricatorMainMenuBarExtension extends Phobject {
4
5
private $viewer;
6
private $application;
7
private $controller;
8
private $isFullSession;
9
10
public function setViewer(PhabricatorUser $viewer) {
11
$this->viewer = $viewer;
12
return $this;
13
}
14
15
public function getViewer() {
16
return $this->viewer;
17
}
18
19
public function setApplication(PhabricatorApplication $application) {
20
$this->application = $application;
21
return $this;
22
}
23
24
public function getApplication() {
25
return $this->application;
26
}
27
28
public function setController(PhabricatorController $controller) {
29
$this->controller = $controller;
30
return $this;
31
}
32
33
public function getController() {
34
return $this->controller;
35
}
36
37
public function setIsFullSession($is_full_session) {
38
$this->isFullSession = $is_full_session;
39
return $this;
40
}
41
42
public function getIsFullSession() {
43
return $this->isFullSession;
44
}
45
46
final public function getExtensionKey() {
47
return $this->getPhobjectClassConstant('MAINMENUBARKEY');
48
}
49
50
public function isExtensionEnabled() {
51
return true;
52
}
53
54
public function shouldRequireFullSession() {
55
return true;
56
}
57
58
public function isExtensionEnabledForViewer(PhabricatorUser $viewer) {
59
if (!$viewer->isLoggedIn()) {
60
return false;
61
}
62
63
if (!$viewer->isUserActivated()) {
64
return false;
65
}
66
67
// Don't show menus for users with partial sessions. This usually means
68
// they have logged in but have not made it through MFA, so we don't want
69
// to show notification counts, saved queries, etc.
70
if (!$viewer->hasSession()) {
71
return false;
72
}
73
74
if ($viewer->getSession()->getIsPartial()) {
75
return false;
76
}
77
78
return true;
79
}
80
81
public function getExtensionOrder() {
82
return 1000;
83
}
84
85
abstract public function buildMainMenus();
86
87
final public static function getAllExtensions() {
88
return id(new PhutilClassMapQuery())
89
->setAncestorClass(__CLASS__)
90
->setUniqueMethod('getExtensionKey')
91
->setSortMethod('getExtensionOrder')
92
->execute();
93
}
94
95
final public static function getAllEnabledExtensions() {
96
$extensions = self::getAllExtensions();
97
98
foreach ($extensions as $key => $extension) {
99
if (!$extension->isExtensionEnabled()) {
100
unset($extensions[$key]);
101
}
102
}
103
104
return $extensions;
105
}
106
107
}
108
109