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

Reply via email to