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