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
+ );
}