1094 lines
		
	
	
	
		
			58 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			1094 lines
		
	
	
	
		
			58 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
NEWS ( CHANGELOG and HISTORY )                                     HTMLPurifier
 | 
						|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 | 
						|
 | 
						|
= KEY ====================
 | 
						|
    # Breaks back-compat
 | 
						|
    ! Feature
 | 
						|
    - Bugfix
 | 
						|
      + Sub-comment
 | 
						|
    . Internal change
 | 
						|
==========================
 | 
						|
 | 
						|
4.7.0, released 2015-08-04
 | 
						|
# opacity is now considered a "tricky" CSS property rather than a
 | 
						|
  proprietary one.
 | 
						|
! %AutoFormat.RemoveEmpty.Predicate for specifying exactly when
 | 
						|
  an element should be considered "empty" (maybe preserve if it
 | 
						|
  has attributes), and modify iframe support so that the iframe
 | 
						|
  is removed if it is missing a src attribute.  Thanks meeva for
 | 
						|
  reporting.
 | 
						|
- Don't truncate upon encountering </div> when using DOMLex.  Thanks
 | 
						|
  Myrto Christina for finally convincing me to fix this.
 | 
						|
- Update YouTube filter for new code.
 | 
						|
- Fix parsing of rgb() values with spaces in them for 'border'
 | 
						|
  attribute.
 | 
						|
- Don't remove foo="" attributes if foo is a boolean attribute.  Thanks
 | 
						|
  valME for reporting.
 | 
						|
 | 
						|
4.6.0, released 2013-11-30
 | 
						|
# Secure URI munge hashing algorithm has changed to hash_hmac("sha256", $url, $secret).
 | 
						|
  Please update any verification scripts you may have.
 | 
						|
# URI parsing algorithm was made more strict, so only prefixes which
 | 
						|
  looks like schemes will actually be schemes.  Thanks
 | 
						|
  Michael Gusev <mgusev@sugarcrm.com> for fixing.
 | 
						|
# %Core.EscapeInvalidChildren is no longer supported, and no longer does
 | 
						|
  anything.
 | 
						|
! New directive %Core.AllowHostnameUnderscore which allows underscores
 | 
						|
  in hostnames.
 | 
						|
- Eliminate quadratic behavior in DOMLex by using a proper queue.
 | 
						|
  Thanks Ole Laursen for noticing this.
 | 
						|
- Rewritten MakeWellFormed/FixNesting implementation eliminates quadratic
 | 
						|
  behavior in the rest of the purificaiton pipeline.  Thanks Chedburn
 | 
						|
  Networks for sponsoring this work.
 | 
						|
- Made Linkify URL parser a bit less permissive, so that non-breaking
 | 
						|
  spaces and commas are not included as part of URL.  Thanks nAS for fixing.
 | 
						|
- Fix some bad interactions with %HTML.Allowed and injectors.  Thanks
 | 
						|
  David Hirtz for reporting.
 | 
						|
- Fix infinite loop in DirectLex. Thanks Ashar Javed (@soaj1664ashar)
 | 
						|
  for reporting.
 | 
						|
 | 
						|
4.5.0, released 2013-02-17
 | 
						|
# Fix bug where stacked attribute transforms clobber each other;
 | 
						|
  this also means it's no longer possible to override attribute
 | 
						|
  transforms in later modules.  No internal code was using this
 | 
						|
  but this may break some clients.
 | 
						|
# We now use SHA-1 to identify cached definitions, instead of MD5.
 | 
						|
! Support display:inline-block
 | 
						|
! Support for more white-space CSS values.
 | 
						|
! Permit underscores in font families
 | 
						|
! Support for page-break-* CSS3 properties when proprietary properties
 | 
						|
  are enabled.
 | 
						|
! New directive %Core.DisableExcludes; can be set to 'true' to turn off
 | 
						|
  SGML excludes checking.  If HTML Purifier is removing too much text
 | 
						|
  and you don't care about full standards compliance, try setting this to
 | 
						|
  'true'.
 | 
						|
- Use prepend for SPL autoloading on PHP 5.3 and later.
 | 
						|
- Fix bug with nofollow transform when pre-existing rel exists.
 | 
						|
- Fix bug where background:url() always gets lower-cased
 | 
						|
  (but not background-image:url())
 | 
						|
- Fix bug with non lower-case color names in HTML
 | 
						|
- Fix bug where data URI validation doesn't remove temporary files.
 | 
						|
  Thanks Javier Marín Ros <javiermarinros@gmail.com> for reporting.
 | 
						|
- Don't remove certain empty tags on RemoveEmpty.
 | 
						|
 | 
						|
4.4.0, released 2012-01-18
 | 
						|
# Removed PEARSax3 handler.
 | 
						|
# URI.Munge now munges URIs inside the same host that go from https
 | 
						|
  to http.  Reported by Neike Taika-Tessaro.
 | 
						|
# Core.EscapeNonASCIICharacters now always transforms entities to
 | 
						|
  entities, even if target encoding is UTF-8.
 | 
						|
# Tighten up selector validation in ExtractStyleBlocks.
 | 
						|
  Non-syntactically valid selectors are now rejected, along with
 | 
						|
  some of the more obscure ones such as attribute selectors, the
 | 
						|
  :lang pseudoselector, and anything not in CSS2.1.  Furthermore,
 | 
						|
  ID and class selectors now work properly with the relevant
 | 
						|
  configuration attributes.  Also, mute errors when parsing CSS
 | 
						|
  with CSS Tidy.  Reported by Mario Heiderich and Norman Hippert.
 | 
						|
! Added support for 'scope' attribute on tables.
 | 
						|
! Added %HTML.TargetBlank, which adds target="blank" to all outgoing links.
 | 
						|
! Properly handle sub-lists directly nested inside of lists in
 | 
						|
  a standards compliant way, by moving them into the preceding <li>
 | 
						|
! Added %HTML.AllowedComments and %HTML.AllowedCommentsRegexp for
 | 
						|
  limited allowed comments in untrusted situations.
 | 
						|
! Implement iframes, and allow them to be used in untrusted mode with
 | 
						|
  %HTML.SafeIframe and %URI.SafeIframeRegexp.  Thanks Bradley M. Froehle
 | 
						|
  <brad.froehle@gmail.com> for submitting an initial version of the patch.
 | 
						|
! The Forms module now works properly for transitional doctypes.
 | 
						|
! Added support for internationalized domain names. You need the PEAR
 | 
						|
  Net_IDNA2 module to be in your path; if it is installed, ensure the
 | 
						|
  class can be loaded and then set %Core.EnableIDNA to true.
 | 
						|
- Color keywords are now case insensitive.  Thanks Yzmir Ramirez
 | 
						|
  <yramirez-htmlpurifier@adicio.com> for reporting.
 | 
						|
- Explicitly initialize anonModule variable to null.
 | 
						|
- Do not duplicate nofollow if already present.  Thanks 178
 | 
						|
  for reporting.
 | 
						|
- Do not add nofollow if hostname matches our current host.  Thanks 178
 | 
						|
  for reporting, and Neike Taika-Tessaro for helping diagnose.
 | 
						|
- Do not unset parser variable; this fixes intermittent serialization
 | 
						|
  problems.  Thanks Neike Taika-Tessaro for reporting, bill
 | 
						|
  <10010tiger@gmail.com> for diagnosing.
 | 
						|
- Fix iconv truncation bug, where non-UTF-8 target encodings see
 | 
						|
  output truncated after around 8000 characters.  Thanks Jörg Ludwig
 | 
						|
  <joerg.ludwig@iserv.eu> for reporting.
 | 
						|
