Path: blob/master/src/applications/nuance/storage/NuanceSource.php
12256 views
<?php12final class NuanceSource extends NuanceDAO3implements4PhabricatorApplicationTransactionInterface,5PhabricatorPolicyInterface,6PhabricatorNgramsInterface {78protected $name;9protected $type;10protected $data = array();11protected $mailKey;12protected $viewPolicy;13protected $editPolicy;14protected $defaultQueuePHID;15protected $isDisabled;1617private $definition = self::ATTACHABLE;1819protected function getConfiguration() {20return array(21self::CONFIG_AUX_PHID => true,22self::CONFIG_SERIALIZATION => array(23'data' => self::SERIALIZATION_JSON,24),25self::CONFIG_COLUMN_SCHEMA => array(26'name' => 'sort255',27'type' => 'text32',28'mailKey' => 'bytes20',29'isDisabled' => 'bool',30),31self::CONFIG_KEY_SCHEMA => array(32'key_type' => array(33'columns' => array('type', 'dateModified'),34),35),36) + parent::getConfiguration();37}3839public function generatePHID() {40return PhabricatorPHID::generateNewPHID(NuanceSourcePHIDType::TYPECONST);41}4243public function save() {44if (!$this->getMailKey()) {45$this->setMailKey(Filesystem::readRandomCharacters(20));46}47return parent::save();48}4950public function getURI() {51return '/nuance/source/view/'.$this->getID().'/';52}5354public static function initializeNewSource(55PhabricatorUser $actor,56NuanceSourceDefinition $definition) {57$app = id(new PhabricatorApplicationQuery())58->setViewer($actor)59->withClasses(array('PhabricatorNuanceApplication'))60->executeOne();6162$view_policy = $app->getPolicy(63NuanceSourceDefaultViewCapability::CAPABILITY);64$edit_policy = $app->getPolicy(65NuanceSourceDefaultEditCapability::CAPABILITY);6667return id(new NuanceSource())68->setViewPolicy($view_policy)69->setEditPolicy($edit_policy)70->setType($definition->getSourceTypeConstant())71->attachDefinition($definition)72->setIsDisabled(0);73}7475public function getDefinition() {76return $this->assertAttached($this->definition);77}7879public function attachDefinition(NuanceSourceDefinition $definition) {80$this->definition = $definition;81return $this;82}8384public function getSourceProperty($key, $default = null) {85return idx($this->data, $key, $default);86}8788public function setSourceProperty($key, $value) {89$this->data[$key] = $value;90return $this;91}929394/* -( PhabricatorApplicationTransactionInterface )------------------------- */959697public function getApplicationTransactionEditor() {98return new NuanceSourceEditor();99}100101public function getApplicationTransactionTemplate() {102return new NuanceSourceTransaction();103}104105106/* -( PhabricatorPolicyInterface )----------------------------------------- */107108109public function getCapabilities() {110return array(111PhabricatorPolicyCapability::CAN_VIEW,112PhabricatorPolicyCapability::CAN_EDIT,113);114}115116public function getPolicy($capability) {117switch ($capability) {118case PhabricatorPolicyCapability::CAN_VIEW:119return $this->getViewPolicy();120case PhabricatorPolicyCapability::CAN_EDIT:121return $this->getEditPolicy();122}123}124125public function hasAutomaticCapability($capability, PhabricatorUser $viewer) {126return false;127}128129130/* -( PhabricatorNgramsInterface )----------------------------------------- */131132133public function newNgrams() {134return array(135id(new NuanceSourceNameNgrams())136->setValue($this->getName()),137);138}139140}141142143