Author: as
Date: Tue Oct 30 15:55:46 2007
New Revision: 6636

Log:
- Added support for 'item/guid' RSS2 feed element.

Added:
    trunk/Feed/tests/rss2/regression/generate/item/guid/
    trunk/Feed/tests/rss2/regression/generate/item/guid/guid.in
    trunk/Feed/tests/rss2/regression/generate/item/guid/guid.out
    trunk/Feed/tests/rss2/regression/generate/item/guid/guid_empty.in
    trunk/Feed/tests/rss2/regression/generate/item/guid/guid_empty.out
    
trunk/Feed/tests/rss2/regression/generate/item/guid/guid_isPermaLink_false.in
    
trunk/Feed/tests/rss2/regression/generate/item/guid/guid_isPermaLink_false.out
    trunk/Feed/tests/rss2/regression/generate/item/guid/guid_isPermaLink_true.in
    
trunk/Feed/tests/rss2/regression/generate/item/guid/guid_isPermaLink_true.out
    trunk/Feed/tests/rss2/regression/parse/item/guid/
    trunk/Feed/tests/rss2/regression/parse/item/guid/guid.in
    trunk/Feed/tests/rss2/regression/parse/item/guid/guid.out
    trunk/Feed/tests/rss2/regression/parse/item/guid/guid_empty.in
    trunk/Feed/tests/rss2/regression/parse/item/guid/guid_empty.out
    trunk/Feed/tests/rss2/regression/parse/item/guid/guid_isPermaLink_false.in
    trunk/Feed/tests/rss2/regression/parse/item/guid/guid_isPermaLink_false.out
    trunk/Feed/tests/rss2/regression/parse/item/guid/guid_isPermaLink_true.in
    trunk/Feed/tests/rss2/regression/parse/item/guid/guid_isPermaLink_true.out
Modified:
    trunk/Feed/src/processors/rss2.php
    trunk/Feed/tests/regression_test.php

Modified: trunk/Feed/src/processors/rss2.php
==============================================================================
--- trunk/Feed/src/processors/rss2.php [iso-8859-1] (original)
+++ trunk/Feed/src/processors/rss2.php [iso-8859-1] Tue Oct 30 15:55:46 2007
@@ -430,8 +430,16 @@
                     switch ( $attribute )
                     {
                         case 'guid':
-                            $permalink = substr( $metaData, 0, 7 ) === 
'http://' ? "true" : "false";
-                            $this->generateMetaDataWithAttributes( $itemTag, 
$normalizedAttribute, $metaData, array( 'isPermaLink' => $permalink ) );
+                            $attributes = array();
+                            if ( isset( $metaData[0]->isPermaLink ) )
+                            {
+                                $permaLink = ( $metaData[0]->isPermaLink === 
true ) ? 'true' : 'false';
+                                $attributes = array( 'isPermaLink' => 
$permaLink );
+                            }
+                            // @todo Investigate if needed to set isPermaLink 
dependent of the guid
+                            // $permaLink = substr( 
$metaData[0]->__toString(), 0, 7 ) === 'http://' ? "true" : "false";
+
+                            $this->generateMetaDataWithAttributes( $itemTag, 
$normalizedAttribute, $metaData, $attributes );
                             break;
 
                         case 'published':
@@ -442,11 +450,11 @@
                             foreach ( $metaData as $dataNode )
                             {
                                 $attributes = array();
-                                foreach ( $this->schema->getAttributes( 
'item', 'enclosure' ) as $attribute => $type )
+                                foreach ( $this->schema->getAttributes( 
'item', $attribute ) as $key => $type )
                                 {
-                                    if ( isset( $dataNode->$attribute ) )
+                                    if ( isset( $dataNode->$key ) )
                                     {
-                                        $attributes[$attribute] = 
$dataNode->$attribute;
+                                        $attributes[$key] = $dataNode->$key;
                                     }
                                 }
 
@@ -626,7 +634,6 @@
                     case 'description':
                     case 'author':
                     case 'comments':
-                    case 'guid':
                     case 'source':
                         $element->$tagName = $itemChild->textContent;
                         break;
@@ -641,6 +648,11 @@
                         $subElement->set( $itemChild->textContent );
                         break;
 
+                    case 'guid':
+                        $subElement = $element->add( $tagName );
+                        $subElement->set( $itemChild->textContent );
+                        break;
+
                     default:
                         // check if it's part of a known module/namespace
                 }
