mirror of
https://github.com/kamilwylegala/cakephp2-php8.git
synced 2024-11-15 03:18:26 +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);
|
||||
}
|
||||
|
||||
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;
|
||||
$val = null;
|
||||
break;
|
||||
default:
|
||||
$attrib = $att;
|
||||
}
|
||||
if (!is_null($val) && $escape) {
|
||||
$val = h($val);
|
||||
|
@ -312,7 +314,12 @@ class RssHelper extends AppHelper {
|
|||
|
||||
$xml = '<' . $name;
|
||||
if (!empty($namespace)) {
|
||||
$xml .= ' xmlns:"' . $namespace . '"';
|
||||
$xml .= ' xmlns';
|
||||
if (is_array($namespace)) {
|
||||
$xml .= ':' . $namespace['prefix'];
|
||||
$namespace = $namespace['url'];
|
||||
}
|
||||
$xml .= '="' . $namespace . '"';
|
||||
}
|
||||
$bareName = $name;
|
||||
if (strpos($name, ':') !== false) {
|
||||
|
@ -329,8 +336,10 @@ class RssHelper extends AppHelper {
|
|||
$xml .= '>' . $content . '</' . $name . '>';
|
||||
$elem = Xml::build($xml, array('return' => 'domdocument'));
|
||||
$nodes = $elem->getElementsByTagName($bareName);
|
||||
foreach ($attrib as $key => $value) {
|
||||
$nodes->item(0)->setAttribute($key, $value);
|
||||
if ($attrib) {
|
||||
foreach ($attrib as $key => $value) {
|
||||
$nodes->item(0)->setAttribute($key, $value);
|
||||
}
|
||||
}
|
||||
foreach ($children as $k => $child) {
|
||||
$child = $elem->createElement($name, $child);
|
||||
|
|
Loading…
Reference in a new issue