summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--classes/pluginhost.php1
-rw-r--r--include/functions.php23
2 files changed, 19 insertions, 5 deletions
diff --git a/classes/pluginhost.php b/classes/pluginhost.php
index 592629881..79544b01b 100644
--- a/classes/pluginhost.php
+++ b/classes/pluginhost.php
@@ -21,6 +21,7 @@ class PluginHost {
const HOOK_RENDER_ARTICLE = 10;
const HOOK_RENDER_ARTICLE_CDM = 11;
const HOOK_FEED_FETCHED = 12;
+ const HOOK_SANITIZE = 13;
const KIND_ALL = 1;
const KIND_SYSTEM = 2;
diff --git a/include/functions.php b/include/functions.php
index 2120a96b9..ae9561337 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -2597,12 +2597,25 @@
//$node = $doc->getElementsByTagName('body')->item(0);
- $doc->removeChild($doc->firstChild); //remove doctype
- $res = $doc->saveHTML();
- $config = array('safe' => 1, 'deny_attribute' => 'style, width, height, class, id', 'comment' => 1, 'cdata' => 1, 'balance' => 0);
- $spec = 'img=width,height';
- $res = htmLawed($res, $config, $spec);
+ $beforehooks = $res;
+
+ global $pluginhost;
+ if ($pluginhost) {
+ foreach ($pluginhost->get_hooks($pluginhost::HOOK_SANITIZE) as $p) {
+ $res = $p->hook_sanitize($res);
+ }
+ }
+
+ // nothing changed, use standard filters
+ if ($beforehooks == $res) {
+ $doc->removeChild($doc->firstChild); //remove doctype
+ $res = $doc->saveHTML();
+
+ $config = array('safe' => 1, 'deny_attribute' => 'style, width, height, class, id', 'comment' => 1, 'cdata' => 1, 'balance' => 0);
+ $spec = 'img=width,height';
+ $res = htmLawed($res, $config, $spec);
+ }
return $res;
}