diff --git a/extras/ConfigSchema/StringHashAdapter.php b/extras/ConfigSchema/StringHashAdapter.php index 2e5ffaec..1aa6f775 100644 --- a/extras/ConfigSchema/StringHashAdapter.php +++ b/extras/ConfigSchema/StringHashAdapter.php @@ -55,7 +55,7 @@ class ConfigSchema_StringHashAdapter } if (isset($hash['ALIASES'])) { - $raw_aliases = $hash->offsetGet('ALIASES'); + $raw_aliases = trim($hash->offsetGet('ALIASES')); $aliases = preg_split('/\s*,\s*/', $raw_aliases); foreach ($aliases as $alias) { list($alias_ns, $alias_directive) = explode('.', $alias, 2); @@ -63,6 +63,11 @@ class ConfigSchema_StringHashAdapter } } + // We don't use these yet, but there being used + if (isset($hash['VERSION'])) $hash->offsetGet('VERSION'); + if (isset($hash['DEPRECATED-USE'])) $hash->offsetGet('DEPRECATED-USE'); + if (isset($hash['DEPRECATED-VERSION'])) $hash->offsetGet('DEPRECATED-VERSION'); + $this->_findUnused($hash); } diff --git a/library/HTMLPurifier.php b/library/HTMLPurifier.php index 3d260585..f428e833 100644 --- a/library/HTMLPurifier.php +++ b/library/HTMLPurifier.php @@ -43,16 +43,6 @@ define('HTMLPURIFIER_PREFIX', dirname(__FILE__)); // every class has an undocumented dependency to these, must be included! -HTMLPurifier_ConfigSchema::define( - 'Core', 'CollectErrors', false, 'bool', ' -Whether or not to collect errors found while filtering the document. This -is a useful way to give feedback to your users. Warning: -Currently this feature is very patchy and experimental, with lots of -possible error messages not yet implemented. It will not cause any problems, -but it may not help your users either. This directive has been available -since 2.0.0. -'); - /** * Facade that coordinates HTML Purifier's subsystems in order to purify HTML. * diff --git a/library/HTMLPurifier/AttrDef/CSS/Color.php b/library/HTMLPurifier/AttrDef/CSS/Color.php index 5c70a43d..e47eac69 100644 --- a/library/HTMLPurifier/AttrDef/CSS/Color.php +++ b/library/HTMLPurifier/AttrDef/CSS/Color.php @@ -1,30 +1,5 @@ '#800000', - 'red' => '#FF0000', - 'orange' => '#FFA500', - 'yellow' => '#FFFF00', - 'olive' => '#808000', - 'purple' => '#800080', - 'fuchsia' => '#FF00FF', - 'white' => '#FFFFFF', - 'lime' => '#00FF00', - 'green' => '#008000', - 'navy' => '#000080', - 'blue' => '#0000FF', - 'aqua' => '#00FFFF', - 'teal' => '#008080', - 'black' => '#000000', - 'silver' => '#C0C0C0', - 'gray' => '#808080' - ), 'hash', ' -Lookup array of color names to six digit hexadecimal number corresponding -to color, with preceding hash mark. Used when parsing colors. -This directive has been available since 2.0.0. -'); - /** * Validates Color as defined by CSS. */ diff --git a/library/HTMLPurifier/AttrDef/HTML/FrameTarget.php b/library/HTMLPurifier/AttrDef/HTML/FrameTarget.php index 678eb767..0bc80432 100644 --- a/library/HTMLPurifier/AttrDef/HTML/FrameTarget.php +++ b/library/HTMLPurifier/AttrDef/HTML/FrameTarget.php @@ -1,16 +1,5 @@ - Munges all browsable (usually http, https and ftp) - absolute URI\'s into another URI, usually a URI redirection service. - This directive accepts a URI, formatted with a %s where - the url-encoded original URI should be inserted (sample: - http://www.google.com/url?q=%s). -

-

- Uses for this directive: -

- -

