add experimental HOOK_SANITIZE

This commit is contained in:
Andrew Dolgov 2013-03-18 22:26:36 +04:00
parent 5b18c93622
commit 2130fe7a18
2 changed files with 19 additions and 5 deletions

View File

@ -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;

View File

@ -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;
}