You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shindig.apache.org by ch...@apache.org on 2008/11/07 15:23:26 UTC

svn commit: r712132 - /incubator/shindig/trunk/php/src/gadgets/ProxyHandler.php

Author: chabotc
Date: Fri Nov  7 06:23:13 2008
New Revision: 712132

URL: http://svn.apache.org/viewvc?rev=712132&view=rev
Log:
SHINDIG-597 by Eiji Kitamura, make feed fetcher results consistent with latest java shindig code

Modified:
    incubator/shindig/trunk/php/src/gadgets/ProxyHandler.php

Modified: incubator/shindig/trunk/php/src/gadgets/ProxyHandler.php
URL: http://svn.apache.org/viewvc/incubator/shindig/trunk/php/src/gadgets/ProxyHandler.php?rev=712132&r1=712131&r2=712132&view=diff
==============================================================================
--- incubator/shindig/trunk/php/src/gadgets/ProxyHandler.php (original)
+++ incubator/shindig/trunk/php/src/gadgets/ProxyHandler.php Fri Nov  7 06:23:13 2008
@@ -77,7 +77,7 @@
 			if (isset($_GET['contentType']) && $_GET['contentType'] == 'FEED') {
 				require 'external/Zend/Feed.php';
 				$numEntries = $_GET['numEntries'];
-				$getSummaries = $_GET['getSummaries'];
+				$getSummaries = ! empty($_GET['getSummaries']) && $_GET['getSummaries'] != 'false' ? true : false;
 				$channel = array();
 				$request = new RemoteContentRequest($url);
 				$request = $this->context->getHttpFetcher()->fetch($request, $this->context);
@@ -86,45 +86,96 @@
 					try {
 						$feed = Zend_Feed::importString($content);
 						if ($feed instanceof Zend_Feed_Rss) {
-							$channel = array('title' => $feed->title(), 
-									'link' => $feed->link(), 
-									'description' => $feed->description(), 
-									'pubDate' => $feed->pubDate(), 
-									'language' => $feed->language(), 
-									'category' => $feed->category(), 'items' => array());
+							// Try get author
+							if ($feed->author()) {
+								$author = $feed->author();
+							} else 
+								if ($feed->creator()) {
+									$author = $feed->creator();
+								}
 							// Loop over each channel item and store relevant data
 							$counter = 0;
+							$channel['Entry'] = array();
 							foreach ($feed as $item) {
 								if ($counter >= $numEntries) {
 									break;
 								}
+								$_entry = array();
+								$_entry['Title'] = $item->title();
+								$_entry['Link'] = $item->link();
+								if ($getSummaries && $item->description()) {
+									$_entry['Summary'] = $item->description();
+								}
+								$date = 0;
+								if ($item->date()) {
+									$date = strtotime($item->date());
+								} else {
+									if ($item->pubDate()) {
+										$date = strtotime($item->pubDate());
+									}
+								}
+								$_entry['Date'] = $date;
+								$channel['Entry'][] = $_entry;
+								// Remember author if first found
+								if (empty($author) && $item->author()) {
+									$author = $item->author();
+								} else 
+									if ($item->creator()) {
+										$author = $item->creator();
+									}
 								$counter ++;
-								$channel['items'][] = array('title' => $item->title(), 
-										'link' => $item->link(), 
-										'author' => $item->author(), 
-										'description' => $getSummaries ? $item->description() : '', 
-										'category' => $item->category(), 
-										'comments' => $item->comments(), 
-										'pubDate' => $item->pubDate());
 							}
+							$channel['Title'] = $feed->title();
+							$channel['URL'] = $url;
+							$channel['Description'] = $feed->description();
+							if ($feed->link()) {
+								if (is_array($feed->link())) {
+									foreach ($feed->link() as $_link) {
+										if ($_link->nodeValue)
+											$channel['Link'] = $_link->nodeValue;
+									}
+								} else {
+									$channel['Link'] = $feed->link();
+								}
+							}
+							$channel['Author'] = $author;
 						} elseif ($feed instanceof Zend_Feed_Atom) {
-							$channel = array('title' => $feed->title(), 
-									'link' => $feed->link(), 'id' => $feed->id(), 
-									'subtitle' => $feed->subtitle(), 'items' => array());
+							// Try get author
+							$author = $feed->author() ? $feed->author() : '';
+							// Loop over each entries and store relevant data
 							$counter = 0;
+							$channel['Entry'] = array();
 							foreach ($feed as $entry) {
 								if ($counter >= $numEntries) {
 									break;
 								}
-								$channel['items'][] = array('id' => $entry->id(), 
-										'title' => $entry->title(), 
-										'link' => $entry->link('alternate'), 
-										'summary' => $entry->summary(), 
-										'content' => $entry->content(), 
-										'author' => $entry->author(), 
-										'published' => $entry->published(), 
-										'updated' => $entry->updated());
+								$_entry = array();
+								$_entry['Title'] = $entry->title();
+								$_entry['Link'] = $entry->link('alternate');
+								if ($getSummaries && $entry->summary()) {
+									$_entry['Summary'] = $entry->summary();
+								}
+								$date = 0;
+								if ($entry->updated()) {
+									$date = strtotime($entry->updated());
+								} else 
+									if ($entry->published()) {
+										$date = strtotime($entry->published());
+									}
+								$_entry['Date'] = $date;
+								
+								$channel['Entry'][] = $_entry;
+								// Remember author if first found
+								if (empty($author) && $entry->author()) {
+									$author = $entry->author();
+								}
+								$counter ++;
 							}
+							$channel['Title'] = $feed->title();
+							$channel['URL'] = $url;
+							$channel['Description'] = $feed->subtitle();
+							$channel['Link'] = $feed->link('alternate');
+							$channel['Author'] = $author;
 						} else {
 							throw new Exception('Invalid feed type');
 						}