Correct Aphlict websocket URI construction after PHP8 compatibility changes
[phabricator.git] / src / applications / files / storage / PhabricatorFileAttachment.php
blobc6aa170c792b35760addfd5e6b0addf4a4df5076
1 <?php
3 final class PhabricatorFileAttachment
4 extends PhabricatorFileDAO
5 implements
6 PhabricatorPolicyInterface,
7 PhabricatorExtendedPolicyInterface {
9 protected $objectPHID;
10 protected $filePHID;
11 protected $attacherPHID;
12 protected $attachmentMode;
14 private $object = self::ATTACHABLE;
15 private $file = self::ATTACHABLE;
17 const MODE_ATTACH = 'attach';
18 const MODE_REFERENCE = 'reference';
19 const MODE_DETACH = 'detach';
21 protected function getConfiguration() {
22 return array(
23 self::CONFIG_COLUMN_SCHEMA => array(
24 'objectPHID' => 'phid',
25 'filePHID' => 'phid',
26 'attacherPHID' => 'phid?',
27 'attachmentMode' => 'text32',
29 self::CONFIG_KEY_SCHEMA => array(
30 'key_object' => array(
31 'columns' => array('objectPHID', 'filePHID'),
32 'unique' => true,
34 'key_file' => array(
35 'columns' => array('filePHID'),
38 ) + parent::getConfiguration();
41 public static function getModeList() {
42 return array(
43 self::MODE_ATTACH,
44 self::MODE_REFERENCE,
45 self::MODE_DETACH,
49 public static function getModeNameMap() {
50 return array(
51 self::MODE_ATTACH => pht('Attached'),
52 self::MODE_REFERENCE => pht('Referenced'),
56 public function isPolicyAttachment() {
57 switch ($this->getAttachmentMode()) {
58 case self::MODE_ATTACH:
59 return true;
60 default:
61 return false;
65 public function attachObject($object) {
66 $this->object = $object;
67 return $this;
70 public function getObject() {
71 return $this->assertAttached($this->object);
74 public function attachFile(PhabricatorFile $file = null) {
75 $this->file = $file;
76 return $this;
79 public function getFile() {
80 return $this->assertAttached($this->file);
83 public function canDetach() {
84 switch ($this->getAttachmentMode()) {
85 case self::MODE_ATTACH:
86 return true;
89 return false;
93 /* -( PhabricatorPolicyInterface )----------------------------------------- */
96 public function getCapabilities() {
97 return array(
98 PhabricatorPolicyCapability::CAN_VIEW,
102 public function getPolicy($capability) {
103 switch ($capability) {
104 case PhabricatorPolicyCapability::CAN_VIEW:
105 return PhabricatorPolicies::getMostOpenPolicy();
109 public function hasAutomaticCapability($capability, PhabricatorUser $viewer) {
110 return false;
114 /* -( PhabricatorExtendedPolicyInterface )--------------------------------- */
117 public function getExtendedPolicy($capability, PhabricatorUser $viewer) {
118 return array(
119 array($this->getObject(), $capability),