Author: as
Date: Wed Oct 31 16:54:21 2007
New Revision: 6645

Log:
- Added support for 'cloud' RSS2 feed element.

Added:
    trunk/Feed/tests/rss2/regression/generate/optional/cloud/
    
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path+registerProcedure+protocol.in
    
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path+registerProcedure+protocol.out
    
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path+registerProcedure.in
    
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path+registerProcedure.out
    
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path.in
    
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path.out
    
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port.in
    
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port.out
    trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain.in
    trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain.out
    trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_empty.in
    trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_empty.out
    trunk/Feed/tests/rss2/regression/parse/optional/cloud/
    trunk/Feed/tests/rss2/regression/parse/optional/cloud/cloud_complete.in
    trunk/Feed/tests/rss2/regression/parse/optional/cloud/cloud_complete.out
    trunk/Feed/tests/rss2/regression/parse/optional/cloud/cloud_empty.in
    trunk/Feed/tests/rss2/regression/parse/optional/cloud/cloud_empty.out
Modified:
    trunk/Feed/src/feed.php
    trunk/Feed/src/processors/rss2.php

Modified: trunk/Feed/src/feed.php
==============================================================================
--- trunk/Feed/src/feed.php [iso-8859-1] (original)
+++ trunk/Feed/src/feed.php [iso-8859-1] Wed Oct 31 16:54:21 2007
@@ -192,6 +192,7 @@
             case 'skipDays': // optional in RSS2
             case 'rating':
             case 'textInput':
+            case 'cloud':
                 $this->feedProcessor->set( $property, $value );
                 break;
 
@@ -237,6 +238,7 @@
             case 'skipDays': // optional in RSS2
             case 'rating':
             case 'textInput':
+            case 'cloud':
                 $value = $this->feedProcessor->get( $property );
                 return $value;
 

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] Wed Oct 31 16:54:21 2007
@@ -67,6 +67,13 @@
                                                      ), ),
 
         'rating'         => array( '#'          => 'string' ),
