mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 11:28:25 +00:00
fix #2858 RSS helper bug with namedspaced keys
http://cakephp.lighthouseapp.com/projects/42648/tickets/2858-rss-helper-bug-with-namedspaced-keys
This commit is contained in:
parent
5413b672eb
commit
19f0e72d58
2 changed files with 64 additions and 3 deletions
|
@ -717,4 +717,56 @@ class RssHelperTest extends CakeTestCase {
|
||||||
$this->assertTags($result, $expected);
|
$this->assertTags($result, $expected);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testElementNamespaceWithoutPrefix() {
|
||||||
|
$item = array(
|
||||||
|
'creator' => 'Alex',
|
||||||
|
);
|
||||||
|
$attributes = array(
|
||||||
|
'namespace' => 'http://link.com'
|
||||||
|
);
|
||||||
|
$result = $this->Rss->item($attributes, $item);
|
||||||
|
$expected = array(
|
||||||
|
'item' => array(
|
||||||
|
'xmlns' => 'http://link.com'
|
||||||
|
),
|
||||||
|
'creator' => array(
|
||||||
|
'xmlns' => 'http://link.com'
|
||||||
|
),
|
||||||
|
'Alex',
|
||||||
|
'/creator',
|
||||||
|
'/item'
|
||||||
|
);
|
||||||
|
$this->assertTags($result, $expected, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testElementNamespaceWithPrefix() {
|
||||||
|
$item = array(
|
||||||
|
'title' => 'Title',
|
||||||
|
'creator' => 'Alex'
|
||||||
|
);
|
||||||
|
$attributes = array(
|
||||||
|
'namespace' => array(
|
||||||
|
'prefix' => 'dc',
|
||||||
|
'url' => 'http://link.com'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
$result = $this->Rss->item($attributes, $item);
|
||||||
|
$expected = array(
|
||||||
|
'item' => array(
|
||||||
|
'xmlns:dc' => 'http://link.com'
|
||||||
|
),
|
||||||
|
'title' => array(
|
||||||
|
'xmlns:dc' => 'http://link.com'
|
||||||
|
),
|
||||||
|
'Title',
|
||||||
|
'/title',
|
||||||
|
'creator' => array(
|
||||||
|
'xmlns:dc' => 'http://link.com'
|
||||||
|
),
|
||||||
|
'Alex',
|
||||||
|
'/creator',
|
||||||
|
'/item'
|
||||||
|
);
|
||||||
|
$this->assertTags($result, $expected, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -256,6 +256,8 @@ class RssHelper extends AppHelper {
|
||||||
$attrib = $val;
|
$attrib = $val;
|
||||||
$val = null;
|
$val = null;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
$attrib = $att;
|
||||||
}
|
}
|
||||||
if (!is_null($val) && $escape) {
|
if (!is_null($val) && $escape) {
|
||||||
$val = h($val);
|
$val = h($val);
|
||||||
|
@ -312,7 +314,12 @@ class RssHelper extends AppHelper {
|
||||||
|
|
||||||
$xml = '<' . $name;
|
$xml = '<' . $name;
|
||||||
if (!empty($namespace)) {
|
if (!empty($namespace)) {
|
||||||
$xml .= ' xmlns:"' . $namespace . '"';
|
$xml .= ' xmlns';
|
||||||
|
if (is_array($namespace)) {
|
||||||
|
$xml .= ':' . $namespace['prefix'];
|
||||||
|
$namespace = $namespace['url'];
|
||||||
|
}
|
||||||
|
$xml .= '="' . $namespace . '"';
|
||||||
}
|
}
|
||||||
$bareName = $name;
|
$bareName = $name;
|
||||||
if (strpos($name, ':') !== false) {
|
if (strpos($name, ':') !== false) {
|
||||||
|
@ -329,8 +336,10 @@ class RssHelper extends AppHelper {
|
||||||
$xml .= '>' . $content . '</' . $name . '>';
|
$xml .= '>' . $content . '</' . $name . '>';
|
||||||
$elem = Xml::build($xml, array('return' => 'domdocument'));
|
$elem = Xml::build($xml, array('return' => 'domdocument'));
|
||||||
$nodes = $elem->getElementsByTagName($bareName);
|
$nodes = $elem->getElementsByTagName($bareName);
|
||||||
foreach ($attrib as $key => $value) {
|
if ($attrib) {
|
||||||
$nodes->item(0)->setAttribute($key, $value);
|
foreach ($attrib as $key => $value) {
|
||||||
|
$nodes->item(0)->setAttribute($key, $value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
foreach ($children as $k => $child) {
|
foreach ($children as $k => $child) {
|
||||||
$child = $elem->createElement($name, $child);
|
$child = $elem->createElement($name, $child);
|
||||||
|
|
Loading…
Reference in a new issue