@@ -650,6 +662,14 @@
                     if ( in_array( $tagName, array( 'category', 'enclosure' ) 
) )
                     {
                         $subElement->$key = $value;
+                    }
+                    else if ( in_array( $tagName, array( 'guid' ) ) )
+                    {
+                        if ( $key === 'isPermaLink'
+                             && $value !== null )
+                        {
+                            $subElement->isPermaLink = ( $value === "true" ) ? 
true : false;
+                        }
                     }
                     else
                     {

Modified: trunk/Feed/tests/regression_test.php
==============================================================================
--- trunk/Feed/tests/regression_test.php [iso-8859-1] (original)
+++ trunk/Feed/tests/regression_test.php [iso-8859-1] Tue Oct 30 15:55:46 2007
@@ -141,7 +141,14 @@
                                         $subElement = $element->add( $subKey );
                                         foreach ( $subValue as $subSubKey => 
$subSubValue )
                                         {
-                                            $subElement->$subSubKey = 
$subSubValue;
+                                            if ( $subSubKey === '#' )
+                                            {
+                                                $subElement->set( $subSubValue 
);
+                                            }
+                                            else
+                                            {
+                                                $subElement->$subSubKey = 
$subSubValue;
+                                            }
                                         }
                                     }
                                     else

Added: trunk/Feed/tests/rss2/regression/generate/item/guid/guid.in
==============================================================================
--- trunk/Feed/tests/rss2/regression/generate/item/guid/guid.in (added)
+++ trunk/Feed/tests/rss2/regression/generate/item/guid/guid.in [iso-8859-1] 
Tue Oct 30 15:55:46 2007
@@ -1,0 +1,10 @@
+<?php
+return array( 'title' => 'Feed title',
+              'link'  => array( 'Feed link' ),
+              'description' => 'Feed description',
+                         'item' => array( array( 'title' => 'Item title',
+                                      'link' => 'Item link',
+                                      'description' => 'Item description',
+                                      'guid' => array( '#' => 'Item guid' ) ), 
),
+            );
+?>

Added: trunk/Feed/tests/rss2/regression/generate/item/guid/guid.out
==============================================================================
--- trunk/Feed/tests/rss2/regression/generate/item/guid/guid.out (added)
+++ trunk/Feed/tests/rss2/regression/generate/item/guid/guid.out [iso-8859-1] 
Tue Oct 30 15:55:46 2007
@@ -1,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rss version="2.0">
+  <channel>
+    <title>Feed title</title>
+    <link>Feed link</link>
+    <description>Feed description</description>
+    <pubDate>XXX</pubDate>
+    <generator>eZ Components</generator>
+    <docs>http://www.rssboard.org/rss-specification</docs>
+    <item>
+      <title>Item title</title>
+      <link>Item link</link>
+      <description>Item description</description>
+      <guid>Item guid</guid>
+    </item>
+  </channel>
+</rss>

Added: trunk/Feed/tests/rss2/regression/generate/item/guid/guid_empty.in
==============================================================================
--- trunk/Feed/tests/rss2/regression/generate/item/guid/guid_empty.in (added)
+++ trunk/Feed/tests/rss2/regression/generate/item/guid/guid_empty.in 
[iso-8859-1] Tue Oct 30 15:55:46 2007
@@ -1,0 +1,10 @@
+<?php
+return array( 'title' => 'Feed title',
+              'link'  => array( 'Feed link' ),
+              'description' => 'Feed description',
+                         'item' => array( array( 'title' => 'Item title',
+                                      'link' => 'Item link',
+                                      'description' => 'Item description',
+                                      'guid' => array() ), ),
+            );
+?>

