diff --git a/NEWS b/NEWS
index dcd196df..e492c08b 100644
--- a/NEWS
+++ b/NEWS
@@ -15,6 +15,7 @@ NEWS ( CHANGELOG and HISTORY ) HTMLPurifier
transforms in later modules. No internal code was using this
but this may break some clients.
- Use prepend for SPL autoloading on PHP 5.3 and later.
+- Fix bug with nofollow transform when pre-existing rel exists.
4.4.0, released 2012-01-18
# Removed PEARSax3 handler.
diff --git a/TODO b/TODO
index b79e47da..053402b5 100644
--- a/TODO
+++ b/TODO
@@ -13,6 +13,7 @@ afraid to cast your vote for the next feature to be implemented!
Things to do as soon as possible:
+ - http://htmlpurifier.org/phorum/read.php?3,5560,6307#msg-6307
- Think about allowing explicit order of operations hooks for transforms
- Fix "<.<" bug (trailing < is removed if not EOD)
- Build in better internal state dumps and debugging tools for remote
diff --git a/library/HTMLPurifier/AttrTransform/Nofollow.php b/library/HTMLPurifier/AttrTransform/Nofollow.php
index f7fb1209..e699c79a 100644
--- a/library/HTMLPurifier/AttrTransform/Nofollow.php
+++ b/library/HTMLPurifier/AttrTransform/Nofollow.php
@@ -26,7 +26,7 @@ class HTMLPurifier_AttrTransform_Nofollow extends HTMLPurifier_AttrTransform
if ($scheme->browsable && !$url->isLocal($config, $context)) {
if (isset($attr['rel'])) {
- $rels = explode(' ', $attr);
+ $rels = explode(' ', $attr['rel']);
if (!in_array('nofollow', $rels)) {
$rels[] = 'nofollow';
}
diff --git a/tests/HTMLPurifier/HTMLModule/NofollowTest.php b/tests/HTMLPurifier/HTMLModule/NofollowTest.php
index 43084de3..90e15313 100644
--- a/tests/HTMLPurifier/HTMLModule/NofollowTest.php
+++ b/tests/HTMLPurifier/HTMLModule/NofollowTest.php
@@ -6,18 +6,19 @@ class HTMLPurifier_HTMLModule_NofollowTest extends HTMLPurifier_HTMLModuleHarnes
function setUp() {
parent::setUp();
$this->config->set('HTML.Nofollow', true);
+ $this->config->set('Attr.AllowedRel', array("nofollow", "blah"));
}
function testNofollow() {
$this->assertResult(
- 'abc',
- 'abc'
+ 'xabc',
+ 'xabc'
);
}
function testNofollowDupe() {
$this->assertResult(
- 'abc'
+ 'xabc'
);
}