Author: as Date: Mon Oct 29 14:11:38 2007 New Revision: 6619 Log: - Re-added support for RSS2 image.
Added: trunk/Feed/tests/rss2/regression/generate/image/ trunk/Feed/tests/rss2/regression/generate/image/image_complete.in trunk/Feed/tests/rss2/regression/generate/image/image_complete.out trunk/Feed/tests/rss2/regression/generate/image/image_empty.in trunk/Feed/tests/rss2/regression/generate/image/image_empty.out trunk/Feed/tests/rss2/regression/generate/image/image_url+title+link.in trunk/Feed/tests/rss2/regression/generate/image/image_url+title+link.out trunk/Feed/tests/rss2/regression/generate/image/image_url+title.in trunk/Feed/tests/rss2/regression/generate/image/image_url+title.out trunk/Feed/tests/rss2/regression/generate/image/image_url.in trunk/Feed/tests/rss2/regression/generate/image/image_url.out trunk/Feed/tests/rss2/regression/parse/image/ trunk/Feed/tests/rss2/regression/parse/image/image_complete.in trunk/Feed/tests/rss2/regression/parse/image/image_complete.out trunk/Feed/tests/rss2/regression/parse/image/image_empty.in trunk/Feed/tests/rss2/regression/parse/image/image_empty.out trunk/Feed/tests/rss2/regression/parse/image/image_simple.in trunk/Feed/tests/rss2/regression/parse/image/image_simple.out Modified: trunk/Feed/ChangeLog trunk/Feed/src/feed.php trunk/Feed/src/interfaces/processor.php trunk/Feed/src/processors/rss2.php trunk/Feed/tests/regression_test.php Modified: trunk/Feed/ChangeLog ============================================================================== --- trunk/Feed/ChangeLog [iso-8859-1] (original) +++ trunk/Feed/ChangeLog [iso-8859-1] Mon Oct 29 14:11:38 2007 @@ -14,6 +14,7 @@ - Added ezcFeedElement instead of ezcFeedItem. - Added support for RSS2 enclosure and tutorial on how to use it for creating and parsing podcasts. +- Re-added support for RSS2 image. 1.0beta1 - Monday 18 December 2006 Modified: trunk/Feed/src/feed.php ============================================================================== --- trunk/Feed/src/feed.php [iso-8859-1] (original) +++ trunk/Feed/src/feed.php [iso-8859-1] Mon Oct 29 14:11:38 2007 @@ -245,7 +245,7 @@ * $item->title = 'Item title'; * </code> * - * @param string $name + * @param string $name The name of the element to add * @return ezcFeedElement */ public function add( $name ) Modified: trunk/Feed/src/interfaces/processor.php ============================================================================== --- trunk/Feed/src/interfaces/processor.php [iso-8859-1] (original) +++ trunk/Feed/src/interfaces/processor.php [iso-8859-1] Mon Oct 29 14:11:38 2007 @@ -31,6 +31,14 @@ protected $feedType; /** + * Holds the feed schema for the current feed type. + * + * @var array(string=>mixed) + * @ignore + */ + protected $schema; + + /** * Holds the XML document which is being generated. * * @var DOMDocument @@ -202,8 +210,12 @@ $this->elements[$this->schema->getMulti( $name )][] = $element; return $element; } - - return null; + else + { + $element = new ezcFeedElement( $this->schema->getSchema( $name ) ); + $this->elements[$name] = $element; + return $element; + } } } ?> 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] Mon Oct 29 14:11:38 2007 @@ -231,6 +231,10 @@ $this->generateMetaData( $this->channel, $normalizedAttribute, date( 'D, d M Y H:i:s O', $data ) ); break; + case 'image': + $this->generateImage( $this->get( 'image' ) ); + break; + default: if ( !is_array( $data ) ) { @@ -273,6 +277,37 @@ else { $this->generateMetaData( $root, $element, $dataNode ); + } + } + + /** + * Adds an image node to the XML document being generated. + * + * @ignore + */ + protected function generateImage( ezcFeedElement $feedElement ) + { + $image = $this->xml->createElement( 'image' ); + $this->channel->appendChild( $image ); + + foreach ( $this->schema->getRequired( 'image' ) as $element ) + { + $data = $this->schema->isMulti( 'image', $element ) ? $this->get( $this->schema->getMulti( 'image', $element ) ) : $feedElement->$element; + if ( is_null( $data ) ) + { + throw new ezcFeedRequiredMetaDataMissingException( $element ); + } + + $this->generateMetaData( $image, $element, $data ); + } + + foreach ( $this->schema->getOptional( 'image' ) as $element ) + { + $data = $this->schema->isMulti( 'image', $element ) ? $this->get( $this->schema->getMulti( 'image', $element ) ) : $feedElement->$element; + if ( !is_null( $data ) ) + { + $this->generateMetaData( $image, $element, $data ); + } } } @@ -459,7 +494,8 @@ break; case 'image': - $this->parseImage( $feed, $channelChild ); + $image = $feed->add( 'image' ); + $this->parseImage( $feed, $image, $channelChild ); break; default: @@ -545,11 +581,11 @@ * the provided ezcFeed object. * * @param ezcFeed $feed The feed object in which to store the parsed XML element as a feed image + * @param ezcFeedElement $element The feed element object that will contain the feed image * @param DOMElement $xml The XML element object to parse */ - public function parseImage( ezcFeed $feed, DOMElement $xml ) - { - $feedImage = $feed->newImage(); + public function parseImage( ezcFeed $feed, ezcFeedElement $element, DOMElement $xml ) + { foreach ( $xml->childNodes as $itemChild ) { if ( $itemChild->nodeType === XML_ELEMENT_NODE ) @@ -565,7 +601,7 @@ case 'description': case 'width': case 'height': - $feedImage->$tagName = $itemChild->textContent; + $element->$tagName = $itemChild->textContent; break; } } 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] Mon Oct 29 14:11:38 2007 @@ -128,7 +128,6 @@ if ( is_array( $subValue ) ) { $subElement = $element->add( $subKey ); - $subElement->set( 'yyy' ); foreach ( $subValue as $subSubKey => $subSubValue ) { $subElement->$subSubKey = $subSubValue; Added: trunk/Feed/tests/rss2/regression/generate/image/image_complete.in ============================================================================== --- trunk/Feed/tests/rss2/regression/generate/image/image_complete.in (added) +++ trunk/Feed/tests/rss2/regression/generate/image/image_complete.in [iso-8859-1] Mon Oct 29 14:11:38 2007 @@ -1,0 +1,13 @@ +<?php +return array( 'title' => 'Feed title', + 'link' => array( 'Feed link' ), + 'description' => 'Feed description', + 'image' => array( array( 'url' => 'Image url', + 'title' => 'Image title', + 'link' => 'Image link', + 'description' => 'Image description', + 'width' => 50, + 'height' => 100, + ) ), + ); +?> Added: trunk/Feed/tests/rss2/regression/generate/image/image_complete.out ============================================================================== --- trunk/Feed/tests/rss2/regression/generate/image/image_complete.out (added) +++ trunk/Feed/tests/rss2/regression/generate/image/image_complete.out [iso-8859-1] Mon Oct 29 14:11:38 2007 @@ -1,0 +1,20 @@ +<?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> + <image> + <url>Image url</url> + <title>Image title</title> + <link>Image link</link> + <description>Image description</description> + <width>50</width> + <height>100</height> + </image> + </channel> +</rss> + Added: trunk/Feed/tests/rss2/regression/generate/image/image_empty.in ============================================================================== --- trunk/Feed/tests/rss2/regression/generate/image/image_empty.in (added) +++ trunk/Feed/tests/rss2/regression/generate/image/image_empty.in [iso-8859-1] Mon Oct 29 14:11:38 2007 @@ -1,0 +1,7 @@ +<?php +return array( 'title' => 'Feed title', + 'link' => array( 'Feed link' ), + 'description' => 'Feed description', + 'image' => array( array() ), + ); +?> Added: trunk/Feed/tests/rss2/regression/generate/image/image_empty.out ============================================================================== --- trunk/Feed/tests/rss2/regression/generate/image/image_empty.out (added) +++ trunk/Feed/tests/rss2/regression/generate/image/image_empty.out [iso-8859-1] Mon Oct 29 14:11:38 2007 @@ -1,0 +1,1 @@ +There was no data submitted for required channel attribute 'url'. Added: trunk/Feed/tests/rss2/regression/generate/image/image_url+title+link.in ============================================================================== --- trunk/Feed/tests/rss2/regression/generate/image/image_url+title+link.in (added) +++ trunk/Feed/tests/rss2/regression/generate/image/image_url+title+link.in [iso-8859-1] Mon Oct 29 14:11:38 2007 @@ -1,0 +1,9 @@ +<?php +return array( 'title' => 'Feed title', + 'link' => array( 'Feed link' ), + 'description' => 'Feed description', + 'image' => array( array( 'url' => 'Image url', + 'title' => 'Image title', + 'link' => 'Image link' ) ), + ); +?> Added: trunk/Feed/tests/rss2/regression/generate/image/image_url+title+link.out ============================================================================== --- trunk/Feed/tests/rss2/regression/generate/image/image_url+title+link.out (added) +++ trunk/Feed/tests/rss2/regression/generate/image/image_url+title+link.out [iso-8859-1] Mon Oct 29 14:11:38 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> + <image> + <url>Image url</url> + <title>Image title</title> + <link>Image link</link> + </image> + </channel> +</rss> + Added: trunk/Feed/tests/rss2/regression/generate/image/image_url+title.in ============================================================================== --- trunk/Feed/tests/rss2/regression/generate/image/image_url+title.in (added) +++ trunk/Feed/tests/rss2/regression/generate/image/image_url+title.in [iso-8859-1] Mon Oct 29 14:11:38 2007 @@ -1,0 +1,8 @@ +<?php +return array( 'title' => 'Feed title', + 'link' => array( 'Feed link' ), + 'description' => 'Feed description', + 'image' => array( array( 'url' => 'Image url', + 'title' => 'Image title' ) ), + ); +?> Added: trunk/Feed/tests/rss2/regression/generate/image/image_url+title.out ============================================================================== --- trunk/Feed/tests/rss2/regression/generate/image/image_url+title.out (added) +++ trunk/Feed/tests/rss2/regression/generate/image/image_url+title.out [iso-8859-1] Mon Oct 29 14:11:38 2007 @@ -1,0 +1,1 @@ +There was no data submitted for required channel attribute 'link'. Added: trunk/Feed/tests/rss2/regression/generate/image/image_url.in ============================================================================== --- trunk/Feed/tests/rss2/regression/generate/image/image_url.in (added) +++ trunk/Feed/tests/rss2/regression/generate/image/image_url.in [iso-8859-1] Mon Oct 29 14:11:38 2007 @@ -1,0 +1,7 @@ +<?php +return array( 'title' => 'Feed title', + 'link' => array( 'Feed link' ), + 'description' => 'Feed description', + 'image' => array( array( 'url' => 'Image url' ) ), + ); +?> Added: trunk/Feed/tests/rss2/regression/generate/image/image_url.out ============================================================================== --- trunk/Feed/tests/rss2/regression/generate/image/image_url.out (added) +++ trunk/Feed/tests/rss2/regression/generate/image/image_url.out [iso-8859-1] Mon Oct 29 14:11:38 2007 @@ -1,0 +1,1 @@ +There was no data submitted for required channel attribute 'title'. Added: trunk/Feed/tests/rss2/regression/parse/image/image_complete.in ============================================================================== --- trunk/Feed/tests/rss2/regression/parse/image/image_complete.in (added) +++ trunk/Feed/tests/rss2/regression/parse/image/image_complete.in [iso-8859-1] Mon Oct 29 14:11:38 2007 @@ -1,0 +1,16 @@ +<?xml version="1.0" encoding="utf-8"?> +<rss version="2.0"> + <channel> + <title>Feed title</title> + <link>Feed link</link> + <description>Feed description</description> + <image> + <url>Image url</url> + <title>Image title</title> + <link>Image link</link> + <description>Image description</description> + <width>50</width> + <height>100</height> + </image> + </channel> +</rss> Added: trunk/Feed/tests/rss2/regression/parse/image/image_complete.out ============================================================================== --- trunk/Feed/tests/rss2/regression/parse/image/image_complete.out (added) +++ trunk/Feed/tests/rss2/regression/parse/image/image_complete.out [iso-8859-1] Mon Oct 29 14:11:38 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'; + +$image = $feed->add( 'image' ); +$image->url = 'Image url'; +$image->title = 'Image title'; +$image->link = 'Image link'; +$image->description = 'Image description'; +$image->width = 50; +$image->height = 100; + +return $feed; +?> Added: trunk/Feed/tests/rss2/regression/parse/image/image_empty.in ============================================================================== --- trunk/Feed/tests/rss2/regression/parse/image/image_empty.in (added) +++ trunk/Feed/tests/rss2/regression/parse/image/image_empty.in [iso-8859-1] Mon Oct 29 14:11:38 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> + <image/> + </channel> +</rss> Added: trunk/Feed/tests/rss2/regression/parse/image/image_empty.out ============================================================================== --- trunk/Feed/tests/rss2/regression/parse/image/image_empty.out (added) +++ trunk/Feed/tests/rss2/regression/parse/image/image_empty.out [iso-8859-1] Mon Oct 29 14:11:38 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'; + +$image = $feed->add( 'image' ); + +return $feed; +?> Added: trunk/Feed/tests/rss2/regression/parse/image/image_simple.in ============================================================================== --- trunk/Feed/tests/rss2/regression/parse/image/image_simple.in (added) +++ trunk/Feed/tests/rss2/regression/parse/image/image_simple.in [iso-8859-1] Mon Oct 29 14:11:38 2007 @@ -1,0 +1,13 @@ +<?xml version="1.0" encoding="utf-8"?> +<rss version="2.0"> + <channel> + <title>Feed title</title> + <link>Feed link</link> + <description>Feed description</description> + <image> + <url>Image url</url> + <title>Image title</title> + <link>Image link</link> + </image> + </channel> +</rss> Added: trunk/Feed/tests/rss2/regression/parse/image/image_simple.out ============================================================================== --- trunk/Feed/tests/rss2/regression/parse/image/image_simple.out (added) +++ trunk/Feed/tests/rss2/regression/parse/image/image_simple.out [iso-8859-1] Mon Oct 29 14:11:38 2007 @@ -1,0 +1,17 @@ +<?php +$feed = new ezcFeed( 'rss2' ); + +$feed->title = 'Feed title'; + +$link = $feed->add( 'link' ); +$link->set( 'Feed link' ); + +$feed->description = 'Feed description'; + +$image = $feed->add( 'image' ); +$image->url = 'Image url'; +$image->title = 'Image title'; +$image->link = 'Image link'; + +return $feed; +?> -- svn-components mailing list svn-components@lists.ez.no http://lists.ez.no/mailman/listinfo/svn-components