[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/drydock/storage/ -> DrydockBlueprint.php (source)

   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  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1