Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/badges/storage/PhabricatorBadgesAward.php
12256 views
1
<?php
2
3
final class PhabricatorBadgesAward extends PhabricatorBadgesDAO
4
implements
5
PhabricatorDestructibleInterface,
6
PhabricatorPolicyInterface {
7
8
protected $badgePHID;
9
protected $recipientPHID;
10
protected $awarderPHID;
11
12
private $badge = self::ATTACHABLE;
13
14
public static function initializeNewBadgesAward(
15
PhabricatorUser $actor,
16
PhabricatorBadgesBadge $badge,
17
$recipient_phid) {
18
return id(new self())
19
->setRecipientPHID($recipient_phid)
20
->setBadgePHID($badge->getPHID())
21
->setAwarderPHID($actor->getPHID())
22
->attachBadge($badge);
23
}
24
25
protected function getConfiguration() {
26
return array(
27
self::CONFIG_KEY_SCHEMA => array(
28
'key_badge' => array(
29
'columns' => array('badgePHID', 'recipientPHID'),
30
'unique' => true,
31
),
32
'key_recipient' => array(
33
'columns' => array('recipientPHID'),
34
),
35
),
36
) + parent::getConfiguration();
37
}
38
39
public function attachBadge(PhabricatorBadgesBadge $badge) {
40
$this->badge = $badge;
41
return $this;
42
}
43
44
public function getBadge() {
45
return $this->assertAttached($this->badge);
46
}
47
48
49
/* -( PhabricatorDestructibleInterface )----------------------------------- */
50
51
52
public function destroyObjectPermanently(
53
PhabricatorDestructionEngine $engine) {
54
55
$this->openTransaction();
56
$this->delete();
57
$this->saveTransaction();
58
}
59
60
61
/* -( PhabricatorPolicyInterface )----------------------------------------- */
62
63
64
public function getCapabilities() {
65
return array(
66
PhabricatorPolicyCapability::CAN_VIEW,
67
PhabricatorPolicyCapability::CAN_EDIT,
68
);
69
}
70
71
public function getPolicy($capability) {
72
return $this->getBadge()->getPolicy($capability);
73
}
74
75
public function hasAutomaticCapability($capability, PhabricatorUser $viewer) {
76
return false;
77
}
78
79
}
80
81