mirror of
https://github.com/ezyang/htmlpurifier.git
synced 2025-07-13 10:46:17 +02:00
[2.1.5] [MFH] Make modules use setup($config) instead of constructor
git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/branches/php4@1788 48356398-32a2-884e-a903-53898d9a118a
This commit is contained in:
6
NEWS
6
NEWS
@ -29,6 +29,12 @@ ERRATA
|
|||||||
to __construct($min, $max). __construct(true) is equivalent to
|
to __construct($min, $max). __construct(true) is equivalent to
|
||||||
__construct('0'). (replace __construct with HTMLPurifier_AttrDef_CSS_Length)
|
__construct('0'). (replace __construct with HTMLPurifier_AttrDef_CSS_Length)
|
||||||
. Added HTMLPurifier_AttrDef_Switch class
|
. Added HTMLPurifier_AttrDef_Switch class
|
||||||
|
. Rename HTMLPurifier_HTMLModule_Tidy->construct() to setup() and bubble method
|
||||||
|
up inheritance hierarchy to HTMLPurifier_HTMLModule. All HTMLModules
|
||||||
|
get this called with the configuration object. All modules now
|
||||||
|
use this rather than __construct(), although legacy code using constructors
|
||||||
|
will still work--the new format, however, lets modules access the
|
||||||
|
configuration object for HTML namespace dependant tweaks.
|
||||||
|
|
||||||
2.1.4, released 2008-05-18
|
2.1.4, released 2008-05-18
|
||||||
! DefinitionCacheFactory now can register new implementations
|
! DefinitionCacheFactory now can register new implementations
|
||||||
|
@ -219,5 +219,14 @@ class HTMLPurifier_HTMLModule
|
|||||||
}
|
}
|
||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lazy load construction of the module after determining whether
|
||||||
|
* or not it's needed, and also when a finalized configuration object
|
||||||
|
* is available.
|
||||||
|
* @param $config Instance of HTMLPurifier_Config
|
||||||
|
*/
|
||||||
|
function setup($config) {}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ class HTMLPurifier_HTMLModule_Bdo extends HTMLPurifier_HTMLModule
|
|||||||
'I18N' => array('dir' => false)
|
'I18N' => array('dir' => false)
|
||||||
);
|
);
|
||||||
|
|
||||||
function HTMLPurifier_HTMLModule_Bdo() {
|
function setup($config) {
|
||||||
$bdo =& $this->addElement(
|
$bdo =& $this->addElement(
|
||||||
'bdo', true, 'Inline', 'Inline', array('Core', 'Lang'),
|
'bdo', true, 'Inline', 'Inline', array('Core', 'Lang'),
|
||||||
array(
|
array(
|
||||||
|
@ -12,7 +12,7 @@ class HTMLPurifier_HTMLModule_Edit extends HTMLPurifier_HTMLModule
|
|||||||
|
|
||||||
var $name = 'Edit';
|
var $name = 'Edit';
|
||||||
|
|
||||||
function HTMLPurifier_HTMLModule_Edit() {
|
function setup($config) {
|
||||||
$contents = 'Chameleon: #PCDATA | Inline ! #PCDATA | Flow';
|
$contents = 'Chameleon: #PCDATA | Inline ! #PCDATA | Flow';
|
||||||
$attr = array(
|
$attr = array(
|
||||||
'cite' => 'URI',
|
'cite' => 'URI',
|
||||||
|
@ -11,7 +11,7 @@ class HTMLPurifier_HTMLModule_Hypertext extends HTMLPurifier_HTMLModule
|
|||||||
|
|
||||||
var $name = 'Hypertext';
|
var $name = 'Hypertext';
|
||||||
|
|
||||||
function HTMLPurifier_HTMLModule_Hypertext() {
|
function setup($config) {
|
||||||
$a =& $this->addElement(
|
$a =& $this->addElement(
|
||||||
'a', true, 'Inline', 'Inline', 'Common',
|
'a', true, 'Inline', 'Inline', 'Common',
|
||||||
array(
|
array(
|
||||||
|
@ -15,7 +15,7 @@ class HTMLPurifier_HTMLModule_Image extends HTMLPurifier_HTMLModule
|
|||||||
|
|
||||||
var $name = 'Image';
|
var $name = 'Image';
|
||||||
|
|
||||||
function HTMLPurifier_HTMLModule_Image() {
|
function setup($config) {
|
||||||
$img =& $this->addElement(
|
$img =& $this->addElement(
|
||||||
'img', true, 'Inline', 'Empty', 'Common',
|
'img', true, 'Inline', 'Empty', 'Common',
|
||||||
array(
|
array(
|
||||||
|
@ -25,7 +25,7 @@ class HTMLPurifier_HTMLModule_Legacy extends HTMLPurifier_HTMLModule
|
|||||||
|
|
||||||
var $name = 'Legacy';
|
var $name = 'Legacy';
|
||||||
|
|
||||||
function HTMLPurifier_HTMLModule_Legacy() {
|
function setup($config) {
|
||||||
|
|
||||||
$this->addElement('basefont', true, 'Inline', 'Empty', false, array(
|
$this->addElement('basefont', true, 'Inline', 'Empty', false, array(
|
||||||
'color' => 'Color',
|
'color' => 'Color',
|
||||||
|
@ -21,7 +21,7 @@ class HTMLPurifier_HTMLModule_List extends HTMLPurifier_HTMLModule
|
|||||||
|
|
||||||
var $content_sets = array('Flow' => 'List');
|
var $content_sets = array('Flow' => 'List');
|
||||||
|
|
||||||
function HTMLPurifier_HTMLModule_List() {
|
function setup($config) {
|
||||||
$this->addElement('ol', true, 'List', 'Required: li', 'Common');
|
$this->addElement('ol', true, 'List', 'Required: li', 'Common');
|
||||||
$this->addElement('ul', true, 'List', 'Required: li', 'Common');
|
$this->addElement('ul', true, 'List', 'Required: li', 'Common');
|
||||||
$this->addElement('dl', true, 'List', 'Required: dt | dd', 'Common');
|
$this->addElement('dl', true, 'List', 'Required: dt | dd', 'Common');
|
||||||
|
@ -12,7 +12,7 @@ class HTMLPurifier_HTMLModule_Object extends HTMLPurifier_HTMLModule
|
|||||||
|
|
||||||
var $name = 'Object';
|
var $name = 'Object';
|
||||||
|
|
||||||
function HTMLPurifier_HTMLModule_Object() {
|
function setup($config) {
|
||||||
|
|
||||||
$this->addElement('object', false, 'Inline', 'Optional: #PCDATA | Flow | param', 'Common',
|
$this->addElement('object', false, 'Inline', 'Optional: #PCDATA | Flow | param', 'Common',
|
||||||
array(
|
array(
|
||||||
|
@ -17,7 +17,7 @@ class HTMLPurifier_HTMLModule_Presentation extends HTMLPurifier_HTMLModule
|
|||||||
|
|
||||||
var $name = 'Presentation';
|
var $name = 'Presentation';
|
||||||
|
|
||||||
function HTMLPurifier_HTMLModule_Presentation() {
|
function setup($config) {
|
||||||
$this->addElement('b', true, 'Inline', 'Inline', 'Common');
|
$this->addElement('b', true, 'Inline', 'Inline', 'Common');
|
||||||
$this->addElement('big', true, 'Inline', 'Inline', 'Common');
|
$this->addElement('big', true, 'Inline', 'Inline', 'Common');
|
||||||
$this->addElement('hr', true, 'Block', 'Empty', 'Common');
|
$this->addElement('hr', true, 'Block', 'Empty', 'Common');
|
||||||
|
@ -11,7 +11,7 @@ class HTMLPurifier_HTMLModule_Ruby extends HTMLPurifier_HTMLModule
|
|||||||
|
|
||||||
var $name = 'Ruby';
|
var $name = 'Ruby';
|
||||||
|
|
||||||
function HTMLPurifier_HTMLModule_Ruby() {
|
function setup($config) {
|
||||||
$this->addElement('ruby', true, 'Inline',
|
$this->addElement('ruby', true, 'Inline',
|
||||||
'Custom: ((rb, (rt | (rp, rt, rp))) | (rbc, rtc, rtc?))',
|
'Custom: ((rb, (rt | (rp, rt, rp))) | (rbc, rtc, rtc?))',
|
||||||
'Common');
|
'Common');
|
||||||
|
@ -32,7 +32,7 @@ class HTMLPurifier_HTMLModule_Scripting extends HTMLPurifier_HTMLModule
|
|||||||
var $elements = array('script', 'noscript');
|
var $elements = array('script', 'noscript');
|
||||||
var $content_sets = array('Block' => 'script | noscript', 'Inline' => 'script | noscript');
|
var $content_sets = array('Block' => 'script | noscript', 'Inline' => 'script | noscript');
|
||||||
|
|
||||||
function HTMLPurifier_HTMLModule_Scripting() {
|
function setup($config) {
|
||||||
// TODO: create custom child-definition for noscript that
|
// TODO: create custom child-definition for noscript that
|
||||||
// auto-wraps stray #PCDATA in a similar manner to
|
// auto-wraps stray #PCDATA in a similar manner to
|
||||||
// blockquote's custom definition (we would use it but
|
// blockquote's custom definition (we would use it but
|
||||||
|
@ -18,7 +18,7 @@ class HTMLPurifier_HTMLModule_StyleAttribute extends HTMLPurifier_HTMLModule
|
|||||||
'Core' => array(0 => array('Style'))
|
'Core' => array(0 => array('Style'))
|
||||||
);
|
);
|
||||||
|
|
||||||
function HTMLPurifier_HTMLModule_StyleAttribute() {
|
function setup($config) {
|
||||||
$this->attr_collections['Style']['style'] = new HTMLPurifier_AttrDef_CSS();
|
$this->attr_collections['Style']['style'] = new HTMLPurifier_AttrDef_CSS();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ class HTMLPurifier_HTMLModule_Tables extends HTMLPurifier_HTMLModule
|
|||||||
|
|
||||||
var $name = 'Tables';
|
var $name = 'Tables';
|
||||||
|
|
||||||
function HTMLPurifier_HTMLModule_Tables() {
|
function setup($config) {
|
||||||
|
|
||||||
$this->addElement('caption', true, false, 'Inline', 'Common');
|
$this->addElement('caption', true, false, 'Inline', 'Common');
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ class HTMLPurifier_HTMLModule_Target extends HTMLPurifier_HTMLModule
|
|||||||
|
|
||||||
var $name = 'Target';
|
var $name = 'Target';
|
||||||
|
|
||||||
function HTMLPurifier_HTMLModule_Target() {
|
function setup($config) {
|
||||||
$elements = array('a');
|
$elements = array('a');
|
||||||
foreach ($elements as $name) {
|
foreach ($elements as $name) {
|
||||||
$e =& $this->addBlankElement($name);
|
$e =& $this->addBlankElement($name);
|
||||||
|
@ -22,7 +22,7 @@ class HTMLPurifier_HTMLModule_Text extends HTMLPurifier_HTMLModule
|
|||||||
'Flow' => 'Heading | Block | Inline'
|
'Flow' => 'Heading | Block | Inline'
|
||||||
);
|
);
|
||||||
|
|
||||||
function HTMLPurifier_HTMLModule_Text() {
|
function setup($config) {
|
||||||
|
|
||||||
// Inline Phrasal -------------------------------------------------
|
// Inline Phrasal -------------------------------------------------
|
||||||
$this->addElement('abbr', true, 'Inline', 'Inline', 'Common');
|
$this->addElement('abbr', true, 'Inline', 'Inline', 'Common');
|
||||||
|
@ -70,7 +70,7 @@ class HTMLPurifier_HTMLModule_Tidy extends HTMLPurifier_HTMLModule
|
|||||||
* @todo Wildcard matching and error reporting when an added or
|
* @todo Wildcard matching and error reporting when an added or
|
||||||
* subtracted fix has no effect.
|
* subtracted fix has no effect.
|
||||||
*/
|
*/
|
||||||
function construct($config) {
|
function setup($config) {
|
||||||
|
|
||||||
// create fixes, initialize fixesForLevel
|
// create fixes, initialize fixesForLevel
|
||||||
$fixes = $this->makeFixes();
|
$fixes = $this->makeFixes();
|
||||||
|
@ -342,13 +342,12 @@ class HTMLPurifier_HTMLModuleManager
|
|||||||
|
|
||||||
foreach ($modules as $module) {
|
foreach ($modules as $module) {
|
||||||
$this->processModule($module);
|
$this->processModule($module);
|
||||||
|
$this->modules[$module]->setup($config);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($this->doctype->tidyModules as $module) {
|
foreach ($this->doctype->tidyModules as $module) {
|
||||||
$this->processModule($module);
|
$this->processModule($module);
|
||||||
if (method_exists($this->modules[$module], 'construct')) {
|
$this->modules[$module]->setup($config);
|
||||||
$this->modules[$module]->construct($config);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// setup lookup table based on all valid modules
|
// setup lookup table based on all valid modules
|
||||||
|
@ -40,7 +40,7 @@ class HTMLPurifier_HTMLModule_TidyTest extends HTMLPurifier_Harness
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function test_construct() {
|
function test_setup() {
|
||||||
|
|
||||||
$i = 0; // counter, helps us isolate expectations
|
$i = 0; // counter, helps us isolate expectations
|
||||||
|
|
||||||
@ -65,7 +65,7 @@ class HTMLPurifier_HTMLModule_TidyTest extends HTMLPurifier_Harness
|
|||||||
'HTML.TidyLevel' => 'none'
|
'HTML.TidyLevel' => 'none'
|
||||||
));
|
));
|
||||||
$module->expectAt($i++, 'populate', array(array()));
|
$module->expectAt($i++, 'populate', array(array()));
|
||||||
$module->construct($config);
|
$module->setup($config);
|
||||||
|
|
||||||
// basic levels
|
// basic levels
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ class HTMLPurifier_HTMLModule_TidyTest extends HTMLPurifier_Harness
|
|||||||
'light-fix-1' => $lf1,
|
'light-fix-1' => $lf1,
|
||||||
'light-fix-2' => $lf2
|
'light-fix-2' => $lf2
|
||||||
)));
|
)));
|
||||||
$module->construct($config);
|
$module->setup($config);
|
||||||
|
|
||||||
$config = HTMLPurifier_Config::create(array(
|
$config = HTMLPurifier_Config::create(array(
|
||||||
'HTML.TidyLevel' => 'heavy'
|
'HTML.TidyLevel' => 'heavy'
|
||||||
@ -89,7 +89,7 @@ class HTMLPurifier_HTMLModule_TidyTest extends HTMLPurifier_Harness
|
|||||||
'heavy-fix-1' => $hf1,
|
'heavy-fix-1' => $hf1,
|
||||||
'heavy-fix-2' => $hf2
|
'heavy-fix-2' => $hf2
|
||||||
)));
|
)));
|
||||||
$module->construct($config);
|
$module->setup($config);
|
||||||
|
|
||||||
// fine grained tuning
|
// fine grained tuning
|
||||||
|
|
||||||
@ -101,7 +101,7 @@ class HTMLPurifier_HTMLModule_TidyTest extends HTMLPurifier_Harness
|
|||||||
'light-fix-1' => $lf1,
|
'light-fix-1' => $lf1,
|
||||||
'medium-fix-1' => $mf1
|
'medium-fix-1' => $mf1
|
||||||
)));
|
)));
|
||||||
$module->construct($config);
|
$module->setup($config);
|
||||||
|
|
||||||
$config = HTMLPurifier_Config::create(array(
|
$config = HTMLPurifier_Config::create(array(
|
||||||
'HTML.TidyLevel' => 'medium',
|
'HTML.TidyLevel' => 'medium',
|
||||||
@ -111,7 +111,7 @@ class HTMLPurifier_HTMLModule_TidyTest extends HTMLPurifier_Harness
|
|||||||
'light-fix-2' => $lf2,
|
'light-fix-2' => $lf2,
|
||||||
'medium-fix-2' => $mf2
|
'medium-fix-2' => $mf2
|
||||||
)));
|
)));
|
||||||
$module->construct($config);
|
$module->setup($config);
|
||||||
|
|
||||||
// done
|
// done
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user