Path: blob/master/src/applications/files/storage/PhabricatorFileAttachment.php
12242 views
<?php12final class PhabricatorFileAttachment3extends PhabricatorFileDAO4implements5PhabricatorPolicyInterface,6PhabricatorExtendedPolicyInterface {78protected $objectPHID;9protected $filePHID;10protected $attacherPHID;11protected $attachmentMode;1213private $object = self::ATTACHABLE;14private $file = self::ATTACHABLE;1516const MODE_ATTACH = 'attach';17const MODE_REFERENCE = 'reference';18const MODE_DETACH = 'detach';1920protected function getConfiguration() {21return array(22self::CONFIG_COLUMN_SCHEMA => array(23'objectPHID' => 'phid',24'filePHID' => 'phid',25'attacherPHID' => 'phid?',26'attachmentMode' => 'text32',27),28self::CONFIG_KEY_SCHEMA => array(29'key_object' => array(30'columns' => array('objectPHID', 'filePHID'),31'unique' => true,32),33'key_file' => array(34'columns' => array('filePHID'),35),36),37) + parent::getConfiguration();38}3940public static function getModeList() {41return array(42self::MODE_ATTACH,43self::MODE_REFERENCE,44self::MODE_DETACH,45);46}4748public static function getModeNameMap() {49return array(50self::MODE_ATTACH => pht('Attached'),51self::MODE_REFERENCE => pht('Referenced'),52);53}5455public function isPolicyAttachment() {56switch ($this->getAttachmentMode()) {57case self::MODE_ATTACH:58return true;59default:60return false;61}62}6364public function attachObject($object) {65$this->object = $object;66return $this;67}6869public function getObject() {70return $this->assertAttached($this->object);71}7273public function attachFile(PhabricatorFile $file = null) {74$this->file = $file;75return $this;76}7778public function getFile() {79return $this->assertAttached($this->file);80}8182public function canDetach() {83switch ($this->getAttachmentMode()) {84case self::MODE_ATTACH:85return true;86}8788return false;89}909192/* -( PhabricatorPolicyInterface )----------------------------------------- */939495public function getCapabilities() {96return array(97PhabricatorPolicyCapability::CAN_VIEW,98);99}100101public function getPolicy($capability) {102switch ($capability) {103case PhabricatorPolicyCapability::CAN_VIEW:104return PhabricatorPolicies::getMostOpenPolicy();105}106}107108public function hasAutomaticCapability($capability, PhabricatorUser $viewer) {109return false;110}111112113/* -( PhabricatorExtendedPolicyInterface )--------------------------------- */114115116public function getExtendedPolicy($capability, PhabricatorUser $viewer) {117return array(118array($this->getObject(), $capability),119);120}121122}123124125