Path: blob/master/src/applications/doorkeeper/storage/DoorkeeperExternalObject.php
12256 views
<?php12final class DoorkeeperExternalObject extends DoorkeeperDAO3implements PhabricatorPolicyInterface {45protected $objectKey;6protected $applicationType;7protected $applicationDomain;8protected $objectType;9protected $objectID;10protected $objectURI;11protected $importerPHID;12protected $properties = array();13protected $viewPolicy;1415protected function getConfiguration() {16return array(17self::CONFIG_AUX_PHID => true,18self::CONFIG_SERIALIZATION => array(19'properties' => self::SERIALIZATION_JSON,20),21self::CONFIG_COLUMN_SCHEMA => array(22'objectKey' => 'bytes12',23'applicationType' => 'text32',24'applicationDomain' => 'text32',25'objectType' => 'text32',26'objectID' => 'text64',27'objectURI' => 'text128?',28'importerPHID' => 'phid?',29),30self::CONFIG_KEY_SCHEMA => array(31'key_object' => array(32'columns' => array('objectKey'),33'unique' => true,34),35'key_full' => array(36'columns' => array(37'applicationType',38'applicationDomain',39'objectType',40'objectID',41),42),43),44) + parent::getConfiguration();45}4647public function generatePHID() {48return PhabricatorPHID::generateNewPHID(49DoorkeeperExternalObjectPHIDType::TYPECONST);50}5152public function getProperty($key, $default = null) {53return idx($this->properties, $key, $default);54}5556public function setProperty($key, $value) {57$this->properties[$key] = $value;58return $this;59}6061public function getObjectKey() {62$key = parent::getObjectKey();63if ($key === null) {64$key = $this->getRef()->getObjectKey();65}66return $key;67}6869public function getRef() {70return id(new DoorkeeperObjectRef())71->setApplicationType($this->getApplicationType())72->setApplicationDomain($this->getApplicationDomain())73->setObjectType($this->getObjectType())74->setObjectID($this->getObjectID());75}7677public function save() {78if (!$this->objectKey) {79$this->objectKey = $this->getObjectKey();80}8182return parent::save();83}8485public function setDisplayName($display_name) {86return $this->setProperty('xobj.name.display', $display_name);87}8889public function getDisplayName() {90return $this->getProperty('xobj.name.display', pht('External Object'));91}9293public function setDisplayFullName($full_name) {94return $this->setProperty('xobj.name.display-full', $full_name);95}9697public function getDisplayFullName() {98$full_name = $this->getProperty('xobj.name.display-full');99100if ($full_name !== null) {101return $full_name;102}103104return $this->getDisplayName();105}106107/* -( PhabricatorPolicyInterface )----------------------------------------- */108109public function getCapabilities() {110return array(111PhabricatorPolicyCapability::CAN_VIEW,112);113}114115public function getPolicy($capability) {116return $this->viewPolicy;117}118119public function hasAutomaticCapability($capability, PhabricatorUser $viewer) {120return false;121}122123}124125126