Path: blob/master/src/applications/fact/storage/PhabricatorFactChart.php
12256 views
<?php12final class PhabricatorFactChart3extends PhabricatorFactDAO4implements PhabricatorPolicyInterface {56protected $chartKey;7protected $chartParameters = array();89private $datasets = self::ATTACHABLE;1011protected function getConfiguration() {12return array(13self::CONFIG_SERIALIZATION => array(14'chartParameters' => self::SERIALIZATION_JSON,15),16self::CONFIG_COLUMN_SCHEMA => array(17'chartKey' => 'bytes12',18),19self::CONFIG_KEY_SCHEMA => array(20'key_chart' => array(21'columns' => array('chartKey'),22'unique' => true,23),24),25) + parent::getConfiguration();26}2728public function setChartParameter($key, $value) {29$this->chartParameters[$key] = $value;30return $this;31}3233public function getChartParameter($key, $default = null) {34return idx($this->chartParameters, $key, $default);35}3637public function newChartKey() {38$digest = serialize($this->chartParameters);39$digest = PhabricatorHash::digestForIndex($digest);40return $digest;41}4243public function save() {44if ($this->getID()) {45throw new Exception(46pht(47'Chart configurations are not mutable. You can not update or '.48'overwrite an existing chart configuration.'));49}5051$this->chartKey = $this->newChartKey();5253return parent::save();54}5556public function attachDatasets(array $datasets) {57assert_instances_of($datasets, 'PhabricatorChartDataset');58$this->datasets = $datasets;59return $this;60}6162public function getDatasets() {63return $this->assertAttached($this->datasets);64}6566public function getURI() {67return urisprintf('/fact/chart/%s/', $this->getChartKey());68}6970/* -( PhabricatorPolicyInterface )----------------------------------------- */7172public function getCapabilities() {73return array(74PhabricatorPolicyCapability::CAN_VIEW,75);76}7778public function getPolicy($capability) {79return PhabricatorPolicies::getMostOpenPolicy();80}8182public function hasAutomaticCapability($capability, PhabricatorUser $viewer) {83return false;84}858687}888990