- This directive has been available since 1.3.0. -

-'); - // disabling directives -HTMLPurifier_ConfigSchema::define( - 'URI', 'Disable', false, 'bool', ' -

- Disables all URIs in all forms. Not sure why you\'d want to do that - (after all, the Internet\'s founded on the notion of a hyperlink). - This directive has been available since 1.3.0. -

-'); -HTMLPurifier_ConfigSchema::defineAlias('Attr', 'DisableURI', 'URI', 'Disable'); - -HTMLPurifier_ConfigSchema::define( - 'URI', 'DisableResources', false, 'bool', ' -

- Disables embedding resources, essentially meaning no pictures. You can - still link to them though. See %URI.DisableExternalResources for why - this might be a good idea. This directive has been available since 1.3.0. -

-'); - /** * Validates a URI as defined by RFC 3986. * @note Scheme-specific mechanics deferred to HTMLPurifier_URIScheme diff --git a/library/HTMLPurifier/AttrTransform/BdoDir.php b/library/HTMLPurifier/AttrTransform/BdoDir.php index 3353cf85..bf108bbb 100644 --- a/library/HTMLPurifier/AttrTransform/BdoDir.php +++ b/library/HTMLPurifier/AttrTransform/BdoDir.php @@ -2,16 +2,6 @@ // this MUST be placed in post, as it assumes that any value in dir is valid -HTMLPurifier_ConfigSchema::define( - 'Attr', 'DefaultTextDir', 'ltr', 'string', - 'Defines the default text direction (ltr or rtl) of the document '. - 'being parsed. This generally is the same as the value of the dir '. - 'attribute in HTML, or ltr if that is not specified.' -); -HTMLPurifier_ConfigSchema::defineAllowedValues( - 'Attr', 'DefaultTextDir', array( 'ltr', 'rtl' ) -); - /** * Post-trasnform that ensures that bdo tags have the dir attribute set. */ diff --git a/library/HTMLPurifier/AttrTransform/ImgRequired.php b/library/HTMLPurifier/AttrTransform/ImgRequired.php index 8b1a4a5a..52c71675 100644 --- a/library/HTMLPurifier/AttrTransform/ImgRequired.php +++ b/library/HTMLPurifier/AttrTransform/ImgRequired.php @@ -2,21 +2,6 @@ // must be called POST validation -HTMLPurifier_ConfigSchema::define( - 'Attr', 'DefaultInvalidImage', '', 'string', - 'This is the default image an img tag will be pointed to if it does '. - 'not have a valid src attribute. In future versions, we may allow the '. - 'image tag to be removed completely, but due to design issues, this is '. - 'not possible right now.' -); - -HTMLPurifier_ConfigSchema::define( - 'Attr', 'DefaultInvalidImageAlt', 'Invalid image', 'string', - 'This is the content of the alt tag of an invalid image if the user '. - 'had not previously specified an alt attribute. It has no effect when the '. - 'image is valid but there was no alt attribute present.' -); - /** * Transform that supplies default values for the src and alt attributes * in img tags, as well as prevents the img tag from being removed diff --git a/library/HTMLPurifier/CSSDefinition.php b/library/HTMLPurifier/CSSDefinition.php index bbe27e44..955c8c66 100644 --- a/library/HTMLPurifier/CSSDefinition.php +++ b/library/HTMLPurifier/CSSDefinition.php @@ -1,22 +1,5 @@ - Revision identifier for your custom definition. See - %HTML.DefinitionRev for details. This directive has been available - since 2.0.0. -

-'); - -HTMLPurifier_ConfigSchema::define( - 'CSS', 'Proprietary', false, 'bool', ' -

- Whether or not to allow safe, proprietary CSS values. This directive - has been available since 3.0.0. -