- Fix broken table content model for XHTML1.1 (and also earlier
 | 
						|
  versions, although the W3C validator doesn't catch those violations).
 | 
						|
  Thanks GlitchMr <glitch.mr@gmail.com> for reporting.
 | 
						|
 | 
						|
4.3.0, released 2011-03-27
 | 
						|
# Fixed broken caching of customized raw definitions, but requires an
 | 
						|
  API change.  The old API still works but will emit a warning,
 | 
						|
  see http://htmlpurifier.org/docs/enduser-customize.html#optimized
 | 
						|
  for how to upgrade your code.
 | 
						|
# Protect against Internet Explorer innerHTML behavior by specially
 | 
						|
  treating attributes with backticks but no angled brackets, quotes or
 | 
						|
  spaces.  This constitutes a slight semantic change, which can be
 | 
						|
  reverted using %Output.FixInnerHTML.  Reported by Neike Taika-Tessaro
 | 
						|
  and Mario Heiderich.
 | 
						|
# Protect against cssText/innerHTML by restricting allowed characters
 | 
						|
  used in fonts further than mandated by the specification and encoding
 | 
						|
  some extra special characters in URLs.  Reported by Neike
 | 
						|
  Taika-Tessaro and Mario Heiderich.
 | 
						|
! Added %HTML.Nofollow to add rel="nofollow" to external links.
 | 
						|
! More types of SPL autoloaders allowed on later versions of PHP.
 | 
						|
! Implementations for position, top, left, right, bottom, z-index
 | 
						|
  when %CSS.Trusted is on.
 | 
						|
! Add %Cache.SerializerPermissions option for custom serializer
 | 
						|
  directory/file permissions
 | 
						|
! Fix longstanding bug in Flash support for non-IE browsers, and
 | 
						|
  allow more wmode attributes.
 | 
						|
! Add %CSS.AllowedFonts to restrict permissible font names.
 | 
						|
- Switch to an iterative traversal of the DOM, which prevents us
 | 
						|
  from running out of stack space for deeply nested documents.
 | 
						|
  Thanks Maxim Krizhanovsky for contributing a patch.
 | 
						|
- Make removal of conditional IE comments ungreedy; thanks Bernd
 | 
						|
  for reporting.
 | 
						|
- Escape CDATA before removing Internet Explorer comments.
 | 
						|
- Fix removal of id attributes under certain conditions by ensuring
 | 
						|
  armor attributes are preserved when recreating tags.
 | 
						|
- Check if schema.ser was corrupted.
 | 
						|
- Check if zend.ze1_compatibility_mode is on, and error out if it is.
 | 
						|
  This safety check is only done for HTMLPurifier.auto.php; if you
 | 
						|
  are using standalone or the specialized includes files, you're
 | 
						|
  expected to know what you're doing.
 | 
						|
- Stop repeatedly writing the cache file after I'm done customizing a
 | 
						|
  raw definition.  Reported by ajh.
 | 
						|
- Switch to using require_once in the Bootstrap to work around bad
 | 
						|
  interaction with Zend Debugger and APC.  Reported by Antonio Parraga.
 | 
						|
- Fix URI handling when hostname is missing but scheme is present.
 | 
						|
  Reported by Neike Taika-Tessaro.
 | 
						|
- Fix missing numeric entities on DirectLex; thanks Neike Taika-Tessaro
 | 
						|
  for reporting.
 | 
						|
- Fix harmless notice from indexing into empty string.  Thanks Matthijs
 | 
						|
  Kooijman <matthijs@stdin.nl> for reporting.
 | 
						|
- Don't autoclose no parent elements are able to support the element
 | 
						|
  that triggered the autoclose.  In particular fixes strange behavior
 | 
						|
  of stray <li> tags.  Thanks pkuliga@gmail.com for reporting and
 | 
						|
  Neike Taika-Tessaro <pinkgothic@gmail.com> for debugging assistance.
 | 
						|
 | 
						|
4.2.0, released 2010-09-15
 | 
						|
! Added %Core.RemoveProcessingInstructions, which lets you remove
 | 
						|
  <? ... ?> statements.
 | 
						|
! Added %URI.DisableResources functionality; the directive originally
 | 
						|
  did nothing.  Thanks David Rothstein for reporting.
 | 
						|
! Add documentation about configuration directive types.
 | 
						|
! Add %CSS.ForbiddenProperties configuration directive.
 | 
						|
! Add %HTML.FlashAllowFullScreen to permit embedded Flash objects
 | 
						|
  to utilize full-screen mode.
 | 
						|
! Add optional support for the <code>file</code> URI scheme, enable
 | 
						|
  by explicitly setting %URI.AllowedSchemes.
 | 
						|
! Add %Core.NormalizeNewlines options to allow turning off newline
 | 
						|
  normalization.
 | 
						|
- Fix improper handling of Internet Explorer conditional comments
 | 
						|
  by parser.  Thanks zmonteca for reporting.
 | 
						|
- Fix missing attributes bug when running on Mac Snow Leopard and APC.
 | 
						|
  Thanks sidepodcast for the fix.
 | 
						|
- Warn if an element is allowed, but an attribute it requires is
 | 
						|
  not allowed.
 | 
						|
 | 
						|
4.1.1, released 2010-05-31
 | 
						|
- Fix undefined index warnings in maintenance scripts.
 | 
						|
- Fix bug in DirectLex for parsing elements with a single attribute
 | 
						|
  with entities.
 | 
						|
- Rewrite CSS output logic for font-family and url().  Thanks Mario
 | 
						|
  Heiderich <mario.heiderich@googlemail.com> for reporting and Takeshi
 | 
						|
  Terada <t-terada@violet.plala.or.jp> for suggesting the fix.
 | 
						|
- Emit an error for CollectErrors if a body is extracted
 | 
						|
- Fix bug where in background-position for center keyword handling.
 | 
						|
- Fix infinite loop when a wrapper element is inserted in a context
 | 
						|
  where it's not allowed.  Thanks Lars <lars@renoz.dk> for reporting.
 | 
						|
- Remove +x bit and shebang from index.php; only supported mode is to
 | 
						|
  explicitly call it with php.
 | 
						|
- Make test script less chatty when log_errors is on.
 | 
						|
 | 
						|
4.1.0, released 2010-04-26
 | 
						|
! Support proprietary height attribute on table element
 | 
						|
! Support YouTube slideshows that contain /cp/ in their URL.
 | 
						|
! Support for data: URI scheme; not enabled by default, add it using
 | 
						|
  %URI.AllowedSchemes
 | 
						|
! Support flashvars when using %HTML.SafeObject and %HTML.SafeEmbed.
 | 
						|
! Support for Internet Explorer compatibility with %HTML.SafeObject
 | 
						|
  using %Output.FlashCompat.
 | 
						|
! Handle <ol><ol> properly, by inserting the necessary <li> tag.
 | 
						|
- Always quote the insides of url(...) in CSS.
 | 
						|
 | 
						|
4.0.0, released 2009-07-07
 | 
						|
# APIs for ConfigSchema subsystem have substantially changed. See
 | 
						|
  docs/dev-config-bcbreaks.txt for details; in essence, anything that
 | 
						|
  had both namespace and directive now have a single unified key.
 | 
						|
# Some configuration directives were renamed, specifically:
 | 
						|
    %AutoFormatParam.PurifierLinkifyDocURL -> %AutoFormat.PurifierLinkify.DocURL
 | 
						|
    %FilterParam.ExtractStyleBlocksEscaping -> %Filter.ExtractStyleBlocks.Escaping
 | 
						|
    %FilterParam.ExtractStyleBlocksScope -> %Filter.ExtractStyleBlocks.Scope
 | 
						|
    %FilterParam.ExtractStyleBlocksTidyImpl -> %Filter.ExtractStyleBlocks.TidyImpl
 | 
						|
  As usual, the old directive names will still work, but will throw E_NOTICE
 | 
						|
  errors.
 | 
						|
# The allowed values for class have been relaxed to allow all of CDATA for
 | 
						|
  doctypes that are not XHTML 1.1 or XHTML 2.0.  For old behavior, set
 | 
						|
  %Attr.ClassUseCDATA to false.
 | 
						|
# Instead of appending the content model to an old content model, a blank
 | 
						|
  element will replace the old content model.  You can use #SUPER to get
 | 
						|
  the old content model.
 | 
						|
! More robust support for name="" and id=""
 | 
						|
! HTMLPurifier_Config::inherit($config) allows you to inherit one
 | 
						|
  configuration, and have changes to that configuration be propagated
 | 
						|
  to all of its children.
 | 
						|
! Implement %HTML.Attr.Name.UseCDATA, which relaxes validation rules on
 | 
						|
  the name attribute when set. Use with care. Thanks Ian Cook for
 | 
						|
  sponsoring.
 | 
						|
! Implement %AutoFormat.RemoveEmpty.RemoveNbsp, which removes empty
 | 
						|
  tags that contain non-breaking spaces as well other whitespace. You
 | 
						|
  can also modify which tags should have   maintained with
 | 
						|
  %AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions.
 | 
						|
! Implement %Attr.AllowedClasses, which allows administrators to restrict
 | 
						|
  classes users can use to a specified finite set of classes, and
 | 
						|
  %Attr.ForbiddenClasses, which is the logical inverse.
 | 
						|
! You can now maintain your own configuration schema directories by
 | 
						|
  creating a config-schema.php file or passing an extra argument. Check
 | 
						|
  docs/dev-config-schema.html for more details.
 | 
						|
! Added HTMLPurifier_Config->serialize() method, which lets you save away
 | 
						|
  your configuration in a compact serial file, which you can unserialize
 | 
						|
  and use directly without having to go through the overhead of setup.
 | 
						|
- Fix bug where URIDefinition would not get cleared if it's directives got
 | 
						|
  changed.
 | 
						|
- Fix fatal error in HTMLPurifier_Encoder on certain platforms (probably NetBSD 5.0)
 | 
						|
- Fix bug in Linkify autoformatter involving <a><span>http://foo</span></a>
 | 
						|
- Make %URI.Munge not apply to links that have the same host as your host.
 | 
						|
- Prevent stray </body> tag from truncating output, if a second </body>
 | 
						|
  is present.
 | 
						|
. Created script maintenance/rename-config.php for renaming a configuration
 | 
						|
  directive while maintaining its alias.  This script does not change source code.
 | 
						|
. Implement namespace locking for definition construction, to prevent
 | 
						|
  bugs where a directive is used for definition construction but is not
 | 
						|
  used to construct the cache hash.
 | 
						|
 | 
						|
3.3.0, released 2009-02-16
 | 
						|
! Implement CSS property 'overflow' when %CSS.AllowTricky is true.
 | 
						|
! Implement generic property list classess
 | 
						|
- Fix bug with testEncodingSupportsASCII() algorithm when iconv() implementation
 | 
						|
  does not do the "right thing" with characters not supported in the output
 | 
						|
  set.
 | 
						|
- Spellcheck UTF-8: The Secret To Character Encoding
 | 
						|
- Fix improper removal of the contents of elements with only whitespace. Thanks
 | 
						|
  Eric Wald for reporting.
 | 
						|
- Fix broken test suite in versions of PHP without spl_autoload_register()
 | 
						|
- Fix degenerate case with YouTube filter involving double hyphens.
 | 
						|
  Thanks Pierre Attar for reporting.
 | 
						|
- Fix YouTube rendering problem on certain versions of Firefox.
 | 
						|
- Fix CSSDefinition Printer problems with decorators
 | 
						|
- Add text parameter to unit tests, forces text output
 | 
						|
. Add verbose mode to command line test runner, use (--verbose)
 | 
						|
. Turn on unit tests for UnitConverter
 | 
						|
. Fix missing version number in configuration %Attr.DefaultImageAlt (added 3.2.0)
 | 
						|
. Fix newline errors that caused spurious failures when CRLF HTML Purifier was
 | 
						|
  tested on Linux.
 | 
						|
. Removed trailing whitespace from all text files, see
 | 
						|
  remote-trailing-whitespace.php maintenance script.
 | 
						|
. Convert configuration to use property list backend.
 | 
						|
 | 
						|
3.2.0, released 2008-10-31
 | 
						|
# Using %Core.CollectErrors forces line number/column tracking on, whereas
 | 
						|
  previously you could theoretically turn it off.
 | 
						|
# HTMLPurifier_Injector->notifyEnd() is formally deprecated. Please
 | 
						|
  use handleEnd() instead.
 | 
						|
! %Output.AttrSort for when you need your attributes in alphabetical order to
 | 
						|
  deal with a bug in FCKEditor. Requested by frank farmer.
 | 
						|
! Enable HTML comments when %HTML.Trusted is on. Requested by Waldo Jaquith.
 | 
						|
! Proper support for name attribute. It is now allowed and equivalent to the id
 | 
						|
  attribute in a and img tags, and is only converted to id when %HTML.TidyLevel
 | 
						|
  is heavy (for all doctypes).
 | 
						|
! %AutoFormat.RemoveEmpty to remove some empty tags from documents. Please don't
 | 
						|
  use on hand-written HTML.
 | 
						|
! Add error-cases for unsupported elements in MakeWellFormed. This enables
 | 
						|
  the strategy to be used, standalone, on untrusted input.
 | 
						|
! %Core.AggressivelyFixLt is on by default. This causes more sensible
 | 
						|
  processing of left angled brackets in smileys and other whatnot.
 | 
						|
! Test scripts now have a 'type' parameter, which lets you say 'htmlpurifier',
 | 
						|
  'phpt', 'vtest', etc. in order to only execute those tests. This supercedes
 | 
						|
  the --only-phpt parameter, although for backwards-compatibility the flag
 | 
						|
  will still work.
 | 
						|
! AutoParagraph auto-formatter will now preserve double-newlines upon output.
 | 
						|
  Users who are not performing inbound filtering, this may seem a little
 | 
						|
  useless, but as a bonus, the test suite and handling of edge cases is also
 | 
						|
  improved.
 | 
						|
! Experimental implementation of forms for %HTML.Trusted
 | 
						|
! Track column numbers when maintain line numbers is on
 | 
						|
! Proprietary 'background' attribute on table-related elements converted into
 | 
						|
  corresponding CSS.  Thanks Fusemail for sponsoring this feature!
 | 
						|
! Add forward(), forwardUntilEndToken(), backward() and current() to Injector
 | 
						|
  supertype.
 | 
						|
! HTMLPurifier_Injector->handleEnd() permits modification to end tokens. The
 | 
						|
  time of operation varies slightly from notifyEnd() as *all* end tokens are
 | 
						|
  processed by the injector before they are subject to the well-formedness rules.
 | 
						|
! %Attr.DefaultImageAlt allows overriding default behavior of setting alt to
 | 
						|
  basename of image when not present.
 | 
						|
! %AutoFormat.DisplayLinkURI neuters <a> tags into plain text URLs.
 | 
						|
- Fix two bugs in %URI.MakeAbsolute; one involving empty paths in base URLs,
 | 
						|
  the other involving an undefined $is_folder error.
 | 
						|
- Throw error when %Core.Encoding is set to a spurious value. Previously,
 | 
						|
  this errored silently and returned false.
 | 
						|
- Redirected stderr to stdout for flush error output.
 | 
						|
- %URI.DisableExternal will now use the host in %URI.Base if %URI.Host is not
 | 
						|
  available.
 | 
						|
- Do not re-munge URL if the output URL has the same host as the input URL.
 | 
						|
  Requested by Chris.
 | 
						|
- Fix error in documentation regarding %Filter.ExtractStyleBlocks
 | 
						|
- Prevent <![CDATA[<body></body>]]> from triggering %Core.ConvertDocumentToFragment
 | 
						|
- Fix bug with inline elements in blockquotes conflicting with strict doctype
 | 
						|
- Detect if HTML support is disabled for DOM by checking for loadHTML() method.
 | 
						|
- Fix bug where dots and double-dots in absolute URLs without hostname were
 | 
						|
  not collapsed by URIFilter_MakeAbsolute.
 | 
						|
- Fix bug with anonymous modules operating on SafeEmbed or SafeObject elements
 | 
						|
  by reordering their addition.
 | 
						|
- Will now throw exception on many error conditions during lexer creation; also
 | 
						|
  throw an exception when MaintainLineNumbers is true, but a non-tracksLineNumbers
 | 
						|
  is being used.
 | 
						|
- Detect if domxml extension is loaded, and use DirectLEx accordingly.
 | 
						|
- Improve handling of big numbers with floating point arithmetic in UnitConverter.
 | 
						|
  Reported by David Morton.
 | 
						|
. Strategy_MakeWellFormed now operates in-place, saving memory and allowing
 | 
						|
  for more interesting filter-backtracking
 | 
						|
. New HTMLPurifier_Injector->rewind() functionality, allows injectors to rewind
 | 
						|
  index to reprocess tokens.
 | 
						|
. StringHashParser now allows for multiline sections with "empty" content;
 | 
						|
  previously the section would remain undefined.
 | 
						|
. Added --quick option to multitest.php, which tests only the most recent
 | 
						|
  release for each series.
 | 
						|
. Added --distro option to multitest.php, which accepts either 'normal' or
 | 
						|
  'standalone'. This supercedes --exclude-normal and --exclude-standalone
 | 
						|
 | 
						|
3.1.1, released 2008-06-19
 | 
						|
# %URI.Munge now, by default, does not munge resources (for example, <img src="">)
 | 
						|
  In order to enable this again, please set %URI.MungeResources to true.
 | 
						|
! More robust imagecrash protection with height/width CSS with %CSS.MaxImgLength,
 | 
						|
  and height/width HTML with %HTML.MaxImgLength.
 | 
						|
! %URI.MungeSecretKey for secure URI munging. Thanks Chris
 | 
						|
  for sponsoring this feature. Check out the corresponding documentation
 | 
						|
  for details. (Att Nightly testers: The API for this feature changed before
 | 
						|
  the general release. Namely, rename your directives %URI.SecureMungeSecretKey =>
 | 
						|
  %URI.MungeSecretKey and and %URI.SecureMunge => %URI.Munge)
 | 
						|
! Implemented post URI filtering. Set member variable $post to true to set
 | 
						|
  a URIFilter as such.
 | 
						|
! Allow modules to define injectors via $info_injector. Injectors are
 | 
						|
  automatically disabled if injector's needed elements are not found.
 | 
						|
! Support for "safe" objects added, use %HTML.SafeObject and %HTML.SafeEmbed.
 | 
						|
  Thanks Chris for sponsoring. If you've been using ad hoc code from the
 | 
						|
  forums, PLEASE use this instead.
 | 
						|
! Added substitutions for %e, %n, %a and %p in %URI.Munge (in order,
 | 
						|
  embedded, tag name, attribute name, CSS property name). See %URI.Munge
 | 
						|
  for more details. Requested by Jochem Blok.
 | 
						|
- Disable percent height/width attributes for img.
 | 
						|
- AttrValidator operations are now atomic; updates to attributes are not
 | 
						|
  manifest in token until end of operations. This prevents naughty internal
 | 
						|
  code from directly modifying CurrentToken when they're not supposed to.
 | 
						|
  This semantics change was requested by frank farmer.
 | 
						|
- Percent encoding checks enabled for URI query and fragment
 | 
						|
- Fix stray backslashes in font-family; CSS Unicode character escapes are
 | 
						|
  now properly resolved (although *only* in font-family). Thanks Takeshi Terada
 | 
						|
  for reporting.
 | 
						|
- Improve parseCDATA algorithm to take into account newline normalization
 | 
						|
- Account for browser confusion between Yen character and backslash in
 | 
						|
  Shift_JIS encoding. This fix generalizes to any other encoding which is not
 | 
						|
  a strict superset of printable ASCII. Thanks Takeshi Terada for reporting.
 | 
						|
- Fix missing configuration parameter in Generator calls. Thanks vs for the
 | 
						|
  partial patch.
 | 
						|
- Improved adherence to Unicode by checking for non-character codepoints.
 | 
						|
  Thanks Geoffrey Sneddon for reporting. This may result in degraded
 | 
						|
  performance for extremely large inputs.
 | 
						|
- Allow CSS property-value pair ''text-decoration: none''. Thanks Jochem Blok
 | 
						|
  for reporting.
 | 
						|
. Added HTMLPurifier_UnitConverter and HTMLPurifier_Length for convenient
 | 
						|
  handling of CSS-style lengths. HTMLPurifier_AttrDef_CSS_Length now uses
 | 
						|
  this class.
 | 
						|
. API of HTMLPurifier_AttrDef_CSS_Length changed from __construct($disable_negative)
 | 
						|
  to __construct($min, $max). __construct(true) is equivalent to
 | 
						|
  __construct('0').
 | 
						|
. 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.
 | 
						|
. AttrDef_HTML_Pixels now takes a single construction parameter, pixels.
 | 
						|
. ConfigSchema data-structure heavily optimized; on average it uses a third
 | 
						|
  the memory it did previously. The interface has changed accordingly,
 | 
						|
  consult changes to HTMLPurifier_Config for details.
 | 
						|
. Variable parsing types now are magic integers instead of strings
 | 
						|
. Added benchmark for ConfigSchema
 | 
						|
. HTMLPurifier_Generator requires $config and $context parameters. If you
 | 
						|
  don't know what they should be, use HTMLPurifier_Config::createDefault()
 | 
						|
  and new HTMLPurifier_Context().
 | 
						|
. Printers now properly distinguish between output configuration, and
 | 
						|
  target configuration. This is not applicable to scripts using
 | 
						|
  the Printers for HTML Purifier related tasks.
 | 
						|
. HTML/CSS Printers must be primed with prepareGenerator($gen_config), otherwise
 | 
						|
  fatal errors will ensue.
 | 
						|
. URIFilter->prepare can return false in order to abort loading of the filter
 | 
						|
. Factory for AttrDef_URI implemented, URI#embedded to indicate URI that embeds
 | 
						|
  an external resource.
 | 
						|
. %URI.Munge functionality factored out into a post-filter class.
 | 
						|
. Added CurrentCSSProperty context variable during CSS validation
 | 
						|
 | 
						|
3.1.0, released 2008-05-18
 | 
						|
# Unnecessary references to objects (vestiges of PHP4) removed from method
 | 
						|
  signatures.  The following methods do not need references when assigning from
 | 
						|
  them and will result in E_STRICT errors if you try:
 | 
						|
    + HTMLPurifier_Config->get*Definition() [* = HTML, CSS]
 | 
						|
    + HTMLPurifier_ConfigSchema::instance()
 | 
						|
    + HTMLPurifier_DefinitionCacheFactory::instance()
 | 
						|
    + HTMLPurifier_DefinitionCacheFactory->create()
 | 
						|
    + HTMLPurifier_DoctypeRegistry->register()
 | 
						|
    + HTMLPurifier_DoctypeRegistry->get()
 | 
						|
    + HTMLPurifier_HTMLModule->addElement()
 | 
						|
    + HTMLPurifier_HTMLModule->addBlankElement()
 | 
						|
    + HTMLPurifier_LanguageFactory::instance()
 | 
						|
# Printer_ConfigForm's get*() functions were static-ified
 | 
						|
# %HTML.ForbiddenAttributes requires attribute declarations to be in the
 | 
						|
  form of tag@attr, NOT tag.attr (which will throw an error and won't do
 | 
						|
  anything). This is for forwards compatibility with XML; you'd do best
 | 
						|
  to migrate an %HTML.AllowedAttributes directives to this syntax too.
 | 
						|
! Allow index to be false for config from form creation
 | 
						|
! Added HTMLPurifier::VERSION constant
 | 
						|
! Commas, not dashes, used for serializer IDs. This change is forwards-compatible
 | 
						|
  and allows for version numbers like "3.1.0-dev".
 | 
						|
! %HTML.Allowed deals gracefully with whitespace anywhere, anytime!
 | 
						|
! HTML Purifier's URI handling is a lot more robust, with much stricter
 | 
						|
  validation checks and better percent encoding handling. Thanks Gareth Heyes
 | 
						|
  for indicating security vulnerabilities from lax percent encoding.
 | 
						|
! Bootstrap autoloader deals more robustly with classes that don't exist,
 | 
						|
  preventing class_exists($class, true) from barfing.
 | 
						|
- InterchangeBuilder now alphabetizes its lists
 | 
						|
- Validation error in configdoc output fixed
 | 
						|
- Iconv and other encoding errors muted even with custom error handlers that
 | 
						|
  do not honor error_reporting
 | 
						|
- Add protection against imagecrash attack with CSS height/width
 | 
						|
- HTMLPurifier::instance() created for consistency, is equivalent to getInstance()
 | 
						|
- Fixed and revamped broken ConfigForm smoketest
 | 
						|
- Bug with bool/null fields in Printer_ConfigForm fixed
 | 
						|
- Bug with global forbidden attributes fixed
 | 
						|
- Improved error messages for allowed and forbidden HTML elements and attributes
 | 
						|
- Missing (or null) in configdoc documentation restored
 | 
						|
- If DOM throws and exception during parsing with PH5P (occurs in newer versions
 | 
						|
  of DOM), HTML Purifier punts to DirectLex
 | 
						|
- Fatal error with unserialization of ScriptRequired
 | 
						|
- Created directories are now chmod'ed properly
 | 
						|
- Fixed bug with fallback languages in LanguageFactory
 | 
						|
- Standalone testing setup properly with autoload
 | 
						|
. Out-of-date documentation revised
 | 
						|
. UTF-8 encoding check optimization as suggested by Diego
 | 
						|
. HTMLPurifier_Error removed in favor of exceptions
 | 
						|
. More copy() function removed; should use clone instead
 | 
						|
. More extensive unit tests for HTMLDefinition
 | 
						|
. assertPurification moved to central harness
 | 
						|
. HTMLPurifier_Generator accepts $config and $context parameters during
 | 
						|
  instantiation, not runtime
 | 
						|
. Double-quotes outside of attribute values are now unescaped
 | 
						|
 | 
						|
3.1.0rc1, released 2008-04-22
 | 
						|
# Autoload support added. Internal require_once's removed in favor of an
 | 
						|
  explicit require list or autoloading. To use HTML Purifier,
 | 
						|
  you must now either use HTMLPurifier.auto.php
 | 
						|
  or HTMLPurifier.includes.php; setting the include path and including
 | 
						|
  HTMLPurifier.php is insufficient--in such cases include HTMLPurifier.autoload.php
 | 
						|
  as well to register our autoload handler (or modify your autoload function
 | 
						|
  to check HTMLPurifier_Bootstrap::getPath($class)). You can also use
 | 
						|
  HTMLPurifier.safe-includes.php for a less performance friendly but more
 | 
						|
  user-friendly library load.
 | 
						|
# HTMLPurifier_ConfigSchema static functions are officially deprecated. Schema
 | 
						|
  information is stored in the ConfigSchema directory, and the
 | 
						|
  maintenance/generate-schema-cache.php generates the schema.ser file, which
 | 
						|
  is now instantiated. Support for userland schema changes coming soon!
 | 
						|
# HTMLPurifier_Config will now throw E_USER_NOTICE when you use a directive
 | 
						|
  alias; to get rid of these errors just modify your configuration to use
 | 
						|
  the new directive name.
 | 
						|
# HTMLPurifier->addFilter is deprecated; built-in filters can now be
 | 
						|
  enabled using %Filter.$filter_name or by setting your own filters using
 | 
						|
  %Filter.Custom
 | 
						|
# Directive-level safety properties superceded in favor of module-level
 | 
						|
  safety. Internal method HTMLModule->addElement() has changed, although
 | 
						|
  the externally visible HTMLDefinition->addElement has *not* changed.
 | 
						|
! Extra utility classes for testing and non-library operations can
 | 
						|
  be found in extras/. Specifically, these are FSTools and ConfigDoc.
 | 
						|
  You may find a use for these in your own project, but right now they
 | 
						|
  are highly experimental and volatile.
 | 
						|
! Integration with PHPT allows for automated smoketests
 | 
						|
! Limited support for proprietary HTML elements, namely <marquee>, sponsored
 | 
						|
  by Chris. You can enable them with %HTML.Proprietary if your client
 | 
						|
  demands them.
 | 
						|
! Support for !important CSS cascade modifier. By default, this will be stripped
 | 
						|
  from CSS, but you can enable it using %CSS.AllowImportant
 | 
						|
! Support for display and visibility CSS properties added, set %CSS.AllowTricky
 | 
						|
  to true to use them.
 | 
						|
! 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
 | 
						|
! ConfigDoc output has been enhanced with version and deprecation info.
 | 
						|
! %HTML.ForbiddenAttributes and %HTML.ForbiddenElements implemented.
 | 
						|
- Autoclose now operates iteratively, i.e. <span><span><div> now has
 | 
						|
  both span tags closed.
 | 
						|
- Various HTMLPurifier_Config convenience functions now accept another parameter
 | 
						|
  $schema which defines what HTMLPurifier_ConfigSchema to use besides the
 | 
						|
  global default.
 | 
						|
- Fix bug with trusted script handling in libxml versions later than 2.6.28.
 | 
						|
- Fix bug in ExtractStyleBlocks with comments in style tags
 | 
						|
- Fix bug in comment parsing for DirectLex
 | 
						|
- Flush output now displayed when in command line mode for unit tester
 | 
						|
- Fix bug with rgb(0, 1, 2) color syntax with spaces inside shorthand syntax
 | 
						|
- HTMLPurifier_HTMLDefinition->addAttribute can now be called multiple times
 | 
						|
  on the same element without emitting errors.
 | 
						|
- Fixed fatal error in PH5P lexer with invalid tag names
 | 
						|
. Plugins now get their own changelogs according to project conventions.
 | 
						|
. Convert tokens to use instanceof, reducing memory footprint and
 | 
						|
  improving comparison speed.
 | 
						|
. Dry runs now supported in SimpleTest; testing facilities improved
 | 
						|
. Bootstrap class added for handling autoloading functionality
 | 
						|
. Implemented recursive glob at FSTools->globr
 | 
						|
. ConfigSchema now has instance methods for all corresponding define*
 | 
						|
  static methods.
 | 
						|
. A couple of new historical maintenance scripts were added.
 | 
						|
. HTMLPurifier/HTMLModule/Tidy/XHTMLAndHTML4.php split into two files
 | 
						|
. tests/index.php can now be run from any directory.
 | 
						|
. HTMLPurifier_Token subclasses split into seperate files
 | 
						|
. HTMLPURIFIER_PREFIX now is defined in Bootstrap.php, NOT HTMLPurifier.php
 | 
						|
. HTMLPURIFIER_PREFIX can now be defined outside of HTML Purifier
 | 
						|
. New --php=php flag added, allows PHP executable to be specified (command
 | 
						|
  line only!)
 | 
						|
. htmlpurifier_add_test() preferred method to translate test files in to
 | 
						|
  classes, because it handles PHPT files too.
 | 
						|
. Debugger class is deprecated and will be removed soon.
 | 
						|
. Command line argument parsing for testing scripts revamped, now --opt value
 | 
						|
  format is supported.
 | 
						|
. Smoketests now cleanup after magic quotes
 | 
						|
. Generator now can output comments (however, comments are still stripped
 | 
						|
  from HTML Purifier output)
 | 
						|
. HTMLPurifier_ConfigSchema->validate() deprecated in favor of
 | 
						|
  HTMLPurifier_VarParser->parse()
 | 
						|
. Integers auto-cast into float type by VarParser.
 | 
						|
. HTMLPURIFIER_STRICT removed; no validation is performed on runtime, only
 | 
						|
  during cache generation
 | 
						|
. Reordered script calls in maintenance/flush.php
 | 
						|
. Command line scripts now honor exit codes
 | 
						|
. When --flush fails in unit testers, abort tests and print message
 | 
						|
. Improved documentation in docs/dev-flush.html about the maintenance scripts
 | 
						|
. copy() methods removed in favor of clone keyword
 | 
						|
 | 
						|
3.0.0, released 2008-01-06
 | 
						|
# HTML Purifier is PHP 5 only! The 2.1.x branch will be maintained
 | 
						|
  until PHP 4 is completely deprecated, but no new features will be added
 | 
						|
  to it.
 | 
						|
  + Visibility declarations added
 | 
						|
  + Constructor methods renamed to __construct()
 | 
						|
  + PHP4 reference cruft removed (in progress)
 | 
						|
! CSS properties are now case-insensitive
 | 
						|
! DefinitionCacheFactory now can register new implementations
 | 
						|
! New HTMLPurifier_Filter_ExtractStyleBlocks for extracting <style> from
 | 
						|
  documents and cleaning their contents up. Requires the CSSTidy library
 | 
						|
  <http://csstidy.sourceforge.net/>. You can access the blocks with the
 | 
						|
  'StyleBlocks' Context variable ($purifier->context->get('StyleBlocks')).
 | 
						|
  The output CSS can also be "scoped" for a specific element, use:
 | 
						|
  %Filter.ExtractStyleBlocksScope
 | 
						|
! Experimental support for some proprietary CSS attributes allowed:
 | 
						|
  opacity (and all of the browser-specific equivalents) and scrollbar colors.
 | 
						|
  Enable by setting %CSS.Proprietary to true.
 | 
						|
- Colors missing # but in hex form will be corrected
 | 
						|
- CSS Number algorithm improved
 | 
						|
- Unit testing and multi-testing now on steroids: command lines,
 | 
						|
  XML output, and other goodies now added.
 | 
						|
. Unit tests for Injector improved
 | 
						|
. New classes:
 | 
						|
  + HTMLPurifier_AttrDef_CSS_AlphaValue
 | 
						|
  + HTMLPurifier_AttrDef_CSS_Filter
 | 
						|
. Multitest now has a file docblock
 | 
						|
 | 
						|
2.1.3, released 2007-11-05
 | 
						|
! tests/multitest.php allows you to test multiple versions by running
 | 
						|
  tests/index.php through multiple interpreters using `phpv` shell
 | 
						|
  script (you must provide this script!)
 | 
						|
- Fixed poor include ordering for Email URI AttrDefs, causes fatal errors
 | 
						|
  on some systems.
 | 
						|
- Injector algorithm further refined: off-by-one error regarding skip
 | 
						|
  counts for dormant injectors fixed
 | 
						|
- Corrective blockquote definition now enabled for HTML 4.01 Strict
 | 
						|
- Fatal error when <img> tag (or any other element with required attributes)
 | 
						|
  has 'id' attribute fixed, thanks NykO18 for reporting
 | 
						|
- Fix warning emitted when a non-supported URI scheme is passed to the
 | 
						|
  MakeAbsolute URIFilter, thanks NykO18 (again)
 | 
						|
- Further refine AutoParagraph injector. Behavior inside of elements
 | 
						|
  allowing paragraph tags clarified: only inline content delimeted by
 | 
						|
  double newlines (not block elements) are paragraphed.
 | 
						|
- Buggy treatment of end tags of elements that have required attributes
 | 
						|
  fixed (does not manifest on default tag-set)
 | 
						|
- Spurious internal content reorganization error suppressed
 | 
						|
- HTMLDefinition->addElement now returns a reference to the created
 | 
						|
  element object, as implied by the documentation
 | 
						|
- Phorum mod's HTML Purifier help message expanded (unreleased elsewhere)
 | 
						|
- Fix a theoretical class of infinite loops from DirectLex reported
 | 
						|
  by Nate Abele
 | 
						|
- Work around unnecessary DOMElement type-cast in PH5P that caused errors
 | 
						|
  in PHP 5.1
 | 
						|
- Work around PHP 4 SimpleTest lack-of-error complaining for one-time-only
 | 
						|
  HTMLDefinition errors, this may indicate problems with error-collecting
 | 
						|
  facilities in PHP 5
 | 
						|
- Make ErrorCollectorEMock work in both PHP 4 and PHP 5
 | 
						|
- Make PH5P work with PHP 5.0 by removing unnecessary array parameter typedef
 | 
						|
. %Core.AcceptFullDocuments renamed to %Core.ConvertDocumentToFragment
 | 
						|
  to better communicate its purpose
 | 
						|
. Error unit tests can now specify the expectation of no errors. Future
 | 
						|
  iterations of the harness will be extremely strict about what errors
 | 
						|
  are allowed
 | 
						|
. Extend Injector hooks to allow for more powerful injector routines
 | 
						|
. HTMLDefinition->addBlankElement created, as according to the HTMLModule
 | 
						|
  method
 | 
						|
. Doxygen configuration file updated, with minor improvements
 | 
						|
. Test runner now checks for similarly named files in conf/ directory too.
 | 
						|
. Minor cosmetic change to flush-definition-cache.php: trailing newline is
 | 
						|
  outputted
 | 
						|
. Maintenance script for generating PH5P patch added, original PH5P source
 | 
						|
  file also added under version control
 | 
						|
. Full unit test runner script title made more descriptive with PHP version
 | 
						|
. Updated INSTALL file to state that 4.3.7 is the earliest version we
 | 
						|
  are actively testing
 | 
						|
 | 
						|
2.1.2, released 2007-09-03
 | 
						|
! Implemented Object module for trusted users
 | 
						|
! Implemented experimental HTML5 parsing mode using PH5P. To use, add
 | 
						|
  this to your code:
 | 
						|
        require_once 'HTMLPurifier/Lexer/PH5P.php';
 | 
						|
        $config->set('Core', 'LexerImpl', 'PH5P');
 | 
						|
  Note that this Lexer introduces some classes not in the HTMLPurifier
 | 
						|
  namespace.  Also, this is PHP5 only.
 | 
						|
! CSS property border-spacing implemented
 | 
						|
- Fix non-visible parsing error in DirectLex with empty tags that have
 | 
						|
  slashes inside attribute values.
 | 
						|
- Fix typo in CSS definition: border-collapse:seperate; was incorrectly
 | 
						|
  accepted as valid CSS. Usually non-visible, because this styling is the
 | 
						|
  default for tables in most browsers. Thanks Brett Zamir for pointing
 | 
						|
  this out.
 | 
						|
- Fix validation errors in configuration form
 | 
						|
- Hammer out a bunch of edge-case bugs in the standalone distribution
 | 
						|
- Inclusion reflection removed from URISchemeRegistry; you must manually
 | 
						|
  include any new schema files you wish to use
 | 
						|
- Numerous typo fixes in documentation thanks to Brett Zamir
 | 
						|
. Unit test refactoring for one logical test per test function
 | 
						|
. Config and context parameters in ComplexHarness deprecated: instead, edit
 | 
						|
  the $config and $context member variables
 | 
						|
. HTML wrapper in DOMLex now takes DTD identifiers into account; doesn't
 | 
						|
  really make a difference, but is good for completeness sake
 | 
						|
. merge-library.php script refactored for greater code reusability and
 | 
						|
  PHP4 compatibility
 | 
						|
 | 
						|
2.1.1, released 2007-08-04
 | 
						|
- Fix show-stopper bug in %URI.MakeAbsolute functionality
 | 
						|
- Fix PHP4 syntax error in standalone version
 | 
						|
. Add prefix directory to include path for standalone, this prevents
 | 
						|
  other installations from clobbering the standalone's URI schemes
 | 
						|
. Single test methods can be invoked by prefixing with __only
 | 
						|
 | 
						|
2.1.0, released 2007-08-02
 | 
						|
# flush-htmldefinition-cache.php superseded in favor of a generic
 | 
						|
  flush-definition-cache.php script, you can clear a specific cache
 | 
						|
  by passing its name as a parameter to the script
 | 
						|
! Phorum mod implemented for HTML Purifier
 | 
						|
! With %Core.AggressivelyFixLt, <3 and similar emoticons no longer
 | 
						|
  trigger HTML removal in PHP5 (DOMLex). This directive is not necessary
 | 
						|
  for PHP4 (DirectLex).
 | 
						|
! Standalone file now available, which greatly reduces the amount of
 | 
						|
  includes (although there are still a few files that reside in the
 | 
						|
  standalone folder)
 | 
						|
! Relative URIs can now be transformed into their absolute equivalents
 | 
						|
  using %URI.Base and %URI.MakeAbsolute
 | 
						|
! Ruby implemented for XHTML 1.1
 | 
						|
! You can now define custom URI filtering behavior, see enduser-uri-filter.html
 | 
						|
  for more details
 | 
						|
! UTF-8 font names now supported in CSS
 | 
						|
- AutoFormatters emit friendly error messages if tags or attributes they
 | 
						|
  need are not allowed
 | 
						|
- ConfigForm's compactification of directive names is now configurable
 | 
						|
- AutoParagraph autoformatter algorithm refined after field-testing
 | 
						|
- XHTML 1.1 now applies XHTML 1.0 Strict cleanup routines, namely
 | 
						|
  blockquote wrapping
 | 
						|
- Contents of <style> tags removed by default when tags are removed
 | 
						|
. HTMLPurifier_Config->getSerial() implemented, this is extremely useful
 | 
						|
  for output cache invalidation
 | 
						|
. ConfigForm printer now can retrieve CSS and JS files as strings, in
 | 
						|
  case HTML Purifier's directory is not publically accessible
 | 
						|
. Introduce new text/itext configuration directive values: these represent
 | 
						|
  longer strings that would be more appropriately edited with a textarea
 | 
						|
. Allow newlines to act as separators for lists, hashes, lookups and
 | 
						|
  %HTML.Allowed
 | 
						|
. ConfigForm generates textareas instead of text inputs for lists, hashes,
 | 
						|
  lookups, text and itext fields
 | 
						|
. Hidden element content removal genericized: %Core.HiddenElements can
 | 
						|
  be used to customize this behavior, by default <script> and <style> are
 | 
						|
  hidden
 | 
						|
. Added HTMLPURIFIER_PREFIX constant, should be used instead of dirname(__FILE__)
 | 
						|
. Custom ChildDef added to default include list
 | 
						|
. URIScheme reflection improved: will not attempt to include file if class
 | 
						|
  already exists. May clobber autoload, so I need to keep an eye on it
 | 
						|
. ConfigSchema heavily optimized, will only collect information and validate
 | 
						|
  definitions when HTMLPURIFIER_SCHEMA_STRICT is true.
 | 
						|
. AttrDef_URI unit tests and implementation refactored
 | 
						|
. benchmarks/ directory now protected from public view with .htaccess file;
 | 
						|
  run the tests via command line
 | 
						|
. URI scheme is munged off if there is no authority and the scheme is the
 | 
						|
  default one
 | 
						|
. All unit tests inherit from HTMLPurifier_Harness, not UnitTestCase
 | 
						|
. Interface for URIScheme changed
 | 
						|
. Generic URI object to hold components of URI added, most systems involved
 | 
						|
  in URI validation have been migrated to use it
 | 
						|
. Custom filtering for URIs factored out to URIDefinition interface for
 | 
						|
  maximum extensibility
 | 
						|
 | 
						|
2.0.1, released 2007-06-27
 | 
						|
! Tag auto-closing now based on a ChildDef heuristic rather than a
 | 
						|
  manually set auto_close array; some behavior may change
 | 
						|
! Experimental AutoFormat functionality added: auto-paragraph and
 | 
						|
  linkify your HTML input by setting %AutoFormat.AutoParagraph and
 | 
						|
  %AutoFormat.Linkify to true
 | 
						|
! Newlines normalized internally, and then converted back to the
 | 
						|
  value of PHP_EOL. If this is not desired, set your newline format
 | 
						|
  using %Output.Newline.
 | 
						|
! Beta error collection, messages are implemented for the most generic
 | 
						|
  cases involving Lexing or Strategies
 | 
						|
- Clean up special case code for <script> tags
 | 
						|
- Reorder includes for DefinitionCache decorators, fixes a possible
 | 
						|
  missing class error
 | 
						|
- Fixed bug where manually modified definitions were not saved via cache
 | 
						|
  (mostly harmless, except for the fact that it would be a little slower)
 | 
						|
- Configuration objects with different serials do not clobber each
 | 
						|
  others when revision numbers are unequal
 | 
						|
- Improve Serializer DefinitionCache directory permissions checks
 | 
						|
- DefinitionCache no longer throws errors when it encounters old
 | 
						|
  serial files that do not conform to the current style
 | 
						|
- Stray xmlns attributes removed from configuration documentation
 | 
						|
- configForm.php smoketest no longer has XSS vulnerability due to
 | 
						|
  unescaped print_r output
 | 
						|
- Printer adheres to configuration's directives on output format
 | 
						|
- Fix improperly named form field in ConfigForm printer
 | 
						|
. Rewire some test-cases to swallow errors rather than expect them
 | 
						|
. HTMLDefinition printer updated with some of the new attributes
 | 
						|
. DefinitionCache keys reordered to reflect precedence: version number,
 | 
						|
  hash, then revision number
 | 
						|
. %Core.DefinitionCache renamed to %Cache.DefinitionImpl
 | 
						|
. Interlinking in configuration documentation added using
 | 
						|
  Injector_PurifierLinkify
 | 
						|
. Directives now keep track of aliases to themselves
 | 
						|
. Error collector now requires a severity to be passed, use PHP's internal
 | 
						|
  error constants for this
 | 
						|
. HTMLPurifier_Config::getAllowedDirectivesForForm implemented, allows
 | 
						|
  much easier selective embedding of configuration values
 | 
						|
. Doctype objects now accept public and system DTD identifiers
 | 
						|
. %HTML.Doctype is now constrained by specific values, to specify a custom
 | 
						|
  doctype use new %HTML.CustomDoctype
 | 
						|
. ConfigForm truncates long directives to keep the form small, and does
 | 
						|
  not re-output namespaces
 | 
						|
 | 
						|
2.0.0, released 2007-06-20
 | 
						|
# Completely refactored HTMLModuleManager, decentralizing safety
 | 
						|
  information
 | 
						|
# Transform modules changed to Tidy modules, which offer more flexibility
 | 
						|
  and better modularization
 | 
						|
# Configuration object now finalizes itself when a read operation is
 | 
						|
  performed on it, ensuring that its internal state stays consistent.
 | 
						|
  To revert this behavior, you can set the $autoFinalize member variable
 | 
						|
  off, but it's not recommended.
 | 
						|
# New compact syntax for AttrDef objects that can be used to instantiate
 | 
						|
  new objects via make()
 | 
						|
# Definitions (esp. HTMLDefinition) are now cached for a significant
 | 
						|
  performance boost. You can disable caching by setting %Core.DefinitionCache
 | 
						|
  to null. You CANNOT edit raw definitions without setting the corresponding
 | 
						|
  DefinitionID directive (%HTML.DefinitionID for HTMLDefinition).
 | 
						|
# Contents between <script> tags are now completely removed if <script>
 | 
						|
  is not allowed
 | 
						|
# Prototype-declarations for Lexer removed in favor of configuration
 | 
						|
  determination of Lexer implementations.
 | 
						|
! HTML Purifier now works in PHP 4.3.2.
 | 
						|
! Configuration form-editing API makes tweaking HTMLPurifier_Config a
 | 
						|
  breeze!
 | 
						|
! Configuration directives that accept hashes now allow new string
 | 
						|
  format: key1:value1,key2:value2
 | 
						|
! ConfigDoc now factored into OOP design
 | 
						|
! All deprecated elements now natively supported
 | 
						|
! Implement TinyMCE styled whitelist specification format in
 | 
						|
  %HTML.Allowed
 | 
						|
! Config object gives more friendly error messages when things go wrong
 | 
						|
! Advanced API implemented: easy functions for creating elements (addElement)
 | 
						|
  and attributes (addAttribute) on HTMLDefinition
 | 
						|
! Add native support for required attributes
 | 
						|
- Deprecated and removed EnableRedundantUTF8Cleaning. It didn't even work!
 | 
						|
- DOMLex will not emit errors when a custom error handler that does not
 | 
						|
  honor error_reporting is used
 | 
						|
- StrictBlockquote child definition refrains from wrapping whitespace
 | 
						|
  in tags now.
 | 
						|
- Bug resulting from tag transforms to non-allowed elements fixed
 | 
						|
- ChildDef_Custom's regex generation has been improved, removing several
 | 
						|
  false positives
 | 
						|
. Unit test for ElementDef created, ElementDef behavior modified to
 | 
						|
  be more flexible
 | 
						|
. Added convenience functions for HTMLModule constructors
 | 
						|
. AttrTypes now has accessor functions that should be used instead
 | 
						|
  of directly manipulating info
 | 
						|
. TagTransform_Center deprecated in favor of generic TagTransform_Simple
 | 
						|
. Add extra protection in AttrDef_URI against phantom Schemes
 | 
						|
. Doctype object added to HTMLDefinition which describes certain aspects
 | 
						|
  of the operational document type
 | 
						|
. Lexer is now pre-emptively included, with a conditional include for the
 | 
						|
  PHP5 only version.
 | 
						|
. HTMLDefinition and CSSDefinition have a common parent class: Definition.
 | 
						|
. DirectLex can now track line-numbers
 | 
						|
. Preliminary error collector is in place, although no code actually reports
 | 
						|
  errors yet
 | 
						|
. Factor out most of ValidateAttributes to new AttrValidator class
 | 
						|
 | 
						|
1.6.1, released 2007-05-05
 | 
						|
! Support for more deprecated attributes via transformations:
 | 
						|
  + hspace and vspace in img
 | 
						|
  + size and noshade in hr
 | 
						|
  + nowrap in td
 | 
						|
  + clear in br
 | 
						|
  + align in caption, table, img and hr
 | 
						|
  + type in ul, ol and li
 | 
						|
! DirectLex now preserves text in which a < bracket is followed by
 | 
						|
  a non-alphanumeric character. This means that certain emoticons
 | 
						|
  are now preserved.
 | 
						|
! %Core.RemoveInvalidImg is now operational, when set to false invalid
 | 
						|
  images will hang around with an empty src
 | 
						|
! target attribute in a tag supported, use %Attr.AllowedFrameTargets
 | 
						|
  to enable
 | 
						|
! CSS property white-space now allows nowrap (supported in all modern
 | 
						|
  browsers) but not others (which have spotty browser implementations)
 | 
						|
! XHTML 1.1 mode now sort-of works without any fatal errors, and
 | 
						|
  lang is now moved over to xml:lang.
 | 
						|
! Attribute transformation smoketest available at smoketests/attrTransform.php
 | 
						|
! Transformation of font's size attribute now handles super-large numbers
 | 
						|
- Possibly fatal bug with __autoload() fixed in module manager
 | 
						|
- Invert HTMLModuleManager->addModule() processing order to check
 | 
						|
  prefixes first and then the literal module
 | 
						|
- Empty strings get converted to empty arrays instead of arrays with
 | 
						|
  an empty string in them.
 | 
						|
- Merging in attribute lists now works.
 | 
						|
. Demo script removed: it has been added to the website's repository
 | 
						|
. Basic.php script modified to work out of the box
 | 
						|
. Refactor AttrTransform classes to reduce duplication
 | 
						|
. AttrTransform_TextAlign axed in favor of a more general
 | 
						|
  AttrTransform_EnumToCSS, refer to HTMLModule/TransformToStrict.php to
 | 
						|
  see how the new equivalent is implemented
 | 
						|
. Unit tests now use exclusively assertIdentical
 | 
						|
 | 
						|
1.6.0, released 2007-04-01
 | 
						|
! Support for most common deprecated attributes via transformations:
 | 
						|
  + bgcolor in td, th, tr and table
 | 
						|
  + border in img
 | 
						|
  + name in a and img
 | 
						|
  + width in td, th and hr
 | 
						|
  + height in td, th
 | 
						|
! Support for CSS attribute 'height' added
 | 
						|
! Support for rel and rev attributes in a tags added, use %Attr.AllowedRel
 | 
						|
  and %Attr.AllowedRev to activate
 | 
						|
- You can define ID blacklists using regular expressions via
 | 
						|
  %Attr.IDBlacklistRegexp
 | 
						|
- Error messages are emitted when you attempt to "allow" elements or
 | 
						|
  attributes that HTML Purifier does not support
 | 
						|
- Fix segfault in unit test. The problem is not very reproduceable and
 | 
						|
  I don't know what causes it, but a six line patch fixed it.
 | 
						|
 | 
						|
1.5.0, released 2007-03-23
 | 
						|
! Added a rudimentary I18N and L10N system modeled off MediaWiki. It
 | 
						|
  doesn't actually do anything yet, but keep your eyes peeled.
 | 
						|
! docs/enduser-utf8.html explains how to use UTF-8 and HTML Purifier
 | 
						|
! Newly structured HTMLDefinition modeled off of XHTML 1.1 modules.
 | 
						|
  I am loathe to release beta quality APIs, but this is exactly that;
 | 
						|
  don't use the internal interfaces if you're not willing to do migration
 | 
						|
  later on.
 | 
						|
- Allow 'x' subtag in language codes
 | 
						|
- Fixed buggy chameleon-support for ins and del
 | 
						|
. Added support for IDREF attributes (i.e. for)
 | 
						|
. Renamed HTMLPurifier_AttrDef_Class to HTMLPurifier_AttrDef_Nmtokens
 | 
						|
. Removed context variable ParentType, replaced with IsInline, which
 | 
						|
  is false when you're not inline and an integer of the parent that
 | 
						|
  caused you to become inline when you are (so possibly zero)
 | 
						|
. Removed ElementDef->type in favor of ElementDef->descendants_are_inline
 | 
						|
  and HTMLDefinition->content_sets
 | 
						|
. StrictBlockquote now reports what elements its supposed to allow,
 | 
						|
  rather than what it does allow
 | 
						|
. Removed HTMLDefinition->info_flow_elements in favor of
 | 
						|
  HTMLDefinition->content_sets['Flow']
 | 
						|
. Removed redundant "exclusionary" definitions from DTD roster
 | 
						|
. StrictBlockquote now requires a construction parameter as if it
 | 
						|
  were an Required ChildDef, this is the "real" set of allowed elements
 | 
						|
. AttrDef partitioned into HTML, CSS and URI segments
 | 
						|
. Modify Youtube filter regexp to be multiline
 | 
						|
. Require both PHP5 and DOM extension in order to use DOMLex, fixes
 | 
						|
  some edge cases where a DOMDocument class exists in a PHP4 environment
 | 
						|
  due to DOM XML extension.
 | 
						|
 | 
						|
1.4.1, released 2007-01-21
 | 
						|
! docs/enduser-youtube.html updated according to new functionality
 | 
						|
- YouTube IDs can have underscores and dashes
 | 
						|
 | 
						|
1.4.0, released 2007-01-21
 | 
						|
! Implemented list-style-image, URIs now allowed in list-style
 | 
						|
! Implemented background-image, background-repeat, background-attachment
 | 
						|
  and background-position CSS properties. Shorthand property background
 | 
						|
  supports all of these properties.
 | 
						|
! Configuration documentation looks nicer
 | 
						|
! Added %Core.EscapeNonASCIICharacters to workaround loss of Unicode
 | 
						|
  characters while %Core.Encoding is set to a non-UTF-8 encoding.
 | 
						|
! Support for configuration directive aliases added
 | 
						|
! Config object can now be instantiated from ini files
 | 
						|
! YouTube preservation code added to the core, with two lines of code
 | 
						|
  you can add it as a filter to your code. See smoketests/preserveYouTube.php
 | 
						|
  for sample code.
 | 
						|
! Moved SLOW to docs/enduser-slow.html and added code examples
 | 
						|
- Replaced version check with functionality check for DOM (thanks Stephen
 | 
						|
  Khoo)
 | 
						|
. Added smoketest 'all.php', which loads all other smoketests via frames
 | 
						|
. Implemented AttrDef_CSSURI for url(http://google.com) style declarations
 | 
						|
. Added convenient single test selector form on test runner
 | 
						|
 | 
						|
1.3.2, released 2006-12-25
 | 
						|
! HTMLPurifier object now accepts configuration arrays, no need to manually
 | 
						|
  instantiate a configuration object
 | 
						|
! Context object now accessible to outside
 | 
						|
! Added enduser-youtube.html, explains how to embed YouTube videos. See
 | 
						|
  also corresponding smoketest preserveYouTube.php.
 | 
						|
! Added purifyArray(), which takes a list of HTML and purifies it all
 | 
						|
! Added static member variable $version to HTML Purifier with PHP-compatible
 | 
						|
  version number string.
 | 
						|
- Fixed fatal error thrown by upper-cased language attributes
 | 
						|
- printDefinition.php: added labels, added better clarification
 | 
						|
. HTMLPurifier_Config::create() added, takes mixed variable and converts into
 | 
						|
  a HTMLPurifier_Config object.
 | 
						|
 | 
						|
1.3.1, released 2006-12-06
 | 
						|
! Added HTMLPurifier.func.php stub for a convenient function to call the library
 | 
						|
- Fixed bug in RemoveInvalidImg code that caused all images to be dropped
 | 
						|
  (thanks to .mario for reporting this)
 | 
						|
. Standardized all attribute handling variables to attr, made it plural
 | 
						|
 | 
						|
1.3.0, released 2006-11-26
 | 
						|
# Invalid images are now removed, rather than replaced with a dud
 | 
						|
  <img src="" alt="Invalid image" />. Previous behavior can be restored
 | 
						|
  with new directive %Core.RemoveInvalidImg set to false.
 | 
						|
! (X)HTML Strict now supported
 | 
						|
  + Transparently handles inline elements in block context (blockquote)
 | 
						|
! Added GET method to demo for easier validation, added 50kb max input size
 | 
						|
! New directive %HTML.BlockWrapper, for block-ifying inline elements
 | 
						|
! New directive %HTML.Parent, allows you to only allow inline content
 | 
						|
! New directives %HTML.AllowedElements and %HTML.AllowedAttributes to let
 | 
						|
  users narrow the set of allowed tags
 | 
						|
! <li value="4"> and <ul start="2"> now allowed in loose mode
 | 
						|
! New directives %URI.DisableExternalResources and %URI.DisableResources
 | 
						|
! New directive %Attr.DisableURI, which eliminates all hyperlinking
 | 
						|
! New directive %URI.Munge, munges URI so you can use some sort of redirector
 | 
						|
  service to avoid PageRank leaks or warn users that they are exiting your site.
 | 
						|
! Added spiffy new smoketest printDefinition.php, which lets you twiddle with
 | 
						|
  the configuration settings and see how the internal rules are affected.
 | 
						|
! New directive %URI.HostBlacklist for blocking links to bad hosts.
 | 
						|
  xssAttacks.php smoketest updated accordingly.
 | 
						|
- Added missing type to ChildDef_Chameleon
 | 
						|
- Remove Tidy option from demo if there is not Tidy available
 | 
						|
. ChildDef_Required guards against empty tags
 | 
						|
. Lookup table HTMLDefinition->info_flow_elements added
 | 
						|
. Added peace-of-mind variable initialization to Strategy_FixNesting
 | 
						|
. Added HTMLPurifier->info_parent_def, parent child processing made special
 | 
						|
. Added internal documents briefly summarizing future progression of HTML
 | 
						|
. HTMLPurifier_Config->getBatch($namespace) added
 | 
						|
. More lenient casting to bool from string in HTMLPurifier_ConfigSchema
 | 
						|
. Refactored ChildDef classes into their own files
 | 
						|
 | 
						|
1.2.0, released 2006-11-19
 | 
						|
# ID attributes now disabled by default. New directives:
 | 
						|
  + %HTML.EnableAttrID - restores old behavior by allowing IDs
 | 
						|
  + %Attr.IDPrefix - %Attr.IDBlacklist alternative that munges all user IDs
 | 
						|
    so that they don't collide with your IDs
 | 
						|
  + %Attr.IDPrefixLocal - Same as above, but for when there are multiple
 | 
						|
    instances of user content on the page
 | 
						|
  + Profuse documentation on how to use these available in docs/enduser-id.txt
 | 
						|
! Added MODx plugin <http://modxcms.com/forums/index.php/topic,6604.0.html>
 | 
						|
! Added percent encoding normalization
 | 
						|
! XSS attacks smoketest given facelift
 | 
						|
! Configuration documentation now has table of contents
 | 
						|
! Added %URI.DisableExternal, which prevents links to external websites.  You
 | 
						|
  can also use %URI.Host to permit absolute linking to subdomains
 | 
						|
! Non-accessible resources (ex. mailto) blocked from embedded URIs (img src)
 | 
						|
- Type variable in HTMLDefinition was not being set properly, fixed
 | 
						|
- Documentation updated
 | 
						|
  + TODO added request Phalanger
 | 
						|
  + TODO added request Native compression
 | 
						|
  + TODO added request Remove redundant tags
 | 
						|
  + TODO added possible plaintext formatter for HTML Purifier documentation
 | 
						|
  + Updated ConfigDoc TODO
 | 
						|
  + Improved inline comments in AttrDef/Class.php, AttrDef/CSS.php
 | 
						|
    and AttrDef/Host.php
 | 
						|
  + Revamped documentation into HTML, along with misc updates
 | 
						|
- HTMLPurifier_Context doesn't throw a variable reference error if you attempt
 | 
						|
  to retrieve a non-existent variable
 | 
						|
. Switched to purify()-wide Context object registry
 | 
						|
. Refactored unit tests to minimize duplication
 | 
						|
. XSS attack sheet updated
 | 
						|
. configdoc.xml now has xml:space attached to default value nodes
 | 
						|
. Allow configuration directives to permit null values
 | 
						|
. Cleaned up test-cases to remove unnecessary swallowErrors()
 | 
						|
 | 
						|
1.1.2, released 2006-09-30
 | 
						|
! Add HTMLPurifier.auto.php stub file that configures include_path
 | 
						|
- Documentation updated
 | 
						|
  + INSTALL document rewritten
 | 
						|
  + TODO added semi-lossy conversion
 | 
						|
  + API Doxygen docs' file exclusions updated
 | 
						|
  + Added notes on HTML versus XML attribute whitespace handling
 | 
						|
  + Noted that HTMLPurifier_ChildDef_Custom isn't being used
 | 
						|
  + Noted that config object's definitions are cached versions
 | 
						|
- Fixed lack of attribute parsing in HTMLPurifier_Lexer_PEARSax3
 | 
						|
- ftp:// URIs now have their typecodes checked
 | 
						|
- Hooked up HTMLPurifier_ChildDef_Custom's unit tests (they weren't being run)
 | 
						|
. Line endings standardized throughout project (svn:eol-style standardized)
 | 
						|
. Refactored parseData() to general Lexer class
 | 
						|
. Tester named "HTML Purifier" not "HTMLPurifier"
 | 
						|
 | 
						|
1.1.1, released 2006-09-24
 | 
						|
! Configuration option to optionally Tidy up output for indentation to make up
 | 
						|
  for dropped whitespace by DOMLex (pretty-printing for the entire application
 | 
						|
  should be done by a page-wide Tidy)
 | 
						|
- Various documentation updates
 | 
						|
- Fixed parse error in configuration documentation script
 | 
						|
- Fixed fatal error in benchmark scripts, slightly augmented
 | 
						|
- As far as possible, whitespace is preserved in-between table children
 | 
						|
- Sample test-settings.php file included
 | 
						|
 | 
						|
1.1.0, released 2006-09-16
 | 
						|
! Directive documentation generation using XSLT
 | 
						|
! XHTML can now be turned off, output becomes <br>
 | 
						|
- Made URI validator more forgiving: will ignore leading and trailing
 | 
						|
  quotes, apostrophes and less than or greater than signs.
 | 
						|
- Enforce alphanumeric namespace and directive names for configuration.
 | 
						|
- Table child definition made more flexible, will fix up poorly ordered elements
 | 
						|
. Renamed ConfigDef to ConfigSchema
 | 
						|
 | 
						|
1.0.1, released 2006-09-04
 | 
						|
- Fixed slight bug in DOMLex attribute parsing
 | 
						|
- Fixed rejection of case-insensitive configuration values when there is a
 | 
						|
  set of allowed values.  This manifested in %Core.Encoding.
 | 
						|
- Fixed rejection of inline style declarations that had lots of extra
 | 
						|
  space in them.  This manifested in TinyMCE.
 | 
						|
 | 
						|
1.0.0, released 2006-09-01
 | 
						|
! Shorthand CSS properties implemented: font, border, background, list-style
 | 
						|
! Basic color keywords translated into hexadecimal values
 | 
						|
! Table CSS properties implemented
 | 
						|
! Support for charsets other than UTF-8 (defined by iconv)
 | 
						|
! Malformed UTF-8 and non-SGML character detection and cleaning implemented
 | 
						|
- Fixed broken numeric entity conversion
 | 
						|
- API documentation completed
 | 
						|
. (HTML|CSS)Definition de-singleton-ized
 | 
						|
 | 
						|
1.0.0beta, released 2006-08-16
 | 
						|
! First public release, most functionality implemented. Notable omissions are:
 | 
						|
  + Shorthand CSS properties
 | 
						|
  + Table CSS properties
 | 
						|
  + Deprecated attribute transformations
 | 
						|
 | 
						|
    vim: et sw=4 sts=4
 |