]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - inc/3rdparty/htmlpurifier/HTMLPurifier/URIDefinition.php
[add] HTML Purifier added to clean code
[github/wallabag/wallabag.git] / inc / 3rdparty / htmlpurifier / HTMLPurifier / URIDefinition.php
diff --git a/inc/3rdparty/htmlpurifier/HTMLPurifier/URIDefinition.php b/inc/3rdparty/htmlpurifier/HTMLPurifier/URIDefinition.php
new file mode 100644 (file)
index 0000000..dbc2a75
--- /dev/null
@@ -0,0 +1,112 @@
+<?php\r
+\r
+class HTMLPurifier_URIDefinition extends HTMLPurifier_Definition\r
+{\r
+\r
+    public $type = 'URI';\r
+    protected $filters = array();\r
+    protected $postFilters = array();\r
+    protected $registeredFilters = array();\r
+\r
+    /**\r
+     * HTMLPurifier_URI object of the base specified at %URI.Base\r
+     */\r
+    public $base;\r
+\r
+    /**\r
+     * String host to consider "home" base, derived off of $base\r
+     */\r
+    public $host;\r
+\r
+    /**\r
+     * Name of default scheme based on %URI.DefaultScheme and %URI.Base\r
+     */\r
+    public $defaultScheme;\r
+\r
+    public function __construct()\r
+    {\r
+        $this->registerFilter(new HTMLPurifier_URIFilter_DisableExternal());\r
+        $this->registerFilter(new HTMLPurifier_URIFilter_DisableExternalResources());\r
+        $this->registerFilter(new HTMLPurifier_URIFilter_DisableResources());\r
+        $this->registerFilter(new HTMLPurifier_URIFilter_HostBlacklist());\r
+        $this->registerFilter(new HTMLPurifier_URIFilter_SafeIframe());\r
+        $this->registerFilter(new HTMLPurifier_URIFilter_MakeAbsolute());\r
+        $this->registerFilter(new HTMLPurifier_URIFilter_Munge());\r
+    }\r
+\r
+    public function registerFilter($filter)\r
+    {\r
+        $this->registeredFilters[$filter->name] = $filter;\r
+    }\r
+\r
+    public function addFilter($filter, $config)\r
+    {\r
+        $r = $filter->prepare($config);\r
+        if ($r === false) return; // null is ok, for backwards compat\r
+        if ($filter->post) {\r
+            $this->postFilters[$filter->name] = $filter;\r
+        } else {\r
+            $this->filters[$filter->name] = $filter;\r
+        }\r
+    }\r
+\r
+    protected function doSetup($config)\r
+    {\r
+        $this->setupMemberVariables($config);\r
+        $this->setupFilters($config);\r
+    }\r
+\r
+    protected function setupFilters($config)\r
+    {\r
+        foreach ($this->registeredFilters as $name => $filter) {\r
+            if ($filter->always_load) {\r
+                $this->addFilter($filter, $config);\r
+            } else {\r
+                $conf = $config->get('URI.' . $name);\r
+                if ($conf !== false && $conf !== null) {\r
+                    $this->addFilter($filter, $config);\r
+                }\r
+            }\r
+        }\r
+        unset($this->registeredFilters);\r
+    }\r
+\r
+    protected function setupMemberVariables($config)\r
+    {\r
+        $this->host = $config->get('URI.Host');\r
+        $base_uri = $config->get('URI.Base');\r
+        if (!is_null($base_uri)) {\r
+            $parser = new HTMLPurifier_URIParser();\r
+            $this->base = $parser->parse($base_uri);\r
+            $this->defaultScheme = $this->base->scheme;\r
+            if (is_null($this->host)) $this->host = $this->base->host;\r
+        }\r
+        if (is_null($this->defaultScheme)) $this->defaultScheme = $config->get('URI.DefaultScheme');\r
+    }\r
+\r
+    public function getDefaultScheme($config, $context)\r
+    {\r
+        return HTMLPurifier_URISchemeRegistry::instance()->getScheme($this->defaultScheme, $config, $context);\r
+    }\r
+\r
+    public function filter(&$uri, $config, $context)\r
+    {\r
+        foreach ($this->filters as $name => $f) {\r
+            $result = $f->filter($uri, $config, $context);\r
+            if (!$result) return false;\r
+        }\r
+        return true;\r
+    }\r
+\r
+    public function postFilter(&$uri, $config, $context)\r
+    {\r
+        foreach ($this->postFilters as $name => $f) {\r
+            $result = $f->filter($uri, $config, $context);\r
+            if (!$result) return false;\r
+        }\r
+        return true;\r
+    }\r
+\r
+}\r
+\r
+// vim: et sw=4 sts=4\r