Added: trunk/Feed/tests/rss2/regression/generate/item/guid/guid_empty.out
==============================================================================
--- trunk/Feed/tests/rss2/regression/generate/item/guid/guid_empty.out (added)
+++ trunk/Feed/tests/rss2/regression/generate/item/guid/guid_empty.out 
[iso-8859-1] Tue Oct 30 15:55:46 2007
@@ -1,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rss version="2.0">
+  <channel>
+    <title>Feed title</title>
+    <link>Feed link</link>
+    <description>Feed description</description>
+    <pubDate>XXX</pubDate>
+    <generator>eZ Components</generator>
+    <docs>http://www.rssboard.org/rss-specification</docs>
+    <item>
+      <title>Item title</title>
+      <link>Item link</link>
+      <description>Item description</description>
+      <guid></guid>
+    </item>
+  </channel>
+</rss>

Added: 
trunk/Feed/tests/rss2/regression/generate/item/guid/guid_isPermaLink_false.in
==============================================================================
--- 
trunk/Feed/tests/rss2/regression/generate/item/guid/guid_isPermaLink_false.in 
(added)
+++ 
trunk/Feed/tests/rss2/regression/generate/item/guid/guid_isPermaLink_false.in 
[iso-8859-1] Tue Oct 30 15:55:46 2007
@@ -1,0 +1,11 @@
+<?php
+return array( 'title' => 'Feed title',
+              'link'  => array( 'Feed link' ),
+              'description' => 'Feed description',
+                         'item' => array( array( 'title' => 'Item title',
+                                      'link' => 'Item link',
+                                      'description' => 'Item description',
+                                      'guid' => array( '#' => 'Item guid',
+                                                       'isPermaLink' => false 
) ), ),
+            );
+?>

Added: 
trunk/Feed/tests/rss2/regression/generate/item/guid/guid_isPermaLink_false.out
==============================================================================
--- 
trunk/Feed/tests/rss2/regression/generate/item/guid/guid_isPermaLink_false.out 
(added)
+++ 
trunk/Feed/tests/rss2/regression/generate/item/guid/guid_isPermaLink_false.out 
[iso-8859-1] Tue Oct 30 15:55:46 2007
@@ -1,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rss version="2.0">
+  <channel>
+    <title>Feed title</title>
+    <link>Feed link</link>
+    <description>Feed description</description>
+    <pubDate>XXX</pubDate>
+    <generator>eZ Components</generator>
+    <docs>http://www.rssboard.org/rss-specification</docs>
+    <item>
+      <title>Item title</title>
+      <link>Item link</link>
+      <description>Item description</description>
+      <guid isPermaLink="false">Item guid</guid>
+    </item>
+  </channel>
+</rss>

Added: 
trunk/Feed/tests/rss2/regression/generate/item/guid/guid_isPermaLink_true.in
==============================================================================
--- 
trunk/Feed/tests/rss2/regression/generate/item/guid/guid_isPermaLink_true.in 
(added)
+++ 
trunk/Feed/tests/rss2/regression/generate/item/guid/guid_isPermaLink_true.in 
[iso-8859-1] Tue Oct 30 15:55:46 2007
@@ -1,0 +1,11 @@
+<?php
+return array( 'title' => 'Feed title',
+              'link'  => array( 'Feed link' ),
+              'description' => 'Feed description',
+                         'item' => array( array( 'title' => 'Item title',
+                                      'link' => 'Item link',
+                                      'description' => 'Item description',
+                                      'guid' => array( '#' => 'Item guid',
+                                                       'isPermaLink' => true ) 
), ),
+            );
+?>

