]> git.immae.eu Git - github/wallabag/wallabag.git/blame - inc/3rdparty/htmlpurifier/HTMLPurifier/URIDefinition.php
remove autoload section in composer.json
[github/wallabag/wallabag.git] / inc / 3rdparty / htmlpurifier / HTMLPurifier / URIDefinition.php
CommitLineData
d4949327
NL
1<?php\r
2\r
3class HTMLPurifier_URIDefinition extends HTMLPurifier_Definition\r
4{\r
5\r
6 public $type = 'URI';\r
7 protected $filters = array();\r
8 protected $postFilters = array();\r
9 protected $registeredFilters = array();\r
10\r
11 /**\r
12 * HTMLPurifier_URI object of the base specified at %URI.Base\r
13 */\r
14 public $base;\r
15\r
16 /**\r
17 * String host to consider "home" base, derived off of $base\r
18 */\r
19 public $host;\r
20\r
21 /**\r
22 * Name of default scheme based on %URI.DefaultScheme and %URI.Base\r
23 */\r
24 public $defaultScheme;\r
25\r
26 public function __construct()\r
27 {\r
28 $this->registerFilter(new HTMLPurifier_URIFilter_DisableExternal());\r
29 $this->registerFilter(new HTMLPurifier_URIFilter_DisableExternalResources());\r
30 $this->registerFilter(new HTMLPurifier_URIFilter_DisableResources());\r
31 $this->registerFilter(new HTMLPurifier_URIFilter_HostBlacklist());\r
32 $this->registerFilter(new HTMLPurifier_URIFilter_SafeIframe());\r
33 $this->registerFilter(new HTMLPurifier_URIFilter_MakeAbsolute());\r
34 $this->registerFilter(new HTMLPurifier_URIFilter_Munge());\r
35 }\r
36\r
37 public function registerFilter($filter)\r
38 {\r
39 $this->registeredFilters[$filter->name] = $filter;\r
40 }\r
41\r
42 public function addFilter($filter, $config)\r
43 {\r
44 $r = $filter->prepare($config);\r
45 if ($r === false) return; // null is ok, for backwards compat\r
46 if ($filter->post) {\r
47 $this->postFilters[$filter->name] = $filter;\r
48 } else {\r
49 $this->filters[$filter->name] = $filter;\r
50 }\r
51 }\r
52\r
53 protected function doSetup($config)\r
54 {\r
55 $this->setupMemberVariables($config);\r
56 $this->setupFilters($config);\r
57 }\r
58\r
59 protected function setupFilters($config)\r
60 {\r
61 foreach ($this->registeredFilters as $name => $filter) {\r
62 if ($filter->always_load) {\r
63 $this->addFilter($filter, $config);\r
64 } else {\r
65 $conf = $config->get('URI.' . $name);\r
66 if ($conf !== false && $conf !== null) {\r
67 $this->addFilter($filter, $config);\r
68 }\r
69 }\r
70 }\r
71 unset($this->registeredFilters);\r
72 }\r
73\r
74 protected function setupMemberVariables($config)\r
75 {\r
76 $this->host = $config->get('URI.Host');\r
77 $base_uri = $config->get('URI.Base');\r
78 if (!is_null($base_uri)) {\r
79 $parser = new HTMLPurifier_URIParser();\r
80 $this->base = $parser->parse($base_uri);\r
81 $this->defaultScheme = $this->base->scheme;\r
82 if (is_null($this->host)) $this->host = $this->base->host;\r
83 }\r
84 if (is_null($this->defaultScheme)) $this->defaultScheme = $config->get('URI.DefaultScheme');\r
85 }\r
86\r
87 public function getDefaultScheme($config, $context)\r
88 {\r
89 return HTMLPurifier_URISchemeRegistry::instance()->getScheme($this->defaultScheme, $config, $context);\r
90 }\r
91\r
92 public function filter(&$uri, $config, $context)\r
93 {\r
94 foreach ($this->filters as $name => $f) {\r
95 $result = $f->filter($uri, $config, $context);\r
96 if (!$result) return false;\r
97 }\r
98 return true;\r
99 }\r
100\r
101 public function postFilter(&$uri, $config, $context)\r
102 {\r
103 foreach ($this->postFilters as $name => $f) {\r
104 $result = $f->filter($uri, $config, $context);\r
105 if (!$result) return false;\r
106 }\r
107 return true;\r
108 }\r
109\r
110}\r
111\r
112// vim: et sw=4 sts=4\r