Author: as
Date: Mon Nov 12 10:31:12 2007
New Revision: 6706

Log:
- Added support for parsing 'title' ATOM feed element.

Added:
    trunk/Feed/tests/atom/regression/parse/required/
    trunk/Feed/tests/atom/regression/parse/required/title/
    trunk/Feed/tests/atom/regression/parse/required/title/title.in
    trunk/Feed/tests/atom/regression/parse/required/title/title.out
    trunk/Feed/tests/atom/regression/parse/required/title/title_html.in
    trunk/Feed/tests/atom/regression/parse/required/title/title_html.out
    trunk/Feed/tests/atom/regression/parse/required/title/title_text.in
    trunk/Feed/tests/atom/regression/parse/required/title/title_text.out
    trunk/Feed/tests/atom/regression/parse/required/title/title_xhtml.in
    trunk/Feed/tests/atom/regression/parse/required/title/title_xhtml.out
Modified:
    trunk/Feed/src/processors/atom.php

Modified: trunk/Feed/src/processors/atom.php
==============================================================================
--- trunk/Feed/src/processors/atom.php [iso-8859-1] (original)
+++ trunk/Feed/src/processors/atom.php [iso-8859-1] Mon Nov 12 10:31:12 2007
@@ -266,6 +266,61 @@
         $set = $xp->query( './namespace::*', $xml->documentElement );
         $this->usedNamespaces = array();
 
+        foreach ( $channel->childNodes as $channelChild )
+        {
+            if ( $channelChild->nodeType == XML_ELEMENT_NODE )
+            {
+                $tagName = $channelChild->tagName;
+                $tagName = ezcFeedTools::deNormalizeName( $tagName, 
$this->schema->getElementsMap() );
+
+                switch ( $tagName )
+                {
+                    case 'title':
+                        $type = ezcFeedTools::getAttribute( $channelChild, 
'type' );
+
+                        switch ( $type )
+                        {
+                            case 'xhtml':
+                                $nodes = $channelChild->childNodes;
+                                if ( $nodes instanceof DOMNodeList )
+                                {
+                                    $contentNode = $nodes->item( 1 );
+                                    $feed->$tagName = $contentNode->nodeValue;
+                                }
+                                break;
+
+                            case 'html':
+                                $feed->$tagName = $channelChild->textContent;
+                                break;
+
+                            case 'text':
+                                // same case as 'default'
+
+                            default:
+                                $feed->$tagName = $channelChild->textContent;
+                                break;
+                        }
+
+                        break;
+
+                    default:
+                        // check if it's part of a known module/namespace
+                }
+            }
+
+            foreach ( ezcFeedTools::getAttributes( $channelChild ) as $key => 
$value )
+            {
+                if ( in_array( $tagName, array( 'category' ) ) )
+                {
+                    $element->$key = $value;
+                }
+                else
+                {
+                    $feed->$tagName->$key = $value;
+                }
+            }
+        }
+
         return $feed;
     }
 

Added: trunk/Feed/tests/atom/regression/parse/required/title/title.in
==============================================================================
--- trunk/Feed/tests/atom/regression/parse/required/title/title.in (added)
+++ trunk/Feed/tests/atom/regression/parse/required/title/title.in [iso-8859-1] 
Mon Nov 12 10:31:12 2007
@@ -1,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom";>
+  <title>Feed title</title>
+</feed>

Added: trunk/Feed/tests/atom/regression/parse/required/title/title.out
==============================================================================
--- trunk/Feed/tests/atom/regression/parse/required/title/title.out (added)
+++ trunk/Feed/tests/atom/regression/parse/required/title/title.out 
[iso-8859-1] Mon Nov 12 10:31:12 2007
@@ -1,0 +1,5 @@
+<?php
+$feed = new ezcFeed( 'atom' );
+$feed->title = 'Feed title';
+return $feed;
+?>

Added: trunk/Feed/tests/atom/regression/parse/required/title/title_html.in
==============================================================================
--- trunk/Feed/tests/atom/regression/parse/required/title/title_html.in (added)
+++ trunk/Feed/tests/atom/regression/parse/required/title/title_html.in 
[iso-8859-1] Mon Nov 12 10:31:12 2007
@@ -1,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom";>
+  <title type="html">Feed title</title>
+</feed>

Added: trunk/Feed/tests/atom/regression/parse/required/title/title_html.out
==============================================================================
--- trunk/Feed/tests/atom/regression/parse/required/title/title_html.out (added)
+++ trunk/Feed/tests/atom/regression/parse/required/title/title_html.out 
[iso-8859-1] Mon Nov 12 10:31:12 2007
@@ -1,0 +1,6 @@
+<?php
+$feed = new ezcFeed( 'atom' );
+$feed->title = 'Feed title';
+$feed->title->type = 'html';
+return $feed;
+?>

Added: trunk/Feed/tests/atom/regression/parse/required/title/title_text.in
==============================================================================
--- trunk/Feed/tests/atom/regression/parse/required/title/title_text.in (added)
+++ trunk/Feed/tests/atom/regression/parse/required/title/title_text.in 
[iso-8859-1] Mon Nov 12 10:31:12 2007
@@ -1,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom";>
+  <title type="text">Feed title</title>
+</feed>

Added: trunk/Feed/tests/atom/regression/parse/required/title/title_text.out
==============================================================================
--- trunk/Feed/tests/atom/regression/parse/required/title/title_text.out (added)
+++ trunk/Feed/tests/atom/regression/parse/required/title/title_text.out 
[iso-8859-1] Mon Nov 12 10:31:12 2007
@@ -1,0 +1,6 @@
+<?php
+$feed = new ezcFeed( 'atom' );
+$feed->title = 'Feed title';
+$feed->title->type = 'text';
+return $feed;
+?>

Added: trunk/Feed/tests/atom/regression/parse/required/title/title_xhtml.in
==============================================================================
--- trunk/Feed/tests/atom/regression/parse/required/title/title_xhtml.in (added)
+++ trunk/Feed/tests/atom/regression/parse/required/title/title_xhtml.in 
[iso-8859-1] Mon Nov 12 10:31:12 2007
@@ -1,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed xmlns="http://www.w3.org/2005/Atom";>
+  <title type="xhtml" xmlns:xhtml="http://www.w3.org/1999/xhtml";>
+    <xhtml:div>Feed title</xhtml:div>
+  </title>
+</feed>

Added: trunk/Feed/tests/atom/regression/parse/required/title/title_xhtml.out
==============================================================================
--- trunk/Feed/tests/atom/regression/parse/required/title/title_xhtml.out 
(added)
+++ trunk/Feed/tests/atom/regression/parse/required/title/title_xhtml.out 
[iso-8859-1] Mon Nov 12 10:31:12 2007
@@ -1,0 +1,6 @@
+<?php
+$feed = new ezcFeed( 'atom' );
+$feed->title = 'Feed title';
+$feed->title->type = 'xhtml';
+return $feed;
+?>


-- 
svn-components mailing list
[EMAIL PROTECTED]
http://lists.ez.no/mailman/listinfo/svn-components

Reply via email to