Added: 
trunk/Feed/tests/rss2/regression/generate/item/guid/guid_isPermaLink_true.out
==============================================================================
--- 
trunk/Feed/tests/rss2/regression/generate/item/guid/guid_isPermaLink_true.out 
(added)
+++ 
trunk/Feed/tests/rss2/regression/generate/item/guid/guid_isPermaLink_true.out 
[iso-8859-1] Tue Oct 30 15:55:46 2007
@@ -1,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rss version="2.0">
+  <channel>
+    <title>Feed title</title>
+    <link>Feed link</link>
+    <description>Feed description</description>
+    <pubDate>XXX</pubDate>
+    <generator>eZ Components</generator>
+    <docs>http://www.rssboard.org/rss-specification</docs>
+    <item>
+      <title>Item title</title>
+      <link>Item link</link>
+      <description>Item description</description>
+      <guid isPermaLink="true">Item guid</guid>
+    </item>
+  </channel>
+</rss>

Added: trunk/Feed/tests/rss2/regression/parse/item/guid/guid.in
==============================================================================
--- trunk/Feed/tests/rss2/regression/parse/item/guid/guid.in (added)
+++ trunk/Feed/tests/rss2/regression/parse/item/guid/guid.in [iso-8859-1] Tue 
Oct 30 15:55:46 2007
@@ -1,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rss version="2.0">
+  <channel>
+    <title>Feed title</title>
+    <link>Feed link</link>
+    <description>Feed description</description>
+    <item>
+      <title>Item title</title>
+      <link>Item link</link>
+      <description>Item description</description>
+      <guid>Item guid</guid>
+    </item>
+  </channel>
+</rss> 

Added: trunk/Feed/tests/rss2/regression/parse/item/guid/guid.out
==============================================================================
--- trunk/Feed/tests/rss2/regression/parse/item/guid/guid.out (added)
+++ trunk/Feed/tests/rss2/regression/parse/item/guid/guid.out [iso-8859-1] Tue 
Oct 30 15:55:46 2007
@@ -1,0 +1,19 @@
+<?php
+$feed = new ezcFeed( 'rss2' );
+$feed->title = 'Feed title';
+
+$link = $feed->add( 'link' );
+$link->set( 'Feed link' );
+
+$feed->description = 'Feed description';
+
+$item = $feed->add( 'item' );
+$item->title = 'Item title';
+$item->link = 'Item link';
+$item->description = 'Item description';
+
+$guid = $item->add( 'guid' );
+$guid->set( 'Item guid' );
+
+return $feed;
+?>

Added: trunk/Feed/tests/rss2/regression/parse/item/guid/guid_empty.in
==============================================================================
--- trunk/Feed/tests/rss2/regression/parse/item/guid/guid_empty.in (added)
+++ trunk/Feed/tests/rss2/regression/parse/item/guid/guid_empty.in [iso-8859-1] 
Tue Oct 30 15:55:46 2007
@@ -1,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rss version="2.0">
+  <channel>
+    <title>Feed title</title>
+    <link>Feed link</link>
+    <description>Feed description</description>
+    <item>
+      <title>Item title</title>
+      <link>Item link</link>
+      <description>Item description</description>
+      <guid/>
+    </item>
+  </channel>
+</rss> 

Added: trunk/Feed/tests/rss2/regression/parse/item/guid/guid_empty.out
==============================================================================
--- trunk/Feed/tests/rss2/regression/parse/item/guid/guid_empty.out (added)
+++ trunk/Feed/tests/rss2/regression/parse/item/guid/guid_empty.out 
[iso-8859-1] Tue Oct 30 15:55:46 2007
@@ -1,0 +1,19 @@
+<?php
+$feed = new ezcFeed( 'rss2' );
+$feed->title = 'Feed title';
+
+$link = $feed->add( 'link' );
+$link->set( 'Feed link' );
+
+$feed->description = 'Feed description';
+
+$item = $feed->add( 'item' );
+$item->title = 'Item title';
+$item->link = 'Item link';
+$item->description = 'Item description';
+
+$guid = $item->add( 'guid' );
+$guid->set( null );
+
+return $feed;
+?>

