Path: blob/master/src/infrastructure/contentsource/PhabricatorContentSource.php
12241 views
<?php12abstract class PhabricatorContentSource extends Phobject {34private $source;5private $params = array();67abstract public function getSourceName();8abstract public function getSourceDescription();910final public function getSourceTypeConstant() {11return $this->getPhobjectClassConstant('SOURCECONST', 32);12}1314final public static function getAllContentSources() {15return id(new PhutilClassMapQuery())16->setAncestorClass(__CLASS__)17->setUniqueMethod('getSourceTypeConstant')18->execute();19}2021/**22* Construct a new content source object.23*24* @param const The source type constant to build a source for.25* @param array Source parameters.26* @param bool True to suppress errors and force construction of a source27* even if the source type is not valid.28* @return PhabricatorContentSource New source object.29*/30final public static function newForSource(31$source,32array $params = array(),33$force = false) {3435$map = self::getAllContentSources();36if (isset($map[$source])) {37$obj = clone $map[$source];38} else {39if ($force) {40$obj = new PhabricatorUnknownContentSource();41} else {42throw new Exception(43pht(44'Content source type "%s" is unknown.',45$source));46}47}4849$obj->source = $source;50$obj->params = $params;5152return $obj;53}5455public static function newFromSerialized($serialized) {56$dict = json_decode($serialized, true);57if (!is_array($dict)) {58$dict = array();59}6061$source = idx($dict, 'source');62$params = idx($dict, 'params');63if (!is_array($params)) {64$params = array();65}6667return self::newForSource($source, $params, true);68}6970public static function newFromRequest(AphrontRequest $request) {71return self::newForSource(72PhabricatorWebContentSource::SOURCECONST);73}7475final public function serialize() {76return phutil_json_encode(77array(78'source' => $this->getSource(),79'params' => $this->params,80));81}8283final public function getSource() {84return $this->source;85}8687final public function getContentSourceParameter($key, $default = null) {88return idx($this->params, $key, $default);89}9091}929394