From d721066d27000187bd699e9d597e29452e1bde5e Mon Sep 17 00:00:00 2001 From: "Edward Z. Yang" Date: Sun, 13 Aug 2006 04:52:40 +0000 Subject: [PATCH] Make CSS validator drop duplicate declarations. git-svn-id: http://htmlpurifier.org/svnroot/htmlpurifier/trunk@225 48356398-32a2-884e-a903-53898d9a118a --- library/HTMLPurifier/AttrDef/CSS.php | 9 +++++++-- tests/HTMLPurifier/AttrDef/CSSTest.php | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/library/HTMLPurifier/AttrDef/CSS.php b/library/HTMLPurifier/AttrDef/CSS.php index 9a0f60ff..2ac18993 100644 --- a/library/HTMLPurifier/AttrDef/CSS.php +++ b/library/HTMLPurifier/AttrDef/CSS.php @@ -14,7 +14,7 @@ class HTMLPurifier_AttrDef_CSS // This is because semicolon rarely appears in escaped form $declarations = explode(';', $css); - $new_declarations = ''; + $propvalues = array(); foreach ($declarations as $declaration) { if (!$declaration) continue; @@ -23,7 +23,12 @@ class HTMLPurifier_AttrDef_CSS if (!isset($definition->info[$property])) continue; $result = $definition->info[$property]->validate($value,$config,$context); if ($result === false) continue; - $new_declarations .= "$property:$result;"; + $propvalues[$property] = $result; + } + + $new_declarations = ''; + foreach ($propvalues as $prop => $value) { + $new_declarations .= "$prop:$value;"; } return $new_declarations ? $new_declarations : false; diff --git a/tests/HTMLPurifier/AttrDef/CSSTest.php b/tests/HTMLPurifier/AttrDef/CSSTest.php index 58272a3b..ae1694d9 100644 --- a/tests/HTMLPurifier/AttrDef/CSSTest.php +++ b/tests/HTMLPurifier/AttrDef/CSSTest.php @@ -10,6 +10,7 @@ class HTMLPurifier_AttrDef_CSSTest extends HTMLPurifier_AttrDefHarness $this->def = new HTMLPurifier_AttrDef_CSS(); $this->assertDef('text-align:right;'); + $this->assertDef('text-align:right;text-align:left;', 'text-align:left;'); }