Path: blob/master/src/applications/almanac/storage/AlmanacNetwork.php
12256 views
<?php12final class AlmanacNetwork3extends AlmanacDAO4implements5PhabricatorApplicationTransactionInterface,6PhabricatorPolicyInterface,7PhabricatorDestructibleInterface,8PhabricatorNgramsInterface,9PhabricatorConduitResultInterface {1011protected $name;12protected $viewPolicy;13protected $editPolicy;1415public static function initializeNewNetwork() {16return id(new AlmanacNetwork())17->setViewPolicy(PhabricatorPolicies::POLICY_USER)18->setEditPolicy(PhabricatorPolicies::POLICY_ADMIN);19}2021protected function getConfiguration() {22return array(23self::CONFIG_AUX_PHID => true,24self::CONFIG_COLUMN_SCHEMA => array(25'name' => 'sort128',26),27self::CONFIG_KEY_SCHEMA => array(28'key_name' => array(29'columns' => array('name'),30'unique' => true,31),32),33) + parent::getConfiguration();34}3536public function getPHIDType() {37return AlmanacNetworkPHIDType::TYPECONST;38}3940public function getURI() {41return urisprintf(42'/almanac/network/%s/',43$this->getID());44}454647/* -( PhabricatorApplicationTransactionInterface )------------------------- */484950public function getApplicationTransactionEditor() {51return new AlmanacNetworkEditor();52}5354public function getApplicationTransactionTemplate() {55return new AlmanacNetworkTransaction();56}575859/* -( PhabricatorPolicyInterface )----------------------------------------- */606162public function getCapabilities() {63return array(64PhabricatorPolicyCapability::CAN_VIEW,65PhabricatorPolicyCapability::CAN_EDIT,66);67}6869public function getPolicy($capability) {70switch ($capability) {71case PhabricatorPolicyCapability::CAN_VIEW:72return $this->getViewPolicy();73case PhabricatorPolicyCapability::CAN_EDIT:74return $this->getEditPolicy();75}76}7778public function hasAutomaticCapability($capability, PhabricatorUser $viewer) {79return false;80}818283/* -( PhabricatorDestructibleInterface )----------------------------------- */848586public function destroyObjectPermanently(87PhabricatorDestructionEngine $engine) {8889$interfaces = id(new AlmanacInterfaceQuery())90->setViewer($engine->getViewer())91->withNetworkPHIDs(array($this->getPHID()))92->execute();9394foreach ($interfaces as $interface) {95$engine->destroyObject($interface);96}9798$this->delete();99}100101102/* -( PhabricatorNgramsInterface )----------------------------------------- */103104105public function newNgrams() {106return array(107id(new AlmanacNetworkNameNgrams())108->setValue($this->getName()),109);110}111112113/* -( PhabricatorConduitResultInterface )---------------------------------- */114115116public function getFieldSpecificationsForConduit() {117return array(118id(new PhabricatorConduitSearchFieldSpecification())119->setKey('name')120->setType('string')121->setDescription(pht('The name of the network.')),122);123}124125public function getFieldValuesForConduit() {126return array(127'name' => $this->getName(),128);129}130131public function getConduitSearchAttachments() {132return array();133}134135}136137138