-'); - /** * Defines allowed CSS attributes and what their values are. * @see HTMLPurifier_HTMLDefinition diff --git a/library/HTMLPurifier/ChildDef.php b/library/HTMLPurifier/ChildDef.php index 927f728d..c5b5a5e5 100644 --- a/library/HTMLPurifier/ChildDef.php +++ b/library/HTMLPurifier/ChildDef.php @@ -5,15 +5,6 @@ // false = delete parent node and all children // array(...) = replace children nodes with these -HTMLPurifier_ConfigSchema::define( - 'Core', 'EscapeInvalidChildren', false, 'bool', - 'When true, a child is found that is not allowed in the context of the '. - 'parent element will be transformed into text as if it were ASCII. When '. - 'false, that element and all internal tags will be dropped, though text '. - 'will be preserved. There is no option for dropping the element but '. - 'preserving child nodes.' -); - /** * Defines allowed child nodes and validates tokens against it. */ diff --git a/library/HTMLPurifier/ConfigSchema.php b/library/HTMLPurifier/ConfigSchema.php index ce388beb..df11a54e 100644 --- a/library/HTMLPurifier/ConfigSchema.php +++ b/library/HTMLPurifier/ConfigSchema.php @@ -68,20 +68,10 @@ class HTMLPurifier_ConfigSchema { ); /** - * Initializes the default namespaces. + * Unserializes the default ConfigSchema. */ - public function initialize() { - $this->defineNamespace('Core', 'Core features that are always available.'); - $this->defineNamespace('Attr', 'Features regarding attribute validation.'); - $this->defineNamespace('URI', 'Features regarding Uniform Resource Identifiers.'); - $this->defineNamespace('HTML', 'Configuration regarding allowed HTML.'); - $this->defineNamespace('CSS', 'Configuration regarding allowed CSS.'); - $this->defineNamespace('AutoFormat', 'Configuration for activating auto-formatting functionality (also known as Injectors)'); - $this->defineNamespace('AutoFormatParam', 'Configuration for customizing auto-formatting functionality'); - $this->defineNamespace('Filter', 'Configuration for filters'); - $this->defineNamespace('Output', 'Configuration relating to the generation of (X)HTML.'); - $this->defineNamespace('Cache', 'Configuration for DefinitionCache and related subclasses.'); - $this->defineNamespace('Test', 'Developer testing configuration for our unit tests.'); + public static function makeFromSerial() { + return unserialize(file_get_contents(HTMLPURIFIER_PREFIX . '/HTMLPurifier/ConfigSchema/schema.ser')); } /** @@ -91,8 +81,7 @@ class HTMLPurifier_ConfigSchema { if ($prototype !== null) { HTMLPurifier_ConfigSchema::$singleton = $prototype; } elseif (HTMLPurifier_ConfigSchema::$singleton === null || $prototype === true) { - HTMLPurifier_ConfigSchema::$singleton = new HTMLPurifier_ConfigSchema(); - HTMLPurifier_ConfigSchema::$singleton->initialize(); + HTMLPurifier_ConfigSchema::$singleton = HTMLPurifier_ConfigSchema::makeFromSerial(); } return HTMLPurifier_ConfigSchema::$singleton; } diff --git a/library/HTMLPurifier/ConfigSchema/schema.ser b/library/HTMLPurifier/ConfigSchema/schema.ser new file mode 100644 index 00000000..7b64accc --- /dev/null +++ b/library/HTMLPurifier/ConfigSchema/schema.ser @@ -0,0 +1 @@ +O:25:"HTMLPurifier_ConfigSchema":4:{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:2:{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:17:{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: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:2:{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:18:{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: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: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 diff --git a/library/HTMLPurifier/DefinitionCache/Serializer.php b/library/HTMLPurifier/DefinitionCache/Serializer.php index 897abe2b..be3c9ef9 100644 --- a/library/HTMLPurifier/DefinitionCache/Serializer.php +++ b/library/HTMLPurifier/DefinitionCache/Serializer.php @@ -1,16 +1,5 @@ - Absolute path with no trailing slash to store serialized definitions in. - Default is within the - HTML Purifier library inside DefinitionCache/Serializer. This - path must be writable by the webserver. This directive has been - available since 2.0.0. -

