Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/multimeter/controller/MultimeterController.php
12256 views
1
<?php
2
3
abstract class MultimeterController extends PhabricatorController {
4
5
private $dimensions = array();
6
7
protected function loadDimensions(array $rows) {
8
if (!$rows) {
9
return;
10
}
11
12
$map = array(
13
'eventLabelID' => new MultimeterLabel(),
14
'eventViewerID' => new MultimeterViewer(),
15
'eventHostID' => new MultimeterHost(),
16
'eventContextID' => new MultimeterContext(),
17
);
18
19
$ids = array();
20
foreach ($map as $key => $object) {
21
foreach ($rows as $row) {
22
$ids[$key][] = $row[$key];
23
}
24
}
25
26
foreach ($ids as $key => $list) {
27
$object = $map[$key];
28
if (empty($this->dimensions[$key])) {
29
$this->dimensions[$key] = array();
30
}
31
$this->dimensions[$key] += $object->loadAllWhere(
32
'id IN (%Ld)',
33
$list);
34
}
35
}
36
37
protected function getLabelDimension($id) {
38
if (empty($this->dimensions['eventLabelID'][$id])) {
39
return $this->newMissingDimension(new MultimeterLabel(), $id);
40
}
41
return $this->dimensions['eventLabelID'][$id];
42
}
43
44
protected function getViewerDimension($id) {
45
if (empty($this->dimensions['eventViewerID'][$id])) {
46
return $this->newMissingDimension(new MultimeterViewer(), $id);
47
}
48
return $this->dimensions['eventViewerID'][$id];
49
}
50
51
protected function getHostDimension($id) {
52
if (empty($this->dimensions['eventHostID'][$id])) {
53
return $this->newMissingDimension(new MultimeterHost(), $id);
54
}
55
return $this->dimensions['eventHostID'][$id];
56
}
57
58
protected function getContextDimension($id) {
59
if (empty($this->dimensions['eventContextID'][$id])) {
60
return $this->newMissingDimension(new MultimeterContext(), $id);
61
}
62
return $this->dimensions['eventContextID'][$id];
63
}
64
65
private function newMissingDimension(MultimeterDimension $dim, $id) {
66
$dim->setName('<missing:'.$id.'>');
67
return $dim;
68
}
69
70
}
71
72