Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/differential/constants/DifferentialRevisionStatus.php
12256 views
1
<?php
2
3
final class DifferentialRevisionStatus extends Phobject {
4
5
const NEEDS_REVIEW = 'needs-review';
6
const NEEDS_REVISION = 'needs-revision';
7
const CHANGES_PLANNED = 'changes-planned';
8
const ACCEPTED = 'accepted';
9
const PUBLISHED = 'published';
10
const ABANDONED = 'abandoned';
11
const DRAFT = 'draft';
12
13
private $key;
14
private $spec = array();
15
16
public function getKey() {
17
return $this->key;
18
}
19
20
public function getLegacyKey() {
21
return idx($this->spec, 'legacy');
22
}
23
24
public function getIcon() {
25
return idx($this->spec, 'icon');
26
}
27
28
public function getIconColor() {
29
return idx($this->spec, 'color.icon', 'bluegrey');
30
}
31
32
public function getTagColor() {
33
return idx($this->spec, 'color.tag', 'bluegrey');
34
}
35
36
public function getTimelineIcon() {
37
return idx($this->spec, 'icon.timeline');
38
}
39
40
public function getTimelineColor() {
41
return idx($this->spec, 'color.timeline');
42
}
43
44
public function getANSIColor() {
45
return idx($this->spec, 'color.ansi');
46
}
47
48
public function getDisplayName() {
49
return idx($this->spec, 'name');
50
}
51
52
public function isClosedStatus() {
53
return idx($this->spec, 'closed');
54
}
55
56
public function isAbandoned() {
57
return ($this->key === self::ABANDONED);
58
}
59
60
public function isAccepted() {
61
return ($this->key === self::ACCEPTED);
62
}
63
64
public function isNeedsReview() {
65
return ($this->key === self::NEEDS_REVIEW);
66
}
67
68
public function isNeedsRevision() {
69
return ($this->key === self::NEEDS_REVISION);
70
}
71
72
public function isPublished() {
73
return ($this->key === self::PUBLISHED);
74
}
75
76
public function isChangePlanned() {
77
return ($this->key === self::CHANGES_PLANNED);
78
}
79
80
public function isDraft() {
81
return ($this->key === self::DRAFT);
82
}
83
84
public static function newForStatus($status) {
85
$result = new self();
86
87
$map = self::getMap();
88
if (isset($map[$status])) {
89
$result->key = $status;
90
$result->spec = $map[$status];
91
}
92
93
return $result;
94
}
95
96
public static function getAll() {
97
$result = array();
98
99
foreach (self::getMap() as $key => $spec) {
100
$result[$key] = self::newForStatus($key);
101
}
102
103
return $result;
104
}
105
106
private static function getMap() {
107
$close_on_accept = PhabricatorEnv::getEnvConfig(
108
'differential.close-on-accept');
109
110
return array(
111
self::NEEDS_REVIEW => array(
112
'name' => pht('Needs Review'),
113
'legacy' => 0,
114
'icon' => 'fa-code',
115
'icon.timeline' => 'fa-undo',
116
'closed' => false,
117
'color.icon' => 'grey',
118
'color.tag' => 'bluegrey',
119
'color.ansi' => 'magenta',
120
'color.timeline' => 'orange',
121
),
122
self::NEEDS_REVISION => array(
123
'name' => pht('Needs Revision'),
124
'legacy' => 1,
125
'icon' => 'fa-refresh',
126
'icon.timeline' => 'fa-times',
127
'closed' => false,
128
'color.icon' => 'red',
129
'color.tag' => 'red',
130
'color.ansi' => 'red',
131
'color.timeline' => 'red',
132
),
133
self::CHANGES_PLANNED => array(
134
'name' => pht('Changes Planned'),
135
'legacy' => 5,
136
'icon' => 'fa-headphones',
137
'closed' => false,
138
'color.icon' => 'red',
139
'color.tag' => 'red',
140
'color.ansi' => 'red',
141
),
142
self::ACCEPTED => array(
143
'name' => pht('Accepted'),
144
'legacy' => 2,
145
'icon' => 'fa-check',
146
'icon.timeline' => 'fa-check',
147
'closed' => $close_on_accept,
148
'color.icon' => 'green',
149
'color.tag' => 'green',
150
'color.ansi' => 'green',
151
'color.timeline' => 'green',
152
),
153
self::PUBLISHED => array(
154
'name' => pht('Closed'),
155
'legacy' => 3,
156
'icon' => 'fa-check-square-o',
157
'closed' => true,
158
'color.icon' => 'black',
159
'color.tag' => 'indigo',
160
'color.ansi' => 'cyan',
161
),
162
self::ABANDONED => array(
163
'name' => pht('Abandoned'),
164
'legacy' => 4,
165
'icon' => 'fa-plane',
166
'closed' => true,
167
'color.icon' => 'black',
168
'color.tag' => 'indigo',
169
'color.ansi' => null,
170
),
171
self::DRAFT => array(
172
'name' => pht('Draft'),
173
// For legacy clients, treat this as though it is "Needs Review".
174
'legacy' => 0,
175
'icon' => 'fa-spinner',
176
'closed' => false,
177
'color.icon' => 'pink',
178
'color.tag' => 'pink',
179
'color.ansi' => null,
180
),
181
);
182
}
183
184
}
185
186