-'); - class HTMLPurifier_DefinitionCache_Serializer extends HTMLPurifier_DefinitionCache { diff --git a/library/HTMLPurifier/DefinitionCacheFactory.php b/library/HTMLPurifier/DefinitionCacheFactory.php index 599ddc42..f7dd7daf 100644 --- a/library/HTMLPurifier/DefinitionCacheFactory.php +++ b/library/HTMLPurifier/DefinitionCacheFactory.php @@ -1,19 +1,5 @@ feature '. - 'that automatically resolves all entities), making it pretty useless '. - 'for anything except the most I18N-blind applications, although '. - '%Core.EscapeNonASCIICharacters offers fixes this trouble with '. - 'another tradeoff. This directive '. - 'only accepts ISO-8859-1 if iconv is not enabled.' -); - -HTMLPurifier_ConfigSchema::define( - 'Core', 'EscapeNonASCIICharacters', false, 'bool', - 'This directive overcomes a deficiency in %Core.Encoding by blindly '. - 'converting all non-ASCII characters into decimal numeric entities before '. - 'converting it to its native encoding. This means that even '. - 'characters that can be expressed in the non-UTF-8 encoding will '. - 'be entity-ized, which can be a real downer for encodings like Big5. '. - 'It also assumes that the ASCII repetoire is available, although '. - 'this is the case for almost all encodings. Anyway, use UTF-8! This '. - 'directive has been available since 1.4.0.' -); - -if ( !function_exists('iconv') ) { - // only encodings with native PHP support - HTMLPurifier_ConfigSchema::defineAllowedValues( - 'Core', 'Encoding', array( - 'utf-8', - 'iso-8859-1' - ) - ); - HTMLPurifier_ConfigSchema::defineValueAliases( - 'Core', 'Encoding', array( - 'iso8859-1' => 'iso-8859-1' - ) - ); -} - -HTMLPurifier_ConfigSchema::define( - 'Test', 'ForceNoIconv', false, 'bool', - 'When set to true, HTMLPurifier_Encoder will act as if iconv does not '. - 'exist and use only pure PHP implementations.' -); - /** * A UTF-8 specific character encoder that handles cleaning and transforming. * @note All functions in this class should be static. diff --git a/library/HTMLPurifier/Filter/ExtractStyleBlocks.php b/library/HTMLPurifier/Filter/ExtractStyleBlocks.php index 634e6706..ae799d66 100644 --- a/library/HTMLPurifier/Filter/ExtractStyleBlocks.php +++ b/library/HTMLPurifier/Filter/ExtractStyleBlocks.php @@ -1,46 +1,5 @@ - Whether or not to escape the dangerous characters <, > and & - as \3C, \3E and \26, respectively. This is can be safely set to false - if the contents of StyleBlocks will be placed in an external stylesheet, - where there is no risk of it being interpreted as HTML. This directive - has been available since 3.0.0. -

-' -); - -HTMLPurifier_ConfigSchema::define( - 'Filter', 'ExtractStyleBlocksScope', null, 'string/null', ' -

- If you would like users to be able to define external stylesheets, but - only allow them to specify CSS declarations for a specific node and - prevent them from fiddling with other elements, use this directive. - It accepts any valid CSS selector, and will prepend this to any - CSS declaration extracted from the document. For example, if this - directive is set to #user-content and a user uses the - selector a:hover, the final selector will be - #user-content a:hover. -

-

- The comma shorthand may be used; consider the above example, with - #user-content, #user-content2, the final selector will - be #user-content a:hover, #user-content2 a:hover. -

-

- Warning: It is possible for users to bypass this measure - using a naughty + selector. This is a bug in CSS Tidy 1.3, not HTML - Purifier, and I am working to get it fixed. Until then, HTML Purifier - performs a basic check to prevent this. -

-

- This directive has been available since 3.0.0. -

-' -); - /** * This filter extracts