From 2130fe7a18d7e1863575feda9ec39654541eee77 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 18 Mar 2013 22:26:36 +0400 Subject: [PATCH] add experimental HOOK_SANITIZE --- classes/pluginhost.php | 1 + include/functions.php | 23 ++++++++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/classes/pluginhost.php b/classes/pluginhost.php index 59262988..79544b01 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 2120a96b..ae956133 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; } -- 2.39.5