Browse Source

Added date parsing for the nebulous RSS format (non-standard) - fixes ZF-7908

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

+ 10 - 6
library/Zend/Feed/Reader/Entry/Rss.php

@@ -263,13 +263,17 @@ class Zend_Feed_Reader_Entry_Rss extends Zend_Feed_Reader_EntryAbstract implemen
                         $date->set($dateModified, Zend_Date::RFC_2822);
                     } catch (Zend_Date_Exception $e) {
                         try {
-                            $date->set($dateModified, Zend_Date::DATES);
+                            $date->set($dateModified, Zend_Date::RSS);
                         } catch (Zend_Date_Exception $e) {
-                            require_once 'Zend/Feed/Exception.php';
-                            throw new Zend_Feed_Exception(
-                                'Could not load date due to unrecognised format (should follow RFC 822 or 2822): '
-                                . $e->getMessage()
-                            );
+                            try {
+                                $date->set($dateModified, Zend_Date::DATES);
+                            } catch (Zend_Date_Exception $e) {
+                                require_once 'Zend/Feed/Exception.php';
+                                throw new Zend_Feed_Exception(
+                                    'Could not load date due to unrecognised format (should follow RFC 822 or 2822): '
+                                    . $e->getMessage()
+                                );
+                            }
                         }
                     }
                 }

+ 10 - 6
library/Zend/Feed/Reader/Feed/Rss.php

@@ -209,13 +209,17 @@ class Zend_Feed_Reader_Feed_Rss extends Zend_Feed_Reader_FeedAbstract
                         $date->set($dateModified, Zend_Date::RFC_2822);
                     } catch (Zend_Date_Exception $e) {
                         try {
-                            $date->set($dateModified, Zend_Date::DATES);
+                            $date->set($dateModified, Zend_Date::RSS);
                         } catch (Zend_Date_Exception $e) {
-                            require_once 'Zend/Feed/Exception.php';
-                            throw new Zend_Feed_Exception(
-                                'Could not load date due to unrecognised format (should follow RFC 822 or 2822): '
-                                . $e->getMessage()
-                            );
+                            try {
+                                $date->set($dateModified, Zend_Date::DATES);
+                            } catch (Zend_Date_Exception $e) {
+                                require_once 'Zend/Feed/Exception.php';
+                                throw new Zend_Feed_Exception(
+                                    'Could not load date due to unrecognised format (should follow RFC 822 or 2822): '
+                                    . $e->getMessage()
+                                );
+                            }
                         }
                     }
                 }

+ 12 - 0
tests/Zend/Feed/Reader/Entry/RssTest.php

@@ -1979,6 +1979,18 @@ class Zend_Feed_Reader_Entry_RssTest extends PHPUnit_Framework_TestCase
     }
 
     /**
+     * @issue ZF-7908
+     */
+    public function testGetsDateModifiedFromRss20_UnrecognisedGmtFormat()
+    {
+        $feed = Zend_Feed_Reader::importString(
+            file_get_contents($this->_feedSamplePath.'/datemodified/plain/rss20-zf-7908.xml')
+        );
+        $entry = $feed->current();
+        $this->assertEquals('Sunday 11 January 2009 09 55 59 +0000', $entry->getDateModified()->toString('EEEE dd MMMM YYYY HH mm ss ZZZ'));
+    }
+
+    /**
      * Get CommentCount (Unencoded Text)
      */