Browse Source

Added preliminary Atom 1.0 Source support (fatal error is known)

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@19280 44c647ce-9c0f-0410-b52a-842ac1e357ba
padraic 16 years ago
parent
commit
7a20ca8e32

+ 18 - 0
library/Zend/Feed/Reader/Entry/Atom.php

@@ -366,6 +366,24 @@ class Zend_Feed_Reader_Entry_Atom extends Zend_Feed_Reader_EntryAbstract impleme
 
         return $this->_data['categories'];
     }
+    
+    /**
+     * Get source feed metadata from the entry
+     *
+     * @return Zend_Feed_Reader_Feed_Atom_Source|null
+     */
+    public function getSource()
+    {
+        if (array_key_exists('source', $this->_data)) {
+            return $this->_data['source'];
+        }
+
+        $source = $this->getExtension('Atom')->getSource();
+
+        $this->_data['source'] = $source;
+
+        return $this->_data['source']; 
+    }
 
     /**
      * Set the XPath query (incl. on all Extensions)

+ 0 - 10
library/Zend/Feed/Reader/EntryAbstract.php

@@ -170,16 +170,6 @@ abstract class Zend_Feed_Reader_EntryAbstract
     }
 
     /**
-     * Serialize the entry to an array
-     *
-     * @return array
-     */
-    public function toArray()
-    {
-        return $this->_data;
-    }
-
-    /**
      * Get registered extensions
      *
      * @return array

+ 31 - 0
library/Zend/Feed/Reader/Extension/Atom/Entry.php

@@ -45,6 +45,11 @@ require_once 'Zend/Uri.php';
 require_once 'Zend/Feed/Reader/Collection/Category.php';
 
 /**
+ * @see Zend_Feed_Reader_Feed_Atom_Source
+ */
+require_once 'Zend/Feed/Reader/Feed/Atom/Source.php';
+
+/**
  * @category   Zend
  * @package    Zend_Feed_Reader
  * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
@@ -505,6 +510,32 @@ class Zend_Feed_Reader_Extension_Atom_Entry
 
         return $this->_data['categories'];
     }
+    
+    /**
+     * Get source feed metadata from the entry
+     *
+     * @return Zend_Feed_Reader_Feed_Atom_Source|null
+     */
+    public function getSource()
+    {
+        if (array_key_exists('source', $this->_data)) {
+            return $this->_data['source'];
+        }
+
+        if ($this->_getAtomType() == Zend_Feed_Reader::TYPE_ATOM_10) {
+            $source = $this->_xpath->query($this->getXpathPrefix() . '/atom:source[1]');
+        } else {
+            $source = null;
+        }
+        
+        if ($source) {
+            $source = new Zend_Feed_Reader_Feed_Atom_Source($source, $this->getXpathPrefix());
+        }
+
+        $this->_data['source'] = $source;
+
+        return $this->_data['source']; 
+    }
 
     /**
      *  Attempt to absolutise the URI, i.e. if a relative URI apply the

+ 2 - 1
library/Zend/Feed/Reader/Feed/Atom.php

@@ -44,7 +44,7 @@ class Zend_Feed_Reader_Feed_Atom extends Zend_Feed_Reader_FeedAbstract
      * @param  DOMDocument $dom
      * @param  string $type
      */
-    public function __construct(DomDocument $dom, $type = null)
+    public function __construct(DOMDocument $dom, $type = null)
     {
         parent::__construct($dom, $type);
         $atomClass = Zend_Feed_Reader::getPluginLoader()->getClassName('Atom_Feed');
@@ -356,6 +356,7 @@ class Zend_Feed_Reader_Feed_Atom extends Zend_Feed_Reader_FeedAbstract
     /**
      * Read all entries to the internal entries array
      *
+     * @return void
      */
     protected function _indexEntries()
     {

+ 5 - 11
library/Zend/Feed/Reader/FeedAbstract.php

@@ -29,7 +29,6 @@ require_once 'Zend/Feed/Reader.php';
  */
 require_once 'Zend/Feed/Reader/Entry/Atom.php';
 
-
 /**
  * @see Zend_Feed_Reader_Entry_Rss
  */
@@ -83,6 +82,11 @@ abstract class Zend_Feed_Reader_FeedAbstract implements Zend_Feed_Reader_FeedInt
      */
     protected $_xpath = null;
 
+    /**
+     * Array of loaded extensions
+     *
+     * @var array
+     */
     protected $_extensions = array();
 
     /**
@@ -228,16 +232,6 @@ abstract class Zend_Feed_Reader_FeedAbstract implements Zend_Feed_Reader_FeedInt
     }
 
     /**
-     * Return the feed as an array
-     *
-     * @return array
-     */
-    public function toArray() // untested
-    {
-        return $this->_data;
-    }
-
-    /**
      * Check to see if the iterator is still valid
      *
      * @return boolean

+ 4 - 0
tests/Zend/Feed/AllTests.php

@@ -53,6 +53,8 @@ require_once 'Zend/Feed/Reader/Entry/AtomTest.php';
 require_once 'Zend/Feed/Reader/Feed/CommonTest.php';
 require_once 'Zend/Feed/Reader/Entry/CommonTest.php';
 
+require_once 'Zend/Feed/Reader/Feed/AtomSourceTest.php';
+
 require_once 'Zend/Feed/Reader/Integration/WordpressRss2DcAtomTest.php';
 require_once 'Zend/Feed/Reader/Integration/WordpressAtom10Test.php';
 require_once 'Zend/Feed/Reader/Integration/LautDeRdfTest.php';
@@ -101,6 +103,8 @@ class Zend_Feed_AllTests
         $suite->addTestSuite('Zend_Feed_Reader_Feed_CommonTest');
         // COMMON - Entry Level
         $suite->addTestSuite('Zend_Feed_Reader_Entry_CommonTest');
+        // ATOM - Entry Level (Source Feed Metadata)
+        $suite->addTestSuite('Zend_Feed_Reader_Feed_AtomSourceTest');
         /**
          * Real World Feed Tests
          */