Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/meta/panel/PhabricatorApplicationConfigurationPanel.php
12256 views
1
<?php
2
3
abstract class PhabricatorApplicationConfigurationPanel
4
extends Phobject {
5
6
private $viewer;
7
private $application;
8
9
public function setViewer(PhabricatorUser $viewer) {
10
$this->viewer = $viewer;
11
return $this;
12
}
13
14
public function getViewer() {
15
return $this->viewer;
16
}
17
18
public function setApplication(PhabricatorApplication $application) {
19
$this->application = $application;
20
return $this;
21
}
22
23
public function getApplication() {
24
return $this->application;
25
}
26
27
public function getPanelURI($path = null) {
28
$app_key = get_class($this->getApplication());
29
$panel_key = $this->getPanelKey();
30
$base = "/applications/panel/{$app_key}/{$panel_key}/";
31
return $base.ltrim($path, '/');
32
}
33
34
/**
35
* Return a short, unique string key which identifies this panel.
36
*
37
* This key is used in URIs. Good values might be "email" or "files".
38
*/
39
abstract public function getPanelKey();
40
41
abstract public function shouldShowForApplication(
42
PhabricatorApplication $application);
43
44
abstract public function buildConfigurationPagePanel();
45
abstract public function handlePanelRequest(
46
AphrontRequest $request,
47
PhabricatorController $controller);
48
49
public static function loadAllPanels() {
50
return id(new PhutilClassMapQuery())
51
->setAncestorClass(__CLASS__)
52
->setUniqueMethod('getPanelKey')
53
->execute();
54
}
55
56
public static function loadAllPanelsForApplication(
57
PhabricatorApplication $application) {
58
$panels = self::loadAllPanels();
59
60
$application_panels = array();
61
foreach ($panels as $key => $panel) {
62
if (!$panel->shouldShowForApplication($application)) {
63
continue;
64
}
65
$application_panels[$key] = $panel;
66
}
67
68
return $application_panels;
69
}
70
71
}
72
73