Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/nuance/storage/NuanceSource.php
12256 views
1
<?php
2
3
final class NuanceSource extends NuanceDAO
4
implements
5
PhabricatorApplicationTransactionInterface,
6
PhabricatorPolicyInterface,
7
PhabricatorNgramsInterface {
8
9
protected $name;
10
protected $type;
11
protected $data = array();
12
protected $mailKey;
13
protected $viewPolicy;
14
protected $editPolicy;
15
protected $defaultQueuePHID;
16
protected $isDisabled;
17
18
private $definition = self::ATTACHABLE;
19
20
protected function getConfiguration() {
21
return array(
22
self::CONFIG_AUX_PHID => true,
23
self::CONFIG_SERIALIZATION => array(
24
'data' => self::SERIALIZATION_JSON,
25
),
26
self::CONFIG_COLUMN_SCHEMA => array(
27
'name' => 'sort255',
28
'type' => 'text32',
29
'mailKey' => 'bytes20',
30
'isDisabled' => 'bool',
31
),
32
self::CONFIG_KEY_SCHEMA => array(
33
'key_type' => array(
34
'columns' => array('type', 'dateModified'),
35
),
36
),
37
) + parent::getConfiguration();
38
}
39
40
public function generatePHID() {
41
return PhabricatorPHID::generateNewPHID(NuanceSourcePHIDType::TYPECONST);
42
}
43
44
public function save() {
45
if (!$this->getMailKey()) {
46
$this->setMailKey(Filesystem::readRandomCharacters(20));
47
}
48
return parent::save();
49
}
50
51
public function getURI() {
52
return '/nuance/source/view/'.$this->getID().'/';
53
}
54
55
public static function initializeNewSource(
56
PhabricatorUser $actor,
57
NuanceSourceDefinition $definition) {
58
$app = id(new PhabricatorApplicationQuery())
59
->setViewer($actor)
60
->withClasses(array('PhabricatorNuanceApplication'))
61
->executeOne();
62
63
$view_policy = $app->getPolicy(
64
NuanceSourceDefaultViewCapability::CAPABILITY);
65
$edit_policy = $app->getPolicy(
66
NuanceSourceDefaultEditCapability::CAPABILITY);
67
68
return id(new NuanceSource())
69
->setViewPolicy($view_policy)
70
->setEditPolicy($edit_policy)
71
->setType($definition->getSourceTypeConstant())
72
->attachDefinition($definition)
73
->setIsDisabled(0);
74
}
75
76
public function getDefinition() {
77
return $this->assertAttached($this->definition);
78
}
79
80
public function attachDefinition(NuanceSourceDefinition $definition) {
81
$this->definition = $definition;
82
return $this;
83
}
84
85
public function getSourceProperty($key, $default = null) {
86
return idx($this->data, $key, $default);
87
}
88
89
public function setSourceProperty($key, $value) {
90
$this->data[$key] = $value;
91
return $this;
92
}
93
94
95
/* -( PhabricatorApplicationTransactionInterface )------------------------- */
96
97
98
public function getApplicationTransactionEditor() {
99
return new NuanceSourceEditor();
100
}
101
102
public function getApplicationTransactionTemplate() {
103
return new NuanceSourceTransaction();
104
}
105
106
107
/* -( PhabricatorPolicyInterface )----------------------------------------- */
108
109
110
public function getCapabilities() {
111
return array(
112
PhabricatorPolicyCapability::CAN_VIEW,
113
PhabricatorPolicyCapability::CAN_EDIT,
114
);
115
}
116
117
public function getPolicy($capability) {
118
switch ($capability) {
119
case PhabricatorPolicyCapability::CAN_VIEW:
120
return $this->getViewPolicy();
121
case PhabricatorPolicyCapability::CAN_EDIT:
122
return $this->getEditPolicy();
123
}
124
}
125
126
public function hasAutomaticCapability($capability, PhabricatorUser $viewer) {
127
return false;
128
}
129
130
131
/* -( PhabricatorNgramsInterface )----------------------------------------- */
132
133
134
public function newNgrams() {
135
return array(
136
id(new NuanceSourceNameNgrams())
137
->setValue($this->getName()),
138
);
139
}
140
141
}
142
143