+        'cloud'          => array( '#'          => 'none',
+                                   'ATTRIBUTES' => array( 'domain' => 'string',
+                                                          'port' => 'string',
+                                                          'path' => 'string',
+                                                          'registerProcedure' 
=> 'string',
+                                                          'protocol' => 
'string' ), ),
+
         'textInput'      => array( '#'          => 'none',
                                    'NODES'      => array(
                                                      'title'       => array( 
'#' => 'string' ),
@@ -134,6 +141,7 @@
                                    'category', 'generator', 'docs',
                                    'ttl', 'image', 'rating',
                                    'textInput', 'skipHours', 'skipDays',
+                                   'cloud',
                                  ), // don't include 'item' here
 
         'MULTI'          => array( 'links'      => 'link',
@@ -274,6 +282,10 @@
                         $this->generateTextInput( $this->get( 'textInput' ) );
                         break;
 
+                    case 'cloud':
+                        $this->generateCloud( $this->get( 'cloud' ) );
+                        break;
+
                     default:
                         if ( !is_array( $data ) )
                         {
@@ -420,6 +432,31 @@
 
             $this->generateMetaData( $image, $element, $data );
         }
+    }
+
+    /**
+     * Adds a cloud node to the XML document being generated.
+     *
+     * @param ezcFeedElement $feedElement The cloud feed element
+     * @ignore
+     */
+    protected function generateCloud( ezcFeedElement $feedElement )
+    {
+        $cloud = $this->xml->createElement( 'cloud' );
+        $this->channel->appendChild( $cloud );
+
+        $attributes = array();
+        foreach ( $this->schema->getAttributes( 'cloud' ) as $element => 
$value )
+        {
+            $data = $feedElement->$element;
+            if ( is_null( $data ) )
+            {
+                throw new ezcFeedRequiredMetaDataMissingException( $element );
+            }
+            $attributes[$element] = $data;
+        }
+
+        $this->generateMetaDataWithAttributes( $cloud, $element, false, 
$attributes );
     }
 
     /**
@@ -640,6 +677,10 @@
                         $element->set( $channelChild->textContent );
                         break;
 
+                    case 'cloud':
+                        $element = $feed->add( $tagName );
+                        break;
+
                     case 'published':
                     case 'updated':
                         $feed->$tagName = ezcFeedTools::prepareDate( 
$channelChild->textContent );
@@ -677,7 +718,7 @@
 
             foreach ( ezcFeedTools::getAttributes( $channelChild ) as $key => 
$value )
             {
-                if ( in_array( $tagName, array( 'category' ) ) )
+                if ( in_array( $tagName, array( 'category', 'cloud' ) ) )
                 {
                     $element->$key = $value;
                 }

Added: 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path+registerProcedure+protocol.in
==============================================================================
--- 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path+registerProcedure+protocol.in
 (added)
+++ 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path+registerProcedure+protocol.in
 [iso-8859-1] Wed Oct 31 16:54:21 2007
@@ -1,0 +1,11 @@
+<?php
+return array( 'title' => 'Feed title',
+              'link'  => array( 'Feed link' ),
+              'description' => 'Feed description',
+              'cloud' => array( array( 'domain' => 'Cloud domain',
+                                       'port' => 'Cloud port',
+                                       'path' => 'Cloud path',
+                                       'registerProcedure' => 'Cloud 
procedure',
+                                       'protocol' => 'Cloud protocol' ) ),
+            );
+?>

Added: 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path+registerProcedure+protocol.out
==============================================================================
--- 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path+registerProcedure+protocol.out
 (added)
+++ 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path+registerProcedure+protocol.out
 [iso-8859-1] Wed Oct 31 16:54:21 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>
+    <pubDate>XXX</pubDate>
+    <generator>eZ Components</generator>
+    <docs>http://www.rssboard.org/rss-specification</docs>
+    <cloud>
+      <protocol domain="Cloud domain" port="Cloud port" path="Cloud path" 
registerProcedure="Cloud procedure" protocol="Cloud protocol"/>
+    </cloud>
+  </channel>
+</rss>

Added: 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path+registerProcedure.in
==============================================================================
--- 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path+registerProcedure.in
 (added)
+++ 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path+registerProcedure.in
 [iso-8859-1] Wed Oct 31 16:54:21 2007
@@ -1,0 +1,10 @@
+<?php
+return array( 'title' => 'Feed title',
+              'link'  => array( 'Feed link' ),
+              'description' => 'Feed description',
+              'cloud' => array( array( 'domain' => 'Cloud domain',
+                                       'port' => 'Cloud port',
+                                       'path' => 'Cloud path',
+                                       'registerProcedure' => 'Cloud 
procedure' ) ),
+            );
+?>

Added: 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path+registerProcedure.out
==============================================================================
--- 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path+registerProcedure.out
 (added)
+++ 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path+registerProcedure.out
 [iso-8859-1] Wed Oct 31 16:54:21 2007
@@ -1,0 +1,1 @@
+There was no data submitted for required channel attribute 'protocol'.

Added: 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path.in
==============================================================================
--- 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path.in
 (added)
+++ 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path.in
 [iso-8859-1] Wed Oct 31 16:54:21 2007
@@ -1,0 +1,9 @@
+<?php
+return array( 'title' => 'Feed title',
+              'link'  => array( 'Feed link' ),
+              'description' => 'Feed description',
+              'cloud' => array( array( 'domain' => 'Cloud domain',
+                                       'port' => 'Cloud port',
+                                       'path' => 'Cloud path' ) ),
+            );
+?>

Added: 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path.out
==============================================================================
--- 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path.out
 (added)
+++ 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port+path.out
 [iso-8859-1] Wed Oct 31 16:54:21 2007
@@ -1,0 +1,1 @@
+There was no data submitted for required channel attribute 'registerProcedure'.

Added: 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port.in
==============================================================================
--- 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port.in 
(added)
+++ 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port.in 
[iso-8859-1] Wed Oct 31 16:54:21 2007
@@ -1,0 +1,8 @@
+<?php
+return array( 'title' => 'Feed title',
+              'link'  => array( 'Feed link' ),
+              'description' => 'Feed description',
+              'cloud' => array( array( 'domain' => 'Cloud domain',
+                                       'port' => 'Cloud port' ) ),
+            );
+?>

Added: 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port.out
==============================================================================
--- 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port.out 
(added)
+++ 
trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain+port.out 
[iso-8859-1] Wed Oct 31 16:54:21 2007
@@ -1,0 +1,1 @@
+There was no data submitted for required channel attribute 'path'.

Added: trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain.in
==============================================================================
--- trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain.in 
(added)
+++ trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain.in 
[iso-8859-1] Wed Oct 31 16:54:21 2007
@@ -1,0 +1,7 @@
+<?php
+return array( 'title' => 'Feed title',
+              'link'  => array( 'Feed link' ),
+              'description' => 'Feed description',
+              'cloud' => array( array( 'domain' => 'Cloud domain' ) ),
+            );
+?>

Added: trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain.out
==============================================================================
--- trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain.out 
(added)
+++ trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_domain.out 
[iso-8859-1] Wed Oct 31 16:54:21 2007
@@ -1,0 +1,1 @@
+There was no data submitted for required channel attribute 'port'.

Added: trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_empty.in
==============================================================================
--- trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_empty.in 
(added)
+++ trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_empty.in 
[iso-8859-1] Wed Oct 31 16:54:21 2007
@@ -1,0 +1,7 @@
+<?php
+return array( 'title' => 'Feed title',
+              'link'  => array( 'Feed link' ),
+              'description' => 'Feed description',
+              'cloud' => array( array() ),
+            );
+?>

Added: trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_empty.out
==============================================================================
--- trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_empty.out 
(added)
+++ trunk/Feed/tests/rss2/regression/generate/optional/cloud/cloud_empty.out 
[iso-8859-1] Wed Oct 31 16:54:21 2007
@@ -1,0 +1,1 @@
+There was no data submitted for required channel attribute 'domain'.

Added: trunk/Feed/tests/rss2/regression/parse/optional/cloud/cloud_complete.in
==============================================================================
--- trunk/Feed/tests/rss2/regression/parse/optional/cloud/cloud_complete.in 
(added)
+++ trunk/Feed/tests/rss2/regression/parse/optional/cloud/cloud_complete.in 
[iso-8859-1] Wed Oct 31 16:54:21 2007
@@ -1,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rss version="2.0">
+  <channel>
+    <title>Feed title</title>
+       <link>Feed link</link>
+    <description>Feed description</description>
+    <cloud domain="Cloud domain" port="Cloud port" path="Cloud path" 
registerProcedure="Cloud procedure" protocol="Cloud protocol"/>
+  </channel>
+</rss>

Added: trunk/Feed/tests/rss2/regression/parse/optional/cloud/cloud_complete.out
==============================================================================
--- trunk/Feed/tests/rss2/regression/parse/optional/cloud/cloud_complete.out 
(added)
+++ trunk/Feed/tests/rss2/regression/parse/optional/cloud/cloud_complete.out 
[iso-8859-1] Wed Oct 31 16:54:21 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';
+
+$cloud = $feed->add( 'cloud' );
+$cloud->domain = 'Cloud domain';
+$cloud->port = 'Cloud port';
+$cloud->path = 'Cloud path';
+$cloud->registerProcedure = 'Cloud procedure';
+$cloud->protocol = 'Cloud protocol';
+
+return $feed;
+?>

Added: trunk/Feed/tests/rss2/regression/parse/optional/cloud/cloud_empty.in
==============================================================================
--- trunk/Feed/tests/rss2/regression/parse/optional/cloud/cloud_empty.in (added)
+++ trunk/Feed/tests/rss2/regression/parse/optional/cloud/cloud_empty.in 
[iso-8859-1] Wed Oct 31 16:54:21 2007
@@ -1,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<rss version="2.0">
+  <channel>
+    <title>Feed title</title>
+       <link>Feed link</link>
+    <description>Feed description</description>
+    <cloud/>
+  </channel>
+</rss>

Added: trunk/Feed/tests/rss2/regression/parse/optional/cloud/cloud_empty.out
==============================================================================
--- trunk/Feed/tests/rss2/regression/parse/optional/cloud/cloud_empty.out 
(added)
+++ trunk/Feed/tests/rss2/regression/parse/optional/cloud/cloud_empty.out 
[iso-8859-1] Wed Oct 31 16:54:21 2007
@@ -1,0 +1,14 @@
+<?php
+$feed = new ezcFeed( 'rss2' );
+
+$feed->title = 'Feed title';
+
+$link = $feed->add( 'link' );
+$link->set( 'Feed link' );
+
+$feed->description = 'Feed description';
+
+$cloud = $feed->add( 'cloud' );
+
+return $feed;
+?>


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

Reply via email to