mirror of
https://github.com/ezyang/htmlpurifier.git
synced 2024-12-22 08:21:52 +00:00
[1.7.0] HTML Purifier now works with PHP 4.3.2. Yay!
- Armor some character index checking - Add compatibility stuff for PHP_EOL - Add autoclose for colgroup - Compensate for realpath() quirkiness in old versions - Add flush maintenance script git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@1096 48356398-32a2-884e-a903-53898d9a118a
This commit is contained in:
parent
21ab12a6a8
commit
de23201cbb
2
INSTALL
2
INSTALL
@ -13,7 +13,7 @@ Todo: Convert to using the array syntax for configuration.
|
||||
|
||||
1. Compatibility
|
||||
|
||||
HTML Purifier works in both PHP 4 and PHP 5, from PHP 4.3.9 and up. It has no
|
||||
HTML Purifier works in both PHP 4 and PHP 5, from PHP 4.3.2 and up. It has no
|
||||
core dependencies with other libraries. (Whoopee!)
|
||||
|
||||
Optional extensions are iconv (usually installed) and tidy (also common).
|
||||
|
@ -17,7 +17,7 @@ ce document pour quelques choses.
|
||||
|
||||
1. Compatibilité
|
||||
|
||||
HTML Purifier fonctionne dans PHP 4 et PHP 5. PHP 4.3.9 est le dernier
|
||||
HTML Purifier fonctionne dans PHP 4 et PHP 5. PHP 4.3.2 est le dernier
|
||||
version que je le testais. Il ne dépend de les autre librairies.
|
||||
|
||||
Les extensions optionnel est iconv (en général déjà installer) et
|
||||
|
1
NEWS
1
NEWS
@ -20,6 +20,7 @@ NEWS ( CHANGELOG and HISTORY ) HTMLPurifier
|
||||
off, but it's not recommended.
|
||||
# New compact syntax for AttrDef objects that can be used to instantiate
|
||||
new objects via make()
|
||||
! HTML Purifier now works in PHP 4.3.2.
|
||||
- Deprecated and removed EnableRedundantUTF8Cleaning. It didn't even work!
|
||||
. Unit test for ElementDef created, ElementDef behavior modified to
|
||||
be more flexible
|
||||
|
@ -29,7 +29,7 @@ class HTMLPurifier_AttrDef_CSS_URI extends HTMLPurifier_AttrDef_URI
|
||||
if ($uri_string[$new_length] != ')') return false;
|
||||
$uri = trim(substr($uri_string, 0, $new_length));
|
||||
|
||||
if (isset($uri[0]) && ($uri[0] == "'" || $uri[0] == '"')) {
|
||||
if (!empty($uri) && ($uri[0] == "'" || $uri[0] == '"')) {
|
||||
$quote = $uri[0];
|
||||
$new_length = strlen($uri) - 1;
|
||||
if ($uri[$new_length] !== $quote) return false;
|
||||
|
@ -8,6 +8,21 @@ require_once 'HTMLPurifier/CSSDefinition.php';
|
||||
require_once 'HTMLPurifier/Doctype.php';
|
||||
require_once 'HTMLPurifier/DefinitionCache.php';
|
||||
|
||||
// accomodations for versions earlier than 4.3.10 and 5.0.2
|
||||
// borrowed from PHP_Compat, LGPL licensed, by Aidan Lister <aidan@php.net>
|
||||
if (!defined('PHP_EOL')) {
|
||||
switch (strtoupper(substr(PHP_OS, 0, 3))) {
|
||||
case 'WIN':
|
||||
define('PHP_EOL', "\r\n");
|
||||
break;
|
||||
case 'DAR':
|
||||
define('PHP_EOL', "\r");
|
||||
break;
|
||||
default:
|
||||
define('PHP_EOL', "\n");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Configuration object that triggers customizable behavior.
|
||||
*
|
||||
|
@ -56,7 +56,10 @@ class HTMLPurifier_HTMLModule_Tables extends HTMLPurifier_HTMLModule
|
||||
$cell_align
|
||||
);
|
||||
$this->addElement('col', true, false, 'Empty', 'Common', $cell_col);
|
||||
$this->addElement('colgroup', true, false, 'Optional: col', 'Common', $cell_col);
|
||||
$colgroup =& $this->addElement('colgroup', true, false, 'Optional: col', 'Common', $cell_col);
|
||||
$colgroup->auto_close = $this->makeLookup(
|
||||
'thead', 'tbody', 'tfoot', 'tr'
|
||||
);
|
||||
|
||||
$this->addElement('tbody', true, false, 'Required: tr', 'Common', $cell_align);
|
||||
$this->addElement('thead', true, false, 'Required: tr', 'Common', $cell_align);
|
||||
|
22
maintenance/flush-htmldefinition-cache.php
Normal file
22
maintenance/flush-htmldefinition-cache.php
Normal file
@ -0,0 +1,22 @@
|
||||
#!/usr/bin/php
|
||||
<?php
|
||||
|
||||
/**
|
||||
* Flushes the HTMLDefinition serial cache
|
||||
*/
|
||||
|
||||
if (php_sapi_name() != 'cli') {
|
||||
echo 'Script cannot be called from web-browser.';
|
||||
exit;
|
||||
}
|
||||
|
||||
echo 'Flushing cache... ';
|
||||
|
||||
require_once(dirname(__FILE__) . '/../library/HTMLPurifier.auto.php');
|
||||
|
||||
$cache = new HTMLPurifier_DefinitionCache_Serializer('HTML');
|
||||
$cache->flush();
|
||||
|
||||
echo 'Cache flushed successfully.';
|
||||
|
||||
?>
|
@ -59,7 +59,7 @@ class HTMLPurifier_DefinitionCache_SerializerTest extends UnitTestCase
|
||||
'/../../../library/HTMLPurifier/DefinitionCache/Serializer/Test/' .
|
||||
$config_md5 . '.ser'
|
||||
);
|
||||
if($file) unlink($file); // prevent previous failures from causing problems
|
||||
if($file && file_exists($file)) unlink($file); // prevent previous failures from causing problems
|
||||
|
||||
$config = $this->generateConfigMock($config_array);
|
||||
$this->assertIdentical($config_md5, $cache->generateKey($config));
|
||||
|
@ -57,7 +57,8 @@ class HTMLPurifier_EntityParserTest extends UnitTestCase
|
||||
// this is only for PHP 5, the below is PHP 5 and PHP 4
|
||||
//$chars = str_split($arg[1], 2);
|
||||
$chars = array();
|
||||
for ($i = 0; isset($arg[1][$i]); $i += 2) {
|
||||
// strlen must be called in loop because strings size changes
|
||||
for ($i = 0; strlen($arg[1]) > $i; $i += 2) {
|
||||
$chars[] = $arg[1][$i] . $arg[1][$i+1];
|
||||
}
|
||||
foreach ($chars as $char) {
|
||||
|
@ -97,6 +97,26 @@ class HTMLPurifier_Test extends UnitTestCase
|
||||
|
||||
}
|
||||
|
||||
function test_table() {
|
||||
|
||||
$this->purifier = new HTMLPurifier();
|
||||
$this->assertPurification(
|
||||
'<TABLE>
|
||||
<COLGROUP>
|
||||
<COL span=3 width=64 />
|
||||
<TBODY><TR><TD>1</TD><TD>2</TD><TD>3</TD></TR>
|
||||
</TBODY>
|
||||
</TABLE>',
|
||||
'<table>
|
||||
<colgroup>
|
||||
<col span="3" width="64" />
|
||||
</colgroup><tbody><tr><td>1</td><td>2</td><td>3</td></tr>
|
||||
</tbody>
|
||||
</table>'
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
Loading…
Reference in New Issue
Block a user