mirror of
https://github.com/ezyang/htmlpurifier.git
synced 2025-03-23 14:27:02 +00:00
Add configuration as a parameter to all AttrDef objects. If we get another construction like accumulator, however, we'll have to create an AttrContext object.
git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@156 48356398-32a2-884e-a903-53898d9a118a
This commit is contained in:
parent
a0ee772423
commit
784b756b3f
@ -6,7 +6,7 @@ require_once 'HTMLPurifier/IDAccumulator.php';
|
|||||||
class HTMLPurifier_AttrDef_ID extends HTMLPurifier_AttrDef
|
class HTMLPurifier_AttrDef_ID extends HTMLPurifier_AttrDef
|
||||||
{
|
{
|
||||||
|
|
||||||
function validate($old_id, &$accumulator) {
|
function validate($old_id, $config, &$accumulator) {
|
||||||
|
|
||||||
$id = trim($old_id); // trim it first
|
$id = trim($old_id); // trim it first
|
||||||
|
|
||||||
|
@ -34,17 +34,21 @@ class HTMLPurifier_Strategy_ValidateAttributes extends HTMLPurifier_Strategy
|
|||||||
$attr = $token->attributes;
|
$attr = $token->attributes;
|
||||||
$changed = false;
|
$changed = false;
|
||||||
foreach ($attr as $attr_key => $value) {
|
foreach ($attr as $attr_key => $value) {
|
||||||
|
|
||||||
|
// call the definition
|
||||||
if ( isset($defs[$attr_key]) ) {
|
if ( isset($defs[$attr_key]) ) {
|
||||||
if (!$defs[$attr_key]) {
|
if (!$defs[$attr_key]) {
|
||||||
$result = false;
|
$result = false;
|
||||||
} else {
|
} else {
|
||||||
$result = $defs[$attr_key]->validate($value, $accumulator);
|
$result = $defs[$attr_key]->validate($value, $config, $accumulator);
|
||||||
}
|
}
|
||||||
} elseif ( isset($d_defs[$attr_key]) ) {
|
} elseif ( isset($d_defs[$attr_key]) ) {
|
||||||
$result = $d_defs[$attr_key]->validate($value, $accumulator);
|
$result = $d_defs[$attr_key]->validate($value, $config, $accumulator);
|
||||||
} else {
|
} else {
|
||||||
$result = false;
|
$result = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// put the results into effect
|
||||||
if ($result === false) {
|
if ($result === false) {
|
||||||
$changed = true;
|
$changed = true;
|
||||||
unset($attr[$attr_key]);
|
unset($attr[$attr_key]);
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
require_once 'HTMLPurifier/AttrDef/ID.php';
|
require_once 'HTMLPurifier/AttrDef/ID.php';
|
||||||
require_once 'HTMLPurifier/IDAccumulator.php';
|
require_once 'HTMLPurifier/IDAccumulator.php';
|
||||||
|
require_once 'HTMLPurifier/Config.php';
|
||||||
|
|
||||||
class HTMLPurifier_AttrDef_IDTest extends UnitTestCase
|
class HTMLPurifier_AttrDef_IDTest extends UnitTestCase
|
||||||
{
|
{
|
||||||
@ -9,25 +10,28 @@ class HTMLPurifier_AttrDef_IDTest extends UnitTestCase
|
|||||||
function test() {
|
function test() {
|
||||||
|
|
||||||
$acc = new HTMLPurifier_IDAccumulator();
|
$acc = new HTMLPurifier_IDAccumulator();
|
||||||
|
|
||||||
$def = new HTMLPurifier_AttrDef_ID();
|
$def = new HTMLPurifier_AttrDef_ID();
|
||||||
|
|
||||||
|
generate_mock_once('HTMLPurifier_Config');
|
||||||
|
|
||||||
|
$config = new HTMLPurifier_ConfigMock();
|
||||||
|
|
||||||
// valid ID names
|
// valid ID names
|
||||||
$this->assertTrue($def->validate('alpha', $acc));
|
$this->assertTrue($def->validate('alpha', $config, $acc));
|
||||||
$this->assertTrue($def->validate('al_ha', $acc));
|
$this->assertTrue($def->validate('al_ha', $config, $acc));
|
||||||
$this->assertTrue($def->validate('a0-:.', $acc));
|
$this->assertTrue($def->validate('a0-:.', $config, $acc));
|
||||||
$this->assertTrue($def->validate('a' , $acc));
|
$this->assertTrue($def->validate('a' , $config, $acc));
|
||||||
|
|
||||||
// invalid ID names
|
// invalid ID names
|
||||||
$this->assertFalse($def->validate('<asa', $acc));
|
$this->assertFalse($def->validate('<asa', $config, $acc));
|
||||||
$this->assertFalse($def->validate('0123', $acc));
|
$this->assertFalse($def->validate('0123', $config, $acc));
|
||||||
$this->assertFalse($def->validate('.asa', $acc));
|
$this->assertFalse($def->validate('.asa', $config, $acc));
|
||||||
|
|
||||||
// test duplicate detection
|
// test duplicate detection
|
||||||
$this->assertFalse($def->validate('a' , $acc));
|
$this->assertFalse($def->validate('a' , $config, $acc));
|
||||||
|
|
||||||
// valid once whitespace stripped, but needs to be amended
|
// valid once whitespace stripped, but needs to be amended
|
||||||
$this->assertEqual('whee', $def->validate(' whee ', $acc));
|
$this->assertEqual('whee', $def->validate(' whee ', $config, $acc));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user