[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class DrydockBlueprint extends DrydockDAO 4 implements 5 PhabricatorPolicyInterface, 6 PhabricatorCustomFieldInterface { 7 8 protected $className; 9 protected $blueprintName; 10 protected $viewPolicy; 11 protected $editPolicy; 12 protected $details = array(); 13 14 private $implementation = self::ATTACHABLE; 15 private $customFields = self::ATTACHABLE; 16 17 public static function initializeNewBlueprint(PhabricatorUser $actor) { 18 $app = id(new PhabricatorApplicationQuery()) 19 ->setViewer($actor) 20 ->withClasses(array('PhabricatorDrydockApplication')) 21 ->executeOne(); 22 23 $view_policy = $app->getPolicy( 24 DrydockDefaultViewCapability::CAPABILITY); 25 $edit_policy = $app->getPolicy( 26 DrydockDefaultEditCapability::CAPABILITY); 27 28 return id(new DrydockBlueprint()) 29 ->setViewPolicy($view_policy) 30 ->setEditPolicy($edit_policy) 31 ->setBlueprintName(''); 32 } 33 34 public function getConfiguration() { 35 return array( 36 self::CONFIG_AUX_PHID => true, 37 self::CONFIG_SERIALIZATION => array( 38 'details' => self::SERIALIZATION_JSON, 39 ), 40 self::CONFIG_COLUMN_SCHEMA => array( 41 'className' => 'text255', 42 'blueprintName' => 'text255', 43 ), 44 ) + parent::getConfiguration(); 45 } 46 47 public function generatePHID() { 48 return PhabricatorPHID::generateNewPHID( 49 DrydockBlueprintPHIDType::TYPECONST); 50 } 51 52 public function getImplementation() { 53 $class = $this->className; 54 $implementations = 55 DrydockBlueprintImplementation::getAllBlueprintImplementations(); 56 if (!isset($implementations[$class])) { 57 throw new Exception( 58 "Invalid class name for blueprint (got '".$class."')"); 59 } 60 return id(new $class())->attachInstance($this); 61 } 62 63 public function attachImplementation(DrydockBlueprintImplementation $impl) { 64 $this->implementation = $impl; 65 return $this; 66 } 67 68 public function getDetail($key, $default = null) { 69 return idx($this->details, $key, $default); 70 } 71 72 public function setDetail($key, $value) { 73 $this->details[$key] = $value; 74 return $this; 75 } 76 77 78 /* -( PhabricatorPolicyInterface )----------------------------------------- */ 79 80 81 public function getCapabilities() { 82 return array( 83 PhabricatorPolicyCapability::CAN_VIEW, 84 PhabricatorPolicyCapability::CAN_EDIT, 85 ); 86 } 87 88 public function getPolicy($capability) { 89 switch ($capability) { 90 case PhabricatorPolicyCapability::CAN_VIEW: 91 return $this->getViewPolicy(); 92 case PhabricatorPolicyCapability::CAN_EDIT: 93 return $this->getEditPolicy(); 94 } 95 } 96 97 public function hasAutomaticCapability($capability, PhabricatorUser $viewer) { 98 return false; 99 } 100 101 public function describeAutomaticCapability($capability) { 102 return null; 103 } 104 105 106 /* -( PhabricatorCustomFieldInterface )------------------------------------ */ 107 108 109 public function getCustomFieldSpecificationForRole($role) { 110 return array(); 111 } 112 113 public function getCustomFieldBaseClass() { 114 return 'DrydockBlueprintCustomField'; 115 } 116 117 public function getCustomFields() { 118 return $this->assertAttached($this->customFields); 119 } 120 121 public function attachCustomFields(PhabricatorCustomFieldAttachment $fields) { 122 $this->customFields = $fields; 123 return $this; 124 } 125 126 127 128 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |