Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/fact/engine/PhabricatorFactEngine.php
12256 views
1
<?php
2
3
abstract class PhabricatorFactEngine extends Phobject {
4
5
private $factMap;
6
private $viewer;
7
8
final public static function loadAllEngines() {
9
return id(new PhutilClassMapQuery())
10
->setAncestorClass(__CLASS__)
11
->execute();
12
}
13
14
abstract public function newFacts();
15
16
abstract public function supportsDatapointsForObject(
17
PhabricatorLiskDAO $object);
18
19
abstract public function newDatapointsForObject(PhabricatorLiskDAO $object);
20
21
final protected function getFact($key) {
22
if ($this->factMap === null) {
23
$facts = $this->newFacts();
24
$facts = mpull($facts, null, 'getKey');
25
$this->factMap = $facts;
26
}
27
28
if (!isset($this->factMap[$key])) {
29
throw new Exception(
30
pht(
31
'Unknown fact ("%s") for engine "%s".',
32
$key,
33
get_class($this)));
34
}
35
36
return $this->factMap[$key];
37
}
38
39
public function setViewer(PhabricatorUser $viewer) {
40
$this->viewer = $viewer;
41
return $this;
42
}
43
44
public function getViewer() {
45
if (!$this->viewer) {
46
throw new PhutilInvalidStateException('setViewer');
47
}
48
49
return $this->viewer;
50
}
51
52
}
53
54