Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/differential/field/DifferentialCommitMessageCustomField.php
12256 views
1
<?php
2
3
abstract class DifferentialCommitMessageCustomField
4
extends DifferentialCommitMessageField {
5
6
abstract public function getCustomFieldKey();
7
8
public function getFieldOrder() {
9
$custom_key = $this->getCustomFieldKey();
10
return 100000 + $this->getCustomFieldOrder($custom_key);
11
}
12
13
public function isFieldEnabled() {
14
$custom_key = $this->getCustomFieldKey();
15
return $this->isCustomFieldEnabled($custom_key);
16
}
17
18
public function readFieldValueFromObject(DifferentialRevision $revision) {
19
$custom_key = $this->getCustomFieldKey();
20
$value = $this->readCustomFieldValue($revision, $custom_key);
21
return $value;
22
}
23
24
protected function readFieldValueFromCustomFieldStorage($value) {
25
return $value;
26
}
27
28
protected function readJSONFieldValueFromCustomFieldStorage(
29
$value,
30
$default) {
31
try {
32
return phutil_json_decode($value);
33
} catch (PhutilJSONParserException $ex) {
34
return $default;
35
}
36
}
37
38
protected function readCustomFieldValue(
39
DifferentialRevision $revision,
40
$key) {
41
$value = idx($this->getCustomFieldStorage(), $key);
42
return $this->readFieldValueFromCustomFieldStorage($value);
43
}
44
45
protected function getCustomFieldOrder($key) {
46
$field_list = PhabricatorCustomField::getObjectFields(
47
new DifferentialRevision(),
48
PhabricatorCustomField::ROLE_DEFAULT);
49
50
$fields = $field_list->getFields();
51
52
$idx = 0;
53
foreach ($fields as $field_key => $value) {
54
if ($key === $field_key) {
55
return $idx;
56
}
57
$idx++;
58
}
59
60
return $idx;
61
}
62
63
public function getFieldTransactions($value) {
64
return array(
65
array(
66
'type' => $this->getCommitMessageFieldKey(),
67
'value' => $value,
68
),
69
);
70
}
71
72
}
73
74