diff --git a/library/HTMLPurifier/HTMLDefinition.php b/library/HTMLPurifier/HTMLDefinition.php index 7e7ac0b2..a14e6e9b 100644 --- a/library/HTMLPurifier/HTMLDefinition.php +++ b/library/HTMLPurifier/HTMLDefinition.php @@ -305,6 +305,9 @@ class HTMLPurifier_HTMLDefinition $this->info_content_sets = $this->content_sets->lookup; foreach ($this->modules as $module_i => $module) { + + $module->preProcess($this, $config); + // process element-wise definitions foreach ($module->info as $name => $def) { // setup info @@ -348,6 +351,9 @@ class HTMLPurifier_HTMLDefinition foreach($module->info_tag_transform as $k => $v) $this->info_tag_transform[$k] = $v; foreach($module->info_attr_transform_pre as $k => $v) $this->info_attr_transform_pre[$k] = $v; foreach($module->info_attr_transform_post as $k => $v) $this->info_attr_transform_post[$k]= $v; + + $module->postProcess($this, $config); + } } diff --git a/library/HTMLPurifier/HTMLModule.php b/library/HTMLPurifier/HTMLModule.php index 168010ae..6538952b 100644 --- a/library/HTMLPurifier/HTMLModule.php +++ b/library/HTMLPurifier/HTMLModule.php @@ -91,6 +91,22 @@ class HTMLPurifier_HTMLModule */ function getChildDef($def) {return false;} + /** + * Hook method that lets module perform arbitrary operations on + * HTMLPurifier_HTMLDefinition before the module gets processed. + * @param $definition Reference to HTMLDefinition being setup + * @param $config Instance of HTMLPurifier_Config + */ + function preProcess(&$definition, $config) {} + + /** + * Hook method that lets module perform arbitrary operations + * on HTMLPurifier_HTMLDefinition after the module gets processed. + * @param $definition Reference to HTMLDefinition being setup + * @param $config Instance of HTMLPurifier_Config + */ + function postProcess(&$definition, $config) {} + } ?> \ No newline at end of file diff --git a/library/HTMLPurifier/HTMLModule/Legacy.php b/library/HTMLPurifier/HTMLModule/Legacy.php index 0a7111ba..94864890 100644 --- a/library/HTMLPurifier/HTMLModule/Legacy.php +++ b/library/HTMLPurifier/HTMLModule/Legacy.php @@ -5,7 +5,9 @@ * deprecated. * * @note Not all legacy elements have been implemented yet, which - * is a bit of a reverse problem as compared to browsers! + * is a bit of a reverse problem as compared to browsers! In + * addition, this legacy module may implement a bit more than + * mandated by XHTML 1.1. * * This module can be used in combination with TransformToStrict in order * to transform as many deprecated elements as possible, but retain diff --git a/library/HTMLPurifier/HTMLModule/TransformToStrict.php b/library/HTMLPurifier/HTMLModule/TransformToStrict.php index f53a76e4..6623b6fe 100644 --- a/library/HTMLPurifier/HTMLModule/TransformToStrict.php +++ b/library/HTMLPurifier/HTMLModule/TransformToStrict.php @@ -27,6 +27,10 @@ class HTMLPurifier_HTMLModule_TransformToStrict extends HTMLPurifier_HTMLModule ) ); + var $info_attr_transform_post = array( + 'lang' => false // placeholder + ); + function HTMLPurifier_HTMLModule_TransformToStrict($config) { // deprecated tag transforms $this->info_tag_transform['font'] = new HTMLPurifier_TagTransform_Font(); diff --git a/library/HTMLPurifier/HTMLModule/TransformToXHTML11.php b/library/HTMLPurifier/HTMLModule/TransformToXHTML11.php index e3f7a13e..6a3b9abf 100644 --- a/library/HTMLPurifier/HTMLModule/TransformToXHTML11.php +++ b/library/HTMLPurifier/HTMLModule/TransformToXHTML11.php @@ -14,7 +14,15 @@ class HTMLPurifier_HTMLModule_TransformToXHTML11 extends HTMLPurifier_HTMLModule { - // unimplemented + var $attr_collections = array( + 'Lang' => array( + 'lang' => false // remove it + ) + ); + + var $info_attr_transform_post = array( + 'lang' => false // remove it + ); }