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