[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/nuance/storage/ -> NuanceSource.php (source)

   1  <?php
   2  
   3  final class NuanceSource extends NuanceDAO
   4    implements PhabricatorPolicyInterface {
   5  
   6    protected $name;
   7    protected $type;
   8    protected $data;
   9    protected $mailKey;
  10    protected $viewPolicy;
  11    protected $editPolicy;
  12  
  13    public function getConfiguration() {
  14      return array(
  15        self::CONFIG_AUX_PHID => true,
  16        self::CONFIG_SERIALIZATION => array(
  17          'data' => self::SERIALIZATION_JSON,
  18        ),
  19        self::CONFIG_COLUMN_SCHEMA => array(
  20          'name' => 'text255?',
  21          'type' => 'text32',
  22          'mailKey' => 'bytes20',
  23        ),
  24        self::CONFIG_KEY_SCHEMA => array(
  25          'key_type' => array(
  26            'columns' => array('type', 'dateModified'),
  27          ),
  28        ),
  29      ) + parent::getConfiguration();
  30    }
  31  
  32    public function generatePHID() {
  33      return PhabricatorPHID::generateNewPHID(NuanceSourcePHIDType::TYPECONST);
  34    }
  35  
  36    public function save() {
  37      if (!$this->getMailKey()) {
  38        $this->setMailKey(Filesystem::readRandomCharacters(20));
  39      }
  40      return parent::save();
  41    }
  42  
  43    public function getURI() {
  44      return '/nuance/source/view/'.$this->getID().'/';
  45    }
  46  
  47    public static function initializeNewSource(PhabricatorUser $actor) {
  48      $app = id(new PhabricatorApplicationQuery())
  49        ->setViewer($actor)
  50        ->withClasses(array('PhabricatorNuanceApplication'))
  51        ->executeOne();
  52  
  53      $view_policy = $app->getPolicy(
  54        NuanceSourceDefaultViewCapability::CAPABILITY);
  55      $edit_policy = $app->getPolicy(
  56        NuanceSourceDefaultEditCapability::CAPABILITY);
  57  
  58      $definitions = NuanceSourceDefinition::getAllDefinitions();
  59      $lucky_definition = head($definitions);
  60  
  61      return id(new NuanceSource())
  62        ->setViewPolicy($view_policy)
  63        ->setEditPolicy($edit_policy)
  64        ->setType($lucky_definition->getSourceTypeConstant());
  65    }
  66  
  67    public function getCapabilities() {
  68      return array(
  69        PhabricatorPolicyCapability::CAN_VIEW,
  70        PhabricatorPolicyCapability::CAN_EDIT,
  71      );
  72    }
  73  
  74    public function getPolicy($capability) {
  75      switch ($capability) {
  76        case PhabricatorPolicyCapability::CAN_VIEW:
  77          return $this->getViewPolicy();
  78        case PhabricatorPolicyCapability::CAN_EDIT:
  79          return $this->getEditPolicy();
  80      }
  81    }
  82  
  83    public function hasAutomaticCapability($capability, PhabricatorUser $viewer) {
  84      return false;
  85    }
  86  
  87    public function describeAutomaticCapability($capability) {
  88      return null;
  89    }
  90  
  91  }


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