diff --git a/library/HTMLPurifier.php b/library/HTMLPurifier.php
index 88ced00f..c758b439 100644
--- a/library/HTMLPurifier.php
+++ b/library/HTMLPurifier.php
@@ -109,7 +109,7 @@ class HTMLPurifier
$config = $config ? HTMLPurifier_Config::create($config) : $this->config;
- $context =& new HTMLPurifier_Context();
+ $context = new HTMLPurifier_Context();
$html = $this->encoder->convertToUTF8($html, $config, $context);
// purified HTML
diff --git a/library/HTMLPurifier/AttrDef/URI.php b/library/HTMLPurifier/AttrDef/URI.php
index d5a36434..a3ce6ded 100644
--- a/library/HTMLPurifier/AttrDef/URI.php
+++ b/library/HTMLPurifier/AttrDef/URI.php
@@ -139,10 +139,10 @@ class HTMLPurifier_AttrDef_URI extends HTMLPurifier_AttrDef
// no need to validate the scheme's fmt since we do that when we
// retrieve the specific scheme object from the registry
$scheme = ctype_lower($scheme) ? $scheme : strtolower($scheme);
- $scheme_obj =& $registry->getScheme($scheme, $config, $context);
+ $scheme_obj = $registry->getScheme($scheme, $config, $context);
if (!$scheme_obj) return false; // invalid scheme, clean it out
} else {
- $scheme_obj =& $registry->getScheme(
+ $scheme_obj = $registry->getScheme(
$config->get('URI', 'DefaultScheme'), $config, $context
);
}
diff --git a/library/HTMLPurifier/AttrTransform/BdoDir.php b/library/HTMLPurifier/AttrTransform/BdoDir.php
index dd20f26a..0ea5eb6d 100644
--- a/library/HTMLPurifier/AttrTransform/BdoDir.php
+++ b/library/HTMLPurifier/AttrTransform/BdoDir.php
@@ -20,7 +20,7 @@ HTMLPurifier_ConfigSchema::defineAllowedValues(
class HTMLPurifier_AttrTransform_BdoDir extends HTMLPurifier_AttrTransform
{
- function transform($attr, $config, $context) {
+ function transform($attr, $config, &$context) {
if (isset($attr['dir'])) return $attr;
$attr['dir'] = $config->get('Attr', 'DefaultTextDir');
return $attr;
diff --git a/library/HTMLPurifier/AttrTransform/ImgRequired.php b/library/HTMLPurifier/AttrTransform/ImgRequired.php
index c943d696..4ff356d8 100644
--- a/library/HTMLPurifier/AttrTransform/ImgRequired.php
+++ b/library/HTMLPurifier/AttrTransform/ImgRequired.php
@@ -25,7 +25,7 @@ HTMLPurifier_ConfigSchema::define(
class HTMLPurifier_AttrTransform_ImgRequired extends HTMLPurifier_AttrTransform
{
- function transform($attr, $config, $context) {
+ function transform($attr, $config, &$context) {
$src = true;
if (!isset($attr['src'])) {
diff --git a/library/HTMLPurifier/AttrTransform/Lang.php b/library/HTMLPurifier/AttrTransform/Lang.php
index 97fd8064..acb1786a 100644
--- a/library/HTMLPurifier/AttrTransform/Lang.php
+++ b/library/HTMLPurifier/AttrTransform/Lang.php
@@ -10,7 +10,7 @@ require_once 'HTMLPurifier/AttrTransform.php';
class HTMLPurifier_AttrTransform_Lang extends HTMLPurifier_AttrTransform
{
- function transform($attr, $config, $context) {
+ function transform($attr, $config, &$context) {
$lang = isset($attr['lang']) ? $attr['lang'] : false;
$xml_lang = isset($attr['xml:lang']) ? $attr['xml:lang'] : false;
diff --git a/library/HTMLPurifier/AttrTransform/TextAlign.php b/library/HTMLPurifier/AttrTransform/TextAlign.php
index e42354a0..84e5a016 100644
--- a/library/HTMLPurifier/AttrTransform/TextAlign.php
+++ b/library/HTMLPurifier/AttrTransform/TextAlign.php
@@ -8,7 +8,7 @@ require_once 'HTMLPurifier/AttrTransform.php';
class HTMLPurifier_AttrTransform_TextAlign
extends HTMLPurifier_AttrTransform {
- function transform($attr, $config, $context) {
+ function transform($attr, $config, &$context) {
if (!isset($attr['align'])) return $attr;
diff --git a/library/HTMLPurifier/Config.php b/library/HTMLPurifier/Config.php
index 39f62855..43c5681d 100644
--- a/library/HTMLPurifier/Config.php
+++ b/library/HTMLPurifier/Config.php
@@ -46,6 +46,7 @@ class HTMLPurifier_Config
/**
* Convenience constructor that creates a config object based on a mixed var
+ * @static
* @param mixed $config Variable that defines the state of the config
* object. Can be: a HTMLPurifier_Config() object or
* an array of directives based on loadArray().
@@ -60,6 +61,7 @@ class HTMLPurifier_Config
/**
* Convenience constructor that creates a default configuration object.
+ * @static
* @return Default HTMLPurifier_Config object.
*/
function createDefault() {
@@ -178,4 +180,4 @@ class HTMLPurifier_Config
}
-?>
\ No newline at end of file
+?>
diff --git a/library/HTMLPurifier/ConfigSchema.php b/library/HTMLPurifier/ConfigSchema.php
index 9b3c6e2f..6969c1d2 100644
--- a/library/HTMLPurifier/ConfigSchema.php
+++ b/library/HTMLPurifier/ConfigSchema.php
@@ -67,6 +67,7 @@ class HTMLPurifier_ConfigSchema {
/**
* Retrieves an instance of the application-wide configuration definition.
+ * @static
*/
function &instance($prototype = null) {
static $instance;
@@ -81,6 +82,7 @@ class HTMLPurifier_ConfigSchema {
/**
* Defines a directive for configuration
+ * @static
* @warning Will fail of directive's namespace is defined
* @param $namespace Namespace the directive is in
* @param $name Key of directive
@@ -144,6 +146,7 @@ class HTMLPurifier_ConfigSchema {
/**
* Defines a namespace for directives to be put into.
+ * @static
* @param $namespace Namespace's name
* @param $description Description of the namespace
*/
@@ -169,6 +172,7 @@ class HTMLPurifier_ConfigSchema {
*
* Directive value aliases are convenient for developers because it lets
* them set a directive to several values and get the same result.
+ * @static
* @param $namespace Directive's namespace
* @param $name Name of Directive
* @param $alias Name of aliased value
@@ -200,6 +204,7 @@ class HTMLPurifier_ConfigSchema {
/**
* Defines a set of allowed values for a directive.
+ * @static
* @param $namespace Namespace of directive
* @param $name Name of directive
* @param $allowed_values Arraylist of allowed values
@@ -380,4 +385,4 @@ class HTMLPurifier_ConfigEntity_Directive extends HTMLPurifier_ConfigEntity
}
-?>
\ No newline at end of file
+?>
diff --git a/library/HTMLPurifier/Encoder.php b/library/HTMLPurifier/Encoder.php
index 8465c709..d9cc655c 100644
--- a/library/HTMLPurifier/Encoder.php
+++ b/library/HTMLPurifier/Encoder.php
@@ -48,6 +48,7 @@ class HTMLPurifier_Encoder
* It will parse according to UTF-8 and return a valid UTF8 string, with
* non-SGML codepoints excluded.
*
+ * @static
* @note Just for reference, the non-SGML code points are 0 to 31 and
* 127 to 159, inclusive. However, we allow code points 9, 10
* and 13, which are the tab, line feed and carriage return
@@ -225,6 +226,7 @@ class HTMLPurifier_Encoder
/**
* Translates a Unicode codepoint into its corresponding UTF-8 character.
+ * @static
* @note Based on Feyd's function at
* ,
* which is in public domain.
diff --git a/library/HTMLPurifier/EntityLookup.php b/library/HTMLPurifier/EntityLookup.php
index 9816f865..f950cc22 100644
--- a/library/HTMLPurifier/EntityLookup.php
+++ b/library/HTMLPurifier/EntityLookup.php
@@ -26,6 +26,7 @@ class HTMLPurifier_EntityLookup {
/**
* Retrieves sole instance of the object.
+ * @static
* @param Optional prototype of custom lookup table to overload with.
*/
function instance($prototype = false) {
diff --git a/library/HTMLPurifier/HTMLDefinition.php b/library/HTMLPurifier/HTMLDefinition.php
index 7ca086a9..8ef4fb0e 100644
--- a/library/HTMLPurifier/HTMLDefinition.php
+++ b/library/HTMLPurifier/HTMLDefinition.php
@@ -300,9 +300,6 @@ class HTMLPurifier_HTMLDefinition
$this->info['b']->child =
$this->info['big']->child =
$this->info['small']->child=
- $this->info['u']->child =
- $this->info['s']->child =
- $this->info['strike']->child =
$this->info['bdo']->child =
$this->info['span']->child =
$this->info['dt']->child =
@@ -314,6 +311,12 @@ class HTMLPurifier_HTMLDefinition
$this->info['h5']->child =
$this->info['h6']->child = $e_Inline;
+ if (!$this->strict) {
+ $this->info['u']->child =
+ $this->info['s']->child =
+ $this->info['strike']->child = $e_Inline;
+ }
+
// the only three required definitions, besides custom table code
$this->info['ol']->child =
$this->info['ul']->child = new HTMLPurifier_ChildDef_Required('li');
@@ -355,10 +358,12 @@ class HTMLPurifier_HTMLDefinition
// reuses $e_Inline and $e_Block
foreach ($e_Inline->elements as $name => $bool) {
if ($name == '#PCDATA') continue;
+ if (!isset($this->info[$name])) continue;
$this->info[$name]->type = 'inline';
}
foreach ($e_Block->elements as $name => $bool) {
+ if (!isset($this->info[$name])) continue;
$this->info[$name]->type = 'block';
}
@@ -648,4 +653,4 @@ class HTMLPurifier_ElementDef
}
-?>
\ No newline at end of file
+?>
diff --git a/library/HTMLPurifier/Lexer.php b/library/HTMLPurifier/Lexer.php
index 31d31d27..122bbb5d 100644
--- a/library/HTMLPurifier/Lexer.php
+++ b/library/HTMLPurifier/Lexer.php
@@ -138,6 +138,8 @@ class HTMLPurifier_Lexer
* default with your own implementation. A copy/reference of the prototype
* lexer will now be returned when you request a new lexer.
*
+ * @static
+ *
* @note
* Though it is possible to call this factory method from subclasses,
* such usage is not recommended.
@@ -166,6 +168,7 @@ class HTMLPurifier_Lexer
/**
* Translates CDATA sections into regular sections (through escaping).
*
+ * @static
* @protected
* @param $string HTML string to process.
* @returns HTML with CDATA sections escaped.
@@ -181,6 +184,7 @@ class HTMLPurifier_Lexer
/**
* Callback function for escapeCDATA() that does the work.
*
+ * @static
* @warning Though this is public in order to let the callback happen,
* calling it directly is not recommended.
* @params $matches PCRE matches array, with index 0 the entire match
diff --git a/library/HTMLPurifier/Lexer/DOMLex.php b/library/HTMLPurifier/Lexer/DOMLex.php
index 57720457..dcf3caee 100644
--- a/library/HTMLPurifier/Lexer/DOMLex.php
+++ b/library/HTMLPurifier/Lexer/DOMLex.php
@@ -88,6 +88,11 @@ class HTMLPurifier_Lexer_DOMLex extends HTMLPurifier_Lexer
} elseif ($node->nodeType === XML_COMMENT_NODE) {
$tokens[] = $this->factory->createComment($node->data);
return;
+ } elseif (
+ // not-well tested: there may be other nodes we have to grab
+ $node->nodeType !== XML_ELEMENT_NODE
+ ) {
+ return;
}
$attr = $node->hasAttributes() ?
diff --git a/library/HTMLPurifier/Lexer/PEARSax3.php b/library/HTMLPurifier/Lexer/PEARSax3.php
index ccd201a7..18777ef7 100644
--- a/library/HTMLPurifier/Lexer/PEARSax3.php
+++ b/library/HTMLPurifier/Lexer/PEARSax3.php
@@ -37,7 +37,7 @@ class HTMLPurifier_Lexer_PEARSax3 extends HTMLPurifier_Lexer
$string = $this->normalize($string, $config, $context);
- $parser=& new XML_HTMLSax3();
+ $parser = new XML_HTMLSax3();
$parser->set_object($this);
$parser->set_element_handler('openHandler','closeHandler');
$parser->set_data_handler('dataHandler');
diff --git a/library/HTMLPurifier/Printer/HTMLDefinition.php b/library/HTMLPurifier/Printer/HTMLDefinition.php
index c85585fc..2ec297e7 100644
--- a/library/HTMLPurifier/Printer/HTMLDefinition.php
+++ b/library/HTMLPurifier/Printer/HTMLDefinition.php
@@ -10,10 +10,10 @@ class HTMLPurifier_Printer_HTMLDefinition extends HTMLPurifier_Printer
*/
var $def;
- function render(&$config) {
+ function render($config) {
$ret = '';
$this->config =& $config;
- $this->def =& $config->getHTMLDefinition();
+ $this->def = $config->getHTMLDefinition();
$def =& $this->def;
$ret .= $this->start('div', array('class' => 'HTMLPurifier_Printer'));
diff --git a/library/HTMLPurifier/URISchemeRegistry.php b/library/HTMLPurifier/URISchemeRegistry.php
index d9c25259..82fd9601 100644
--- a/library/HTMLPurifier/URISchemeRegistry.php
+++ b/library/HTMLPurifier/URISchemeRegistry.php
@@ -32,6 +32,7 @@ class HTMLPurifier_URISchemeRegistry
/**
* Retrieve sole instance of the registry.
+ * @static
* @param $prototype Optional prototype to overload sole instance with,
* or bool true to reset to default registry.
* @note Pass a registry object $prototype with a compatible interface and
diff --git a/smoketests/common.php b/smoketests/common.php
index 13cc6e59..ec0267c2 100644
--- a/smoketests/common.php
+++ b/smoketests/common.php
@@ -3,6 +3,7 @@
header('Content-type: text/html; charset=UTF-8');
require_once '../library/HTMLPurifier.auto.php';
+error_reporting(E_ALL);
function escapeHTML($string) {
$string = HTMLPurifier_Encoder::cleanUTF8($string);
diff --git a/tests/Debugger.php b/tests/Debugger.php
index 3213af3c..2ef5ba8e 100644
--- a/tests/Debugger.php
+++ b/tests/Debugger.php
@@ -70,6 +70,9 @@ class Debugger
$this->add_pre = !extension_loaded('xdebug');
}
+ /**
+ * @static
+ */
function &instance() {
static $soleInstance = false;
if (!$soleInstance) $soleInstance = new Debugger();
diff --git a/tests/HTMLPurifier/AttrDef/CompositeTest.php b/tests/HTMLPurifier/AttrDef/CompositeTest.php
index 9c49a289..a61db20c 100644
--- a/tests/HTMLPurifier/AttrDef/CompositeTest.php
+++ b/tests/HTMLPurifier/AttrDef/CompositeTest.php
@@ -28,10 +28,10 @@ class HTMLPurifier_AttrDef_CompositeTest extends HTMLPurifier_AttrDefHarness
// first test: value properly validates on first definition
// so second def is never called
- $def1 =& new HTMLPurifier_AttrDefMock($this);
- $def2 =& new HTMLPurifier_AttrDefMock($this);
+ $def1 = new HTMLPurifier_AttrDefMock($this);
+ $def2 = new HTMLPurifier_AttrDefMock($this);
$defs = array(&$def1, &$def2);
- $def =& new HTMLPurifier_AttrDef_Composite_Testable($defs);
+ $def = new HTMLPurifier_AttrDef_Composite_Testable($defs);
$input = 'FOOBAR';
$output = 'foobar';
$def1_params = array($input, $config, $context);
@@ -47,10 +47,10 @@ class HTMLPurifier_AttrDef_CompositeTest extends HTMLPurifier_AttrDefHarness
// second test, first def fails, second def works
- $def1 =& new HTMLPurifier_AttrDefMock($this);
- $def2 =& new HTMLPurifier_AttrDefMock($this);
+ $def1 = new HTMLPurifier_AttrDefMock($this);
+ $def2 = new HTMLPurifier_AttrDefMock($this);
$defs = array(&$def1, &$def2);
- $def =& new HTMLPurifier_AttrDef_Composite_Testable($defs);
+ $def = new HTMLPurifier_AttrDef_Composite_Testable($defs);
$input = 'BOOMA';
$output = 'booma';
$def_params = array($input, $config, $context);
@@ -67,10 +67,10 @@ class HTMLPurifier_AttrDef_CompositeTest extends HTMLPurifier_AttrDefHarness
// third test, all fail, so composite faiils
- $def1 =& new HTMLPurifier_AttrDefMock($this);
- $def2 =& new HTMLPurifier_AttrDefMock($this);
+ $def1 = new HTMLPurifier_AttrDefMock($this);
+ $def2 = new HTMLPurifier_AttrDefMock($this);
$defs = array(&$def1, &$def2);
- $def =& new HTMLPurifier_AttrDef_Composite_Testable($defs);
+ $def = new HTMLPurifier_AttrDef_Composite_Testable($defs);
$input = 'BOOMA';
$output = false;
$def_params = array($input, $config, $context);
diff --git a/tests/HTMLPurifier/AttrDef/URITest.php b/tests/HTMLPurifier/AttrDef/URITest.php
index a80c436f..f9a9ab41 100644
--- a/tests/HTMLPurifier/AttrDef/URITest.php
+++ b/tests/HTMLPurifier/AttrDef/URITest.php
@@ -206,7 +206,7 @@ class HTMLPurifier_AttrDef_URITest extends HTMLPurifier_AttrDefHarness
$registry =& HTMLPurifier_URISchemeRegistry::instance($fake_registry);
// now, let's add a pseudo-scheme to the registry
- $this->scheme =& new HTMLPurifier_URISchemeMock($this);
+ $this->scheme = new HTMLPurifier_URISchemeMock($this);
// here are the schemes we will support with overloaded mocks
$registry->setReturnReference('getScheme', $this->scheme, array('http', $this->config, $this->context));
diff --git a/tests/HTMLPurifier/ContextTest.php b/tests/HTMLPurifier/ContextTest.php
index 68604d5c..88c0f615 100644
--- a/tests/HTMLPurifier/ContextTest.php
+++ b/tests/HTMLPurifier/ContextTest.php
@@ -20,7 +20,7 @@ class HTMLPurifier_ContextTest extends UnitTestCase
$this->assertFalse($this->context->exists('IDAccumulator'));
- $accumulator =& new HTMLPurifier_IDAccumulatorMock($this);
+ $accumulator = new HTMLPurifier_IDAccumulatorMock($this);
$this->context->register('IDAccumulator', $accumulator);
$this->assertTrue($this->context->exists('IDAccumulator'));
diff --git a/tests/HTMLPurifier/LexerTest.php b/tests/HTMLPurifier/LexerTest.php
index a690466b..3e627dab 100644
--- a/tests/HTMLPurifier/LexerTest.php
+++ b/tests/HTMLPurifier/LexerTest.php
@@ -16,7 +16,10 @@ class HTMLPurifier_LexerTest extends UnitTestCase
$this->DirectLex = new HTMLPurifier_Lexer_DirectLex();
- if ( $GLOBALS['HTMLPurifierTest']['PEAR'] ) {
+ // E_STRICT = 2048, int used for PHP4 compat
+ if ( $GLOBALS['HTMLPurifierTest']['PEAR'] &&
+ ((error_reporting() & 2048) != 2048)
+ ) {
$this->_has_pear = true;
require_once 'HTMLPurifier/Lexer/PEARSax3.php';
$this->PEARSax3 = new HTMLPurifier_Lexer_PEARSax3();