Added: 
trunk/Feed/tests/rss2/regression/parse/item/guid/guid_isPermaLink_false.in
==============================================================================
--- trunk/Feed/tests/rss2/regression/parse/item/guid/guid_isPermaLink_false.in 
(added)
+++ trunk/Feed/tests/rss2/regression/parse/item/guid/guid_isPermaLink_false.in 
[iso-8859-1] Tue Oct 30 15:55:46 2007
@@ -1,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rss version="2.0">
+  <channel>
+    <title>Feed title</title>
+    <link>Feed link</link>
+    <description>Feed description</description>
+    <item>
+      <title>Item title</title>
+      <link>Item link</link>
+      <description>Item description</description>
+      <guid isPermaLink="false">Item guid</guid>
+    </item>
+  </channel>
+</rss> 

Added: 
trunk/Feed/tests/rss2/regression/parse/item/guid/guid_isPermaLink_false.out
==============================================================================
--- trunk/Feed/tests/rss2/regression/parse/item/guid/guid_isPermaLink_false.out 
(added)
+++ trunk/Feed/tests/rss2/regression/parse/item/guid/guid_isPermaLink_false.out 
[iso-8859-1] Tue Oct 30 15:55:46 2007
@@ -1,0 +1,20 @@
+<?php
+$feed = new ezcFeed( 'rss2' );
+$feed->title = 'Feed title';
+
+$link = $feed->add( 'link' );
+$link->set( 'Feed link' );
+
+$feed->description = 'Feed description';
+
+$item = $feed->add( 'item' );
+$item->title = 'Item title';
+$item->link = 'Item link';
+$item->description = 'Item description';
+
+$guid = $item->add( 'guid' );
+$guid->set( 'Item guid' );
+$guid->isPermaLink = false;
+
+return $feed;
+?>

Added: trunk/Feed/tests/rss2/regression/parse/item/guid/guid_isPermaLink_true.in
==============================================================================
--- trunk/Feed/tests/rss2/regression/parse/item/guid/guid_isPermaLink_true.in 
(added)
+++ trunk/Feed/tests/rss2/regression/parse/item/guid/guid_isPermaLink_true.in 
[iso-8859-1] Tue Oct 30 15:55:46 2007
@@ -1,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rss version="2.0">
+  <channel>
+    <title>Feed title</title>
+    <link>Feed link</link>
+    <description>Feed description</description>
+    <item>
+      <title>Item title</title>
+      <link>Item link</link>
+      <description>Item description</description>
+      <guid isPermaLink="true">Item guid</guid>
+    </item>
+  </channel>
+</rss> 

Added: 
trunk/Feed/tests/rss2/regression/parse/item/guid/guid_isPermaLink_true.out
==============================================================================
--- trunk/Feed/tests/rss2/regression/parse/item/guid/guid_isPermaLink_true.out 
(added)
+++ trunk/Feed/tests/rss2/regression/parse/item/guid/guid_isPermaLink_true.out 
[iso-8859-1] Tue Oct 30 15:55:46 2007
@@ -1,0 +1,20 @@
+<?php
+$feed = new ezcFeed( 'rss2' );
+$feed->title = 'Feed title';
+
+$link = $feed->add( 'link' );
+$link->set( 'Feed link' );
+
+$feed->description = 'Feed description';
+
+$item = $feed->add( 'item' );
+$item->title = 'Item title';
+$item->link = 'Item link';
+$item->description = 'Item description';
+
+$guid = $item->add( 'guid' );
+$guid->set( 'Item guid' );
+$guid->isPermaLink = true;
+
+return $feed;
+?>


-- 
svn-components mailing list
svn-components@lists.ez.no
http://lists.ez.no/mailman/listinfo/svn-components

Reply via email to