3 class HTMLPurifier_URIDefinition
extends HTMLPurifier_Definition
7 protected $filters = array();
8 protected $postFilters = array();
9 protected $registeredFilters = array();
12 * HTMLPurifier_URI object of the base specified at %URI.Base
17 * String host to consider "home" base, derived off of $base
22 * Name of default scheme based on %URI.DefaultScheme and %URI.Base
24 public $defaultScheme;
26 public function __construct() {
27 $this->registerFilter(new HTMLPurifier_URIFilter_DisableExternal());
28 $this->registerFilter(new HTMLPurifier_URIFilter_DisableExternalResources());
29 $this->registerFilter(new HTMLPurifier_URIFilter_DisableResources());
30 $this->registerFilter(new HTMLPurifier_URIFilter_HostBlacklist());
31 $this->registerFilter(new HTMLPurifier_URIFilter_SafeIframe());
32 $this->registerFilter(new HTMLPurifier_URIFilter_MakeAbsolute());
33 $this->registerFilter(new HTMLPurifier_URIFilter_Munge());
36 public function registerFilter($filter) {
37 $this->registeredFilters
[$filter->name
] = $filter;
40 public function addFilter($filter, $config) {
41 $r = $filter->prepare($config);
42 if ($r === false) return; // null is ok, for backwards compat
44 $this->postFilters
[$filter->name
] = $filter;
46 $this->filters
[$filter->name
] = $filter;
50 protected function doSetup($config) {
51 $this->setupMemberVariables($config);
52 $this->setupFilters($config);
55 protected function setupFilters($config) {
56 foreach ($this->registeredFilters
as $name => $filter) {
57 if ($filter->always_load
) {
58 $this->addFilter($filter, $config);
60 $conf = $config->get('URI.' . $name);
61 if ($conf !== false && $conf !== null) {
62 $this->addFilter($filter, $config);
66 unset($this->registeredFilters
);
69 protected function setupMemberVariables($config) {
70 $this->host
= $config->get('URI.Host');
71 $base_uri = $config->get('URI.Base');
72 if (!is_null($base_uri)) {
73 $parser = new HTMLPurifier_URIParser();
74 $this->base
= $parser->parse($base_uri);
75 $this->defaultScheme
= $this->base
->scheme
;
76 if (is_null($this->host
)) $this->host
= $this->base
->host
;
78 if (is_null($this->defaultScheme
)) $this->defaultScheme
= $config->get('URI.DefaultScheme');
81 public function getDefaultScheme($config, $context) {
82 return HTMLPurifier_URISchemeRegistry
::instance()->getScheme($this->defaultScheme
, $config, $context);
85 public function filter(&$uri, $config, $context) {
86 foreach ($this->filters
as $name => $f) {
87 $result = $f->filter($uri, $config, $context);
88 if (!$result) return false;
93 public function postFilter(&$uri, $config, $context) {
94 foreach ($this->postFilters
as $name => $f) {
95 $result = $f->filter($uri, $config, $context);
96 if (!$result) return false;
103 // vim: et sw=4 sts=4