From 51cbb7264917e395d24aa326bd3ef49cb1bdbde4 Mon Sep 17 00:00:00 2001 From: "Edward Z. Yang" Date: Sun, 30 Mar 2008 21:44:16 +0000 Subject: [PATCH] [3.1.0] Landed modified patch by Braden Anderson for %CSS.AllowedProperties - Fix broken ConfigSchema build, as well as broken aliases - Remove another advisory property from runtime ConfigSchema classes - Reorder flush script to more accurately reflect dependencies - Remove some aliases from unit tests git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@1635 48356398-32a2-884e-a903-53898d9a118a --- NEWS | 6 ++++- TODO | 4 ++++ library/HTMLPurifier/CSSDefinition.php | 28 ++++++++++++++++++++++ library/HTMLPurifier/ConfigDef/Directive.php | 6 ----- library/HTMLPurifier/ConfigSchema.php | 1 - .../ConfigSchema/Builder/ConfigSchema.php | 9 +++---- library/HTMLPurifier/ConfigSchema/schema.ser | 2 +- .../ConfigSchema/schema/CSS.AllowedProperties.txt | 17 +++++++++++++ .../schema/Filter.ExtractStyleBlocksScope.txt | 2 +- library/HTMLPurifier/HTMLDefinition.php | 2 ++ maintenance/flush.php | 2 +- tests/HTMLPurifier/DefinitionCacheFactoryTest.php | 6 ++--- tests/HTMLPurifierTest.php | 17 +++++++++++++ 13 files changed, 84 insertions(+), 18 deletions(-) rewrite library/HTMLPurifier/ConfigSchema/schema.ser (97%) create mode 100644 library/HTMLPurifier/ConfigSchema/schema/CSS.AllowedProperties.txt diff --git a/NEWS b/NEWS index 8333734c..7b835ea3 100644 --- a/NEWS +++ b/NEWS @@ -36,6 +36,8 @@ NEWS ( CHANGELOG and HISTORY ) HTMLPurifier ! HTML Purifier now has its own Exception hierarchy under HTMLPurifier_Exception. Developer error (not enduser error) can cause these to be triggered. ! Experimental kses() wrapper introduced with HTMLPurifier.kses.php +! Finally %CSS.AllowedProperties for tweaking allowed CSS properties without + mucking around with HTMLPurifier_CSSDefinition - Autoclose now operates iteratively, i.e.
now has both span tags closed. - Various HTMLPurifier_Config convenience functions now accept another parameter @@ -75,7 +77,9 @@ NEWS ( CHANGELOG and HISTORY ) HTMLPurifier . HTMLPurifier_ConfigSchema->validate() deprecated in favor of HTMLPurifier_VarParser->parse() . Integers auto-cast into float type by VarParser. -. HTMLPURIFIER_STRICT +. HTMLPURIFIER_STRICT removed; no validation is performed on runtime, only + during cache generation +. Reordered script calls in maintenance/flush.php 3.0.0, released 2008-01-06 # HTML Purifier is PHP 5 only! The 2.1.x branch will be maintained diff --git a/TODO b/TODO index 6aa5beb2..097a7cfb 100644 --- a/TODO +++ b/TODO @@ -27,6 +27,10 @@ DOCUMENTATION IMPORTANT FEATURES - Get everything into configuration objects (filters, I'm looking at you) - Factor out command line parser into its own class, and unit test it + - Verbose mode for webtester that includes transcript from command line + - Command line maintenance scripts must complain with exit(1) if there are + fatal errors + - Emit notices when aliases are used (allow muting these errors) CONFIGDOC - Properly integrate new ConfigSchema system into configdoc. DESCRIPTIONS diff --git a/library/HTMLPurifier/CSSDefinition.php b/library/HTMLPurifier/CSSDefinition.php index f66ed421..7740e469 100644 --- a/library/HTMLPurifier/CSSDefinition.php +++ b/library/HTMLPurifier/CSSDefinition.php @@ -212,6 +212,7 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition $this->info[$k] = new HTMLPurifier_AttrDef_CSS_ImportantDecorator($v, $allow_important); } + $this->setupConfigStuff($config); } protected function doSetupProprietary($config) { @@ -245,5 +246,32 @@ class HTMLPurifier_CSSDefinition extends HTMLPurifier_Definition )); } + + /** + * Performs extra config-based processing. Based off of + * HTMLPurifier_HTMLDefinition. + * @todo Refactor duplicate elements into common class (probably using + * composition, not inheritance). + */ + protected function setupConfigStuff($config) { + + // setup allowed elements + $support = "(for information on implementing this, see the ". + "support forums) "; + $allowed_attributes = $config->get('CSS', 'AllowedProperties'); + if ($allowed_attributes !== null) { + foreach ($this->info as $name => $d) { + if(!isset($allowed_attributes[$name])) unset($this->info[$name]); + unset($allowed_attributes[$name]); + } + // emit errors + foreach ($allowed_attributes as $name => $d) { + // :TODO: Is this htmlspecialchars() call really necessary? + $name = htmlspecialchars($name); + trigger_error("Style attribute '$name' is not supported $support", E_USER_WARNING); + } + } + + } } diff --git a/library/HTMLPurifier/ConfigDef/Directive.php b/library/HTMLPurifier/ConfigDef/Directive.php index f14563c5..cb132910 100644 --- a/library/HTMLPurifier/ConfigDef/Directive.php +++ b/library/HTMLPurifier/ConfigDef/Directive.php @@ -51,11 +51,5 @@ class HTMLPurifier_ConfigDef_Directive extends HTMLPurifier_ConfigDef */ public $aliases = array(); - /** - * Advisory list of directive aliases, i.e. other directives that - * redirect here - */ - public $directiveAliases = array(); - } diff --git a/library/HTMLPurifier/ConfigSchema.php b/library/HTMLPurifier/ConfigSchema.php index 2e742d85..d5aa7e80 100644 --- a/library/HTMLPurifier/ConfigSchema.php +++ b/library/HTMLPurifier/ConfigSchema.php @@ -118,7 +118,6 @@ class HTMLPurifier_ConfigSchema { */ public function addAlias($namespace, $name, $new_namespace, $new_name) { $this->info[$namespace][$name] = new HTMLPurifier_ConfigDef_DirectiveAlias($new_namespace, $new_name); - $this->info[$new_namespace][$new_name]->directiveAliases[] = "$namespace.$name"; } // DEPRECATED METHODS diff --git a/library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php b/library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php index 40cc7b72..69b71387 100644 --- a/library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php +++ b/library/HTMLPurifier/ConfigSchema/Builder/ConfigSchema.php @@ -9,10 +9,10 @@ class HTMLPurifier_ConfigSchema_Builder_ConfigSchema public function build($interchange) { $schema = new HTMLPurifier_ConfigSchema(); - foreach ($this->namespaces as $n) { + foreach ($interchange->namespaces as $n) { $schema->addNamespace($n->namespace); } - foreach ($this->directives as $d) { + foreach ($interchange->directives as $d) { $schema->add( $d->id->namespace, $d->id->directive, @@ -29,8 +29,8 @@ class HTMLPurifier_ConfigSchema_Builder_ConfigSchema } foreach ($d->aliases as $alias) { $schema->addAlias( - $alias->id->namespace, - $alias->id->directive, + $alias->namespace, + $alias->directive, $d->id->namespace, $d->id->directive ); @@ -43,6 +43,7 @@ class HTMLPurifier_ConfigSchema_Builder_ConfigSchema ); } } + return $schema; } } diff --git a/library/HTMLPurifier/ConfigSchema/schema.ser b/library/HTMLPurifier/ConfigSchema/schema.ser dissimilarity index 97% index e027f34d..a435b019 100644 --- a/library/HTMLPurifier/ConfigSchema/schema.ser +++ b/library/HTMLPurifier/ConfigSchema/schema.ser @@ -1 +1 @@ -O:25:"HTMLPurifier_ConfigSchema":5:{s:8:"defaults";a:11:{s:4:"Attr";a:11:{s:19:"AllowedFrameTargets";a:0:{}s:10:"AllowedRel";a:0:{}s:10:"AllowedRev";a:0:{}s:19:"DefaultInvalidImage";s:0:"";s:22:"DefaultInvalidImageAlt";s:13:"Invalid image";s:14:"DefaultTextDir";s:3:"ltr";s:8:"EnableID";b:0;s:11:"IDBlacklist";a:0:{}s:17:"IDBlacklistRegexp";N;s:8:"IDPrefix";s:0:"";s:13:"IDPrefixLocal";s:0:"";}s:10:"AutoFormat";a:4:{s:13:"AutoParagraph";b:0;s:6:"Custom";a:0:{}s:7:"Linkify";b:0;s:15:"PurifierLinkify";b:0;}s:15:"AutoFormatParam";a:1:{s:21:"PurifierLinkifyDocURL";s:3:"#%s";}s:3:"CSS";a:4:{s:14:"AllowImportant";b:0;s:11:"AllowTricky";b:0;s:13:"DefinitionRev";i:1;s:11:"Proprietary";b:0;}s:5:"Cache";a:2:{s:14:"DefinitionImpl";s:10:"Serializer";s:14:"SerializerPath";N;}s:4:"Core";a:15:{s:17:"AggressivelyFixLt";b:0;s:13:"CollectErrors";b:0;s:13:"ColorKeywords";a:17:{s:6:"maroon";s:7:"#800000";s:3:"red";s:7:"#FF0000";s:6:"orange";s:7:"#FFA500";s:6:"yellow";s:7:"#FFFF00";s:5:"olive";s:7:"#808000";s:6:"purple";s:7:"#800080";s:7:"fuchsia";s:7:"#FF00FF";s:5:"white";s:7:"#FFFFFF";s:4:"lime";s:7:"#00FF00";s:5:"green";s:7:"#008000";s:4:"navy";s:7:"#000080";s:4:"blue";s:7:"#0000FF";s:4:"aqua";s:7:"#00FFFF";s:4:"teal";s:7:"#008080";s:5:"black";s:7:"#000000";s:6:"silver";s:7:"#C0C0C0";s:4:"gray";s:7:"#808080";}s:25:"ConvertDocumentToFragment";b:1;s:31:"DirectLexLineNumberSyncInterval";i:0;s:8:"Encoding";s:5:"utf-8";s:21:"EscapeInvalidChildren";b:0;s:17:"EscapeInvalidTags";b:0;s:24:"EscapeNonASCIICharacters";b:0;s:14:"HiddenElements";a:2:{s:6:"script";b:1;s:5:"style";b:1;}s:8:"Language";s:2:"en";s:9:"LexerImpl";N;s:19:"MaintainLineNumbers";N;s:16:"RemoveInvalidImg";b:1;s:20:"RemoveScriptContents";N;}s:6:"Filter";a:2:{s:26:"ExtractStyleBlocksEscaping";b:1;s:23:"ExtractStyleBlocksScope";N;}s:4:"HTML";a:18:{s:7:"Allowed";N;s:17:"AllowedAttributes";N;s:15:"AllowedElements";N;s:14:"AllowedModules";N;s:12:"BlockWrapper";s:1:"p";s:11:"CoreModules";a:7:{s:9:"Structure";b:1;s:4:"Text";b:1;s:9:"Hypertext";b:1;s:4:"List";b:1;s:22:"NonXMLCommonAttributes";b:1;s:19:"XMLCommonAttributes";b:1;s:16:"CommonAttributes";b:1;}s:13:"CustomDoctype";N;s:12:"DefinitionID";N;s:13:"DefinitionRev";i:1;s:7:"Doctype";s:0:"";s:6:"Parent";s:3:"div";s:11:"Proprietary";b:0;s:6:"Strict";b:0;s:7:"TidyAdd";a:0:{}s:9:"TidyLevel";s:6:"medium";s:10:"TidyRemove";a:0:{}s:7:"Trusted";b:0;s:5:"XHTML";b:1;}s:6:"Output";a:3:{s:21:"CommentScriptContents";b:1;s:7:"Newline";N;s:10:"TidyFormat";b:0;}s:4:"Test";a:1:{s:12:"ForceNoIconv";b:0;}s:3:"URI";a:14:{s:14:"AllowedSchemes";a:6:{s:4:"http";b:1;s:5:"https";b:1;s:6:"mailto";b:1;s:3:"ftp";b:1;s:4:"nntp";b:1;s:4:"news";b:1;}s:4:"Base";N;s:13:"DefaultScheme";s:4:"http";s:12:"DefinitionID";N;s:13:"DefinitionRev";i:1;s:7:"Disable";b:0;s:15:"DisableExternal";b:0;s:24:"DisableExternalResources";b:0;s:16:"DisableResources";b:0;s:4:"Host";N;s:13:"HostBlacklist";a:0:{}s:12:"MakeAbsolute";b:0;s:5:"Munge";N;s:22:"OverrideAllowedSchemes";b:1;}}s:4:"info";a:11:{s:4:"Attr";a:12:{s:19:"AllowedFrameTargets";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:10:"AllowedRel";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:10:"AllowedRev";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:19:"DefaultInvalidImage";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:22:"DefaultInvalidImageAlt";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:14:"DefaultTextDir";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";a:2:{s:3:"ltr";b:1;s:3:"rtl";b:1;}s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:8:"EnableID";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:1:{i:0;s:17:"HTML.EnableAttrID";}}s:11:"IDBlacklist";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"list";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:17:"IDBlacklistRegexp";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:8:"IDPrefix";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:13:"IDPrefixLocal";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:10:"DisableURI";O:37:"HTMLPurifier_ConfigDef_DirectiveAlias":3:{s:5:"class";s:5:"alias";s:9:"namespace";s:3:"URI";s:4:"name";s:7:"Disable";}}s:10:"AutoFormat";a:4:{s:13:"AutoParagraph";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:6:"Custom";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"list";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:7:"Linkify";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:15:"PurifierLinkify";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}}s:15:"AutoFormatParam";a:1:{s:21:"PurifierLinkifyDocURL";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}}s:3:"CSS";a:4:{s:14:"AllowImportant";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:11:"AllowTricky";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:13:"DefinitionRev";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:3:"int";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:11:"Proprietary";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}}s:5:"Cache";a:2:{s:14:"DefinitionImpl";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:1:{i:0;s:20:"Core.DefinitionCache";}}s:14:"SerializerPath";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}}s:4:"Core";a:20:{s:15:"DefinitionCache";O:37:"HTMLPurifier_ConfigDef_DirectiveAlias":3:{s:5:"class";s:5:"alias";s:9:"namespace";s:5:"Cache";s:4:"name";s:14:"DefinitionImpl";}s:17:"AggressivelyFixLt";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:13:"CollectErrors";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:13:"ColorKeywords";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"hash";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:25:"ConvertDocumentToFragment";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:1:{i:0;s:24:"Core.AcceptFullDocuments";}}s:19:"AcceptFullDocuments";O:37:"HTMLPurifier_ConfigDef_DirectiveAlias":3:{s:5:"class";s:5:"alias";s:9:"namespace";s:4:"Core";s:4:"name";s:25:"ConvertDocumentToFragment";}s:31:"DirectLexLineNumberSyncInterval";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:3:"int";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:8:"Encoding";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:7:"istring";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:21:"EscapeInvalidChildren";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:17:"EscapeInvalidTags";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:24:"EscapeNonASCIICharacters";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:14:"HiddenElements";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:8:"Language";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:9:"LexerImpl";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:5:"mixed";s:11:"description";N;s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:19:"MaintainLineNumbers";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:16:"RemoveInvalidImg";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:20:"RemoveScriptContents";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:5:"XHTML";O:37:"HTMLPurifier_ConfigDef_DirectiveAlias":3:{s:5:"class";s:5:"alias";s:9:"namespace";s:4:"HTML";s:4:"name";s:5:"XHTML";}s:21:"CommentScriptContents";O:37:"HTMLPurifier_ConfigDef_DirectiveAlias":3:{s:5:"class";s:5:"alias";s:9:"namespace";s:6:"Output";s:4:"name";s:21:"CommentScriptContents";}s:10:"TidyFormat";O:37:"HTMLPurifier_ConfigDef_DirectiveAlias":3:{s:5:"class";s:5:"alias";s:9:"namespace";s:6:"Output";s:4:"name";s:10:"TidyFormat";}}s:6:"Filter";a:2:{s:26:"ExtractStyleBlocksEscaping";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:23:"ExtractStyleBlocksScope";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}}s:4:"HTML";a:19:{s:12:"EnableAttrID";O:37:"HTMLPurifier_ConfigDef_DirectiveAlias":3:{s:5:"class";s:5:"alias";s:9:"namespace";s:4:"Attr";s:4:"name";s:8:"EnableID";}s:7:"Allowed";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:5:"itext";s:11:"description";N;s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:17:"AllowedAttributes";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:11:"description";N;s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:15:"AllowedElements";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:11:"description";N;s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:14:"AllowedModules";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:11:"description";N;s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:12:"BlockWrapper";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:11:"CoreModules";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:13:"CustomDoctype";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:12:"DefinitionID";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:13:"DefinitionRev";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:3:"int";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:7:"Doctype";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";a:6:{s:0:"";b:1;s:22:"HTML 4.01 Transitional";b:1;s:16:"HTML 4.01 Strict";b:1;s:22:"XHTML 1.0 Transitional";b:1;s:16:"XHTML 1.0 Strict";b:1;s:9:"XHTML 1.1";b:1;}s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:6:"Parent";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:11:"Proprietary";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:6:"Strict";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:7:"TidyAdd";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:9:"TidyLevel";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";a:4:{s:4:"none";b:1;s:5:"light";b:1;s:6:"medium";b:1;s:5:"heavy";b:1;}s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:10:"TidyRemove";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:7:"Trusted";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:5:"XHTML";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:1:{i:0;s:10:"Core.XHTML";}}}s:6:"Output";a:3:{s:21:"CommentScriptContents";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:1:{i:0;s:26:"Core.CommentScriptContents";}}s:7:"Newline";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:10:"TidyFormat";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:1:{i:0;s:15:"Core.TidyFormat";}}}s:4:"Test";a:1:{s:12:"ForceNoIconv";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}}s:3:"URI";a:14:{s:14:"AllowedSchemes";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:4:"Base";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:13:"DefaultScheme";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:12:"DefinitionID";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:13:"DefinitionRev";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:3:"int";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:7:"Disable";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:1:{i:0;s:15:"Attr.DisableURI";}}s:15:"DisableExternal";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:24:"DisableExternalResources";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:16:"DisableResources";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:4:"Host";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:13:"HostBlacklist";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"list";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:12:"MakeAbsolute";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:5:"Munge";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:11:"description";N;s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}s:22:"OverrideAllowedSchemes";O:32:"HTMLPurifier_ConfigDef_Directive":7:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:11:"description";N;s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}s:16:"directiveAliases";a:0:{}}}}s:14:"info_namespace";a:11:{s:4:"Attr";O:32:"HTMLPurifier_ConfigDef_Namespace":2:{s:5:"class";s:9:"namespace";s:11:"description";s:40:"Features regarding attribute validation.";}s:10:"AutoFormat";O:32:"HTMLPurifier_ConfigDef_Namespace":2:{s:5:"class";s:9:"namespace";s:11:"description";s:97:"Configuration for activating auto-formatting functionality (also known as Injectors)";}s:15:"AutoFormatParam";O:32:"HTMLPurifier_ConfigDef_Namespace":2:{s:5:"class";s:9:"namespace";s:11:"description";s:59:"Configuration for customizing auto-formatting functionality";}s:3:"CSS";O:32:"HTMLPurifier_ConfigDef_Namespace":2:{s:5:"class";s:9:"namespace";s:11:"description";s:36:"Configuration regarding allowed CSS.";}s:5:"Cache";O:32:"HTMLPurifier_ConfigDef_Namespace":2:{s:5:"class";s:9:"namespace";s:11:"description";s:57:"Configuration for DefinitionCache and related subclasses.";}s:4:"Core";O:32:"HTMLPurifier_ConfigDef_Namespace":2:{s:5:"class";s:9:"namespace";s:11:"description";s:40:"Core features that are always available.";}s:6:"Filter";O:32:"HTMLPurifier_ConfigDef_Namespace":2:{s:5:"class";s:9:"namespace";s:11:"description";s:25:"Configuration for filters";}s:4:"HTML";O:32:"HTMLPurifier_ConfigDef_Namespace":2:{s:5:"class";s:9:"namespace";s:11:"description";s:37:"Configuration regarding allowed HTML.";}s:6:"Output";O:32:"HTMLPurifier_ConfigDef_Namespace":2:{s:5:"class";s:9:"namespace";s:11:"description";s:52:"Configuration relating to the generation of (X)HTML.";}s:4:"Test";O:32:"HTMLPurifier_ConfigDef_Namespace":2:{s:5:"class";s:9:"namespace";s:11:"description";s:51:"Developer testing configuration for our unit tests.";}s:3:"URI";O:32:"HTMLPurifier_ConfigDef_Namespace":2:{s:5:"class";s:9:"namespace";s:11:"description";s:48:"Features regarding Uniform Resource Identifiers.";}}s:9:"*parser";O:31:"HTMLPurifier_VarParser_Flexible":0:{}s:5:"types";a:11:{s:6:"string";s:6:"String";s:7:"istring";s:23:"Case-insensitive string";s:4:"text";s:4:"Text";s:5:"itext";s:21:"Case-insensitive text";s:3:"int";s:7:"Integer";s:5:"float";s:5:"Float";s:4:"bool";s:7:"Boolean";s:6:"lookup";s:12:"Lookup array";s:4:"list";s:10:"Array list";s:4:"hash";s:17:"Associative array";s:5:"mixed";s:5:"Mixed";}} \ No newline at end of file +O:25:"HTMLPurifier_ConfigSchema":3:{s:8:"defaults";a:11:{s:4:"Attr";a:11:{s:19:"AllowedFrameTargets";a:0:{}s:10:"AllowedRel";a:0:{}s:10:"AllowedRev";a:0:{}s:19:"DefaultInvalidImage";s:0:"";s:22:"DefaultInvalidImageAlt";s:13:"Invalid image";s:14:"DefaultTextDir";s:3:"ltr";s:8:"EnableID";b:0;s:11:"IDBlacklist";a:0:{}s:17:"IDBlacklistRegexp";N;s:8:"IDPrefix";s:0:"";s:13:"IDPrefixLocal";s:0:"";}s:10:"AutoFormat";a:4:{s:13:"AutoParagraph";b:0;s:6:"Custom";a:0:{}s:7:"Linkify";b:0;s:15:"PurifierLinkify";b:0;}s:15:"AutoFormatParam";a:1:{s:21:"PurifierLinkifyDocURL";s:3:"#%s";}s:3:"CSS";a:5:{s:14:"AllowImportant";b:0;s:11:"AllowTricky";b:0;s:17:"AllowedProperties";N;s:13:"DefinitionRev";i:1;s:11:"Proprietary";b:0;}s:5:"Cache";a:2:{s:14:"DefinitionImpl";s:10:"Serializer";s:14:"SerializerPath";N;}s:4:"Core";a:15:{s:17:"AggressivelyFixLt";b:0;s:13:"CollectErrors";b:0;s:13:"ColorKeywords";a:17:{s:6:"maroon";s:7:"#800000";s:3:"red";s:7:"#FF0000";s:6:"orange";s:7:"#FFA500";s:6:"yellow";s:7:"#FFFF00";s:5:"olive";s:7:"#808000";s:6:"purple";s:7:"#800080";s:7:"fuchsia";s:7:"#FF00FF";s:5:"white";s:7:"#FFFFFF";s:4:"lime";s:7:"#00FF00";s:5:"green";s:7:"#008000";s:4:"navy";s:7:"#000080";s:4:"blue";s:7:"#0000FF";s:4:"aqua";s:7:"#00FFFF";s:4:"teal";s:7:"#008080";s:5:"black";s:7:"#000000";s:6:"silver";s:7:"#C0C0C0";s:4:"gray";s:7:"#808080";}s:25:"ConvertDocumentToFragment";b:1;s:31:"DirectLexLineNumberSyncInterval";i:0;s:8:"Encoding";s:5:"utf-8";s:21:"EscapeInvalidChildren";b:0;s:17:"EscapeInvalidTags";b:0;s:24:"EscapeNonASCIICharacters";b:0;s:14:"HiddenElements";a:2:{s:6:"script";b:1;s:5:"style";b:1;}s:8:"Language";s:2:"en";s:9:"LexerImpl";N;s:19:"MaintainLineNumbers";N;s:16:"RemoveInvalidImg";b:1;s:20:"RemoveScriptContents";N;}s:6:"Filter";a:2:{s:26:"ExtractStyleBlocksEscaping";b:1;s:23:"ExtractStyleBlocksScope";N;}s:4:"HTML";a:18:{s:7:"Allowed";N;s:17:"AllowedAttributes";N;s:15:"AllowedElements";N;s:14:"AllowedModules";N;s:12:"BlockWrapper";s:1:"p";s:11:"CoreModules";a:7:{s:9:"Structure";b:1;s:4:"Text";b:1;s:9:"Hypertext";b:1;s:4:"List";b:1;s:22:"NonXMLCommonAttributes";b:1;s:19:"XMLCommonAttributes";b:1;s:16:"CommonAttributes";b:1;}s:13:"CustomDoctype";N;s:12:"DefinitionID";N;s:13:"DefinitionRev";i:1;s:7:"Doctype";s:0:"";s:6:"Parent";s:3:"div";s:11:"Proprietary";b:0;s:6:"Strict";b:0;s:7:"TidyAdd";a:0:{}s:9:"TidyLevel";s:6:"medium";s:10:"TidyRemove";a:0:{}s:7:"Trusted";b:0;s:5:"XHTML";b:1;}s:6:"Output";a:3:{s:21:"CommentScriptContents";b:1;s:7:"Newline";N;s:10:"TidyFormat";b:0;}s:4:"Test";a:1:{s:12:"ForceNoIconv";b:0;}s:3:"URI";a:14:{s:14:"AllowedSchemes";a:6:{s:4:"http";b:1;s:5:"https";b:1;s:6:"mailto";b:1;s:3:"ftp";b:1;s:4:"nntp";b:1;s:4:"news";b:1;}s:4:"Base";N;s:13:"DefaultScheme";s:4:"http";s:12:"DefinitionID";N;s:13:"DefinitionRev";i:1;s:7:"Disable";b:0;s:15:"DisableExternal";b:0;s:24:"DisableExternalResources";b:0;s:16:"DisableResources";b:0;s:4:"Host";N;s:13:"HostBlacklist";a:0:{}s:12:"MakeAbsolute";b:0;s:5:"Munge";N;s:22:"OverrideAllowedSchemes";b:1;}}s:4:"info";a:11:{s:4:"Attr";a:12:{s:19:"AllowedFrameTargets";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:10:"AllowedRel";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:10:"AllowedRev";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:19:"DefaultInvalidImage";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:22:"DefaultInvalidImageAlt";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:14:"DefaultTextDir";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:0;s:7:"allowed";a:2:{s:3:"ltr";b:1;s:3:"rtl";b:1;}s:7:"aliases";a:0:{}}s:8:"EnableID";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:11:"IDBlacklist";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"list";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:17:"IDBlacklistRegexp";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:8:"IDPrefix";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:13:"IDPrefixLocal";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:10:"DisableURI";O:37:"HTMLPurifier_ConfigDef_DirectiveAlias":3:{s:5:"class";s:5:"alias";s:9:"namespace";s:3:"URI";s:4:"name";s:7:"Disable";}}s:10:"AutoFormat";a:4:{s:13:"AutoParagraph";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:6:"Custom";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"list";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:7:"Linkify";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:15:"PurifierLinkify";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}}s:15:"AutoFormatParam";a:1:{s:21:"PurifierLinkifyDocURL";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}}s:3:"CSS";a:5:{s:14:"AllowImportant";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:11:"AllowTricky";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:17:"AllowedProperties";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:13:"DefinitionRev";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:3:"int";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:11:"Proprietary";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}}s:5:"Cache";a:2:{s:14:"DefinitionImpl";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:14:"SerializerPath";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}}s:4:"Core";a:20:{s:15:"DefinitionCache";O:37:"HTMLPurifier_ConfigDef_DirectiveAlias":3:{s:5:"class";s:5:"alias";s:9:"namespace";s:5:"Cache";s:4:"name";s:14:"DefinitionImpl";}s:17:"AggressivelyFixLt";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:13:"CollectErrors";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:13:"ColorKeywords";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"hash";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:25:"ConvertDocumentToFragment";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:19:"AcceptFullDocuments";O:37:"HTMLPurifier_ConfigDef_DirectiveAlias":3:{s:5:"class";s:5:"alias";s:9:"namespace";s:4:"Core";s:4:"name";s:25:"ConvertDocumentToFragment";}s:31:"DirectLexLineNumberSyncInterval";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:3:"int";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:8:"Encoding";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:7:"istring";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:21:"EscapeInvalidChildren";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:17:"EscapeInvalidTags";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:24:"EscapeNonASCIICharacters";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:14:"HiddenElements";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:8:"Language";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:9:"LexerImpl";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:5:"mixed";s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:19:"MaintainLineNumbers";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:16:"RemoveInvalidImg";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:20:"RemoveScriptContents";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:5:"XHTML";O:37:"HTMLPurifier_ConfigDef_DirectiveAlias":3:{s:5:"class";s:5:"alias";s:9:"namespace";s:4:"HTML";s:4:"name";s:5:"XHTML";}s:21:"CommentScriptContents";O:37:"HTMLPurifier_ConfigDef_DirectiveAlias":3:{s:5:"class";s:5:"alias";s:9:"namespace";s:6:"Output";s:4:"name";s:21:"CommentScriptContents";}s:10:"TidyFormat";O:37:"HTMLPurifier_ConfigDef_DirectiveAlias":3:{s:5:"class";s:5:"alias";s:9:"namespace";s:6:"Output";s:4:"name";s:10:"TidyFormat";}}s:6:"Filter";a:2:{s:26:"ExtractStyleBlocksEscaping";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:23:"ExtractStyleBlocksScope";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}}s:4:"HTML";a:19:{s:12:"EnableAttrID";O:37:"HTMLPurifier_ConfigDef_DirectiveAlias":3:{s:5:"class";s:5:"alias";s:9:"namespace";s:4:"Attr";s:4:"name";s:8:"EnableID";}s:7:"Allowed";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:5:"itext";s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:17:"AllowedAttributes";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:15:"AllowedElements";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:14:"AllowedModules";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:12:"BlockWrapper";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:11:"CoreModules";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:13:"CustomDoctype";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:12:"DefinitionID";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:13:"DefinitionRev";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:3:"int";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:7:"Doctype";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:0;s:7:"allowed";a:6:{s:0:"";b:1;s:22:"HTML 4.01 Transitional";b:1;s:16:"HTML 4.01 Strict";b:1;s:22:"XHTML 1.0 Transitional";b:1;s:16:"XHTML 1.0 Strict";b:1;s:9:"XHTML 1.1";b:1;}s:7:"aliases";a:0:{}}s:6:"Parent";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:11:"Proprietary";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:6:"Strict";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:7:"TidyAdd";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:9:"TidyLevel";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:0;s:7:"allowed";a:4:{s:4:"none";b:1;s:5:"light";b:1;s:6:"medium";b:1;s:5:"heavy";b:1;}s:7:"aliases";a:0:{}}s:10:"TidyRemove";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:7:"Trusted";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:5:"XHTML";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}}s:6:"Output";a:3:{s:21:"CommentScriptContents";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:7:"Newline";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:10:"TidyFormat";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}}s:4:"Test";a:1:{s:12:"ForceNoIconv";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}}s:3:"URI";a:14:{s:14:"AllowedSchemes";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"lookup";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:4:"Base";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:13:"DefaultScheme";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:12:"DefinitionID";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:13:"DefinitionRev";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:3:"int";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:7:"Disable";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:15:"DisableExternal";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:24:"DisableExternalResources";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:16:"DisableResources";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:4:"Host";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:13:"HostBlacklist";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"list";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:12:"MakeAbsolute";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:5:"Munge";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:6:"string";s:10:"allow_null";b:1;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}s:22:"OverrideAllowedSchemes";O:32:"HTMLPurifier_ConfigDef_Directive":5:{s:5:"class";s:9:"directive";s:4:"type";s:4:"bool";s:10:"allow_null";b:0;s:7:"allowed";b:1;s:7:"aliases";a:0:{}}}}s:9:"*parser";O:31:"HTMLPurifier_VarParser_Flexible":0:{}} \ No newline at end of file diff --git a/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowedProperties.txt b/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowedProperties.txt new file mode 100644 index 00000000..b0668974 --- /dev/null +++ b/library/HTMLPurifier/ConfigSchema/schema/CSS.AllowedProperties.txt @@ -0,0 +1,17 @@ +CSS.AllowedProperties +TYPE: lookup/null +VERSION: 3.1.0 +DEFAULT: NULL +--DESCRIPTION-- + +

+ If HTML Purifier's style attributes set is unsatisfactory for your needs, + you can overload it with your own list of tags to allow. Note that this + method is subtractive: it does its job by taking away from HTML Purifier + usual feature set, so you cannot add an attribute that HTML Purifier never + supported in the first place. +

+

+ Warning: If another directive conflicts with the + elements here, that directive will win and override. +

diff --git a/library/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocksScope.txt b/library/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocksScope.txt index a7766a23..2e410d35 100644 --- a/library/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocksScope.txt +++ b/library/HTMLPurifier/ConfigSchema/schema/Filter.ExtractStyleBlocksScope.txt @@ -1,5 +1,5 @@ Filter.ExtractStyleBlocksScope -TYPE: string +TYPE: string/null VERSION: 3.0.0 DEFAULT: NULL --DESCRIPTION-- diff --git a/library/HTMLPurifier/HTMLDefinition.php b/library/HTMLPurifier/HTMLDefinition.php index 360bc4be..a327dabb 100644 --- a/library/HTMLPurifier/HTMLDefinition.php +++ b/library/HTMLPurifier/HTMLDefinition.php @@ -252,6 +252,7 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition } // emit errors foreach ($allowed_elements as $element => $d) { + // :TODO: Is this htmlspecialchars() call really necessary? $element = htmlspecialchars($element); trigger_error("Element '$element' is not supported $support", E_USER_WARNING); } @@ -283,6 +284,7 @@ class HTMLPurifier_HTMLDefinition extends HTMLPurifier_Definition // emit errors foreach ($allowed_attributes_mutable as $elattr => $d) { list($element, $attribute) = explode('.', $elattr); + // :TODO: Is this htmlspecialchars() call really necessary? $element = htmlspecialchars($element); $attribute = htmlspecialchars($attribute); if ($element == '*') { diff --git a/maintenance/flush.php b/maintenance/flush.php index 914be8bd..0d92f13f 100644 --- a/maintenance/flush.php +++ b/maintenance/flush.php @@ -18,6 +18,6 @@ function e($cmd) { } e('php generate-includes.php'); -e('php flush-definition-cache.php'); e('php generate-schema-cache.php'); +e('php flush-definition-cache.php'); e('php generate-standalone.php'); diff --git a/tests/HTMLPurifier/DefinitionCacheFactoryTest.php b/tests/HTMLPurifier/DefinitionCacheFactoryTest.php index a2441fc4..c1be990a 100644 --- a/tests/HTMLPurifier/DefinitionCacheFactoryTest.php +++ b/tests/HTMLPurifier/DefinitionCacheFactoryTest.php @@ -45,21 +45,21 @@ class HTMLPurifier_DefinitionCacheFactoryTest extends HTMLPurifier_Harness } function test_create_invalid() { - $this->config->set('Core', 'DefinitionCache', 'Invalid'); + $this->config->set('Cache', 'DefinitionImpl', 'Invalid'); $this->expectError('Unrecognized DefinitionCache Invalid, using Serializer instead'); $cache = $this->factory->create('Test', $this->config); $this->assertIsA($cache, 'HTMLPurifier_DefinitionCache_Serializer'); } function test_null() { - $this->config->set('Core', 'DefinitionCache', null); + $this->config->set('Cache', 'DefinitionImpl', null); $cache = $this->factory->create('Test', $this->config); $this->assertEqual($cache, new HTMLPurifier_DefinitionCache_Null('Test')); } function test_register() { generate_mock_once('HTMLPurifier_DefinitionCache'); - $this->config->set('Core', 'DefinitionCache', 'TestCache'); + $this->config->set('Cache', 'DefinitionImpl', 'TestCache'); $this->factory->register('TestCache', $class = 'HTMLPurifier_DefinitionCacheMock'); $cache = $this->factory->create('Test', $this->config); $this->assertIsA($cache, $class); diff --git a/tests/HTMLPurifierTest.php b/tests/HTMLPurifierTest.php index 0d5eabae..3b645055 100644 --- a/tests/HTMLPurifierTest.php +++ b/tests/HTMLPurifierTest.php @@ -53,6 +53,23 @@ class HTMLPurifierTest extends HTMLPurifier_Harness } + function testDifferentAllowedCSSProperties() { + + $this->purifier = new HTMLPurifier(array( + 'CSS.AllowedProperties' => array('color', 'background-color') + )); + + $this->assertPurification( + '
red
' + ); + + $this->assertPurification( + '
red
', + '
red
' + ); + + } + function testDisableURI() { $this->purifier = new HTMLPurifier( array('Attr.DisableURI' => true) ); -- 2.11.4.GIT