[FeedExpander] Fix SimplXMLElement serialization error

Previously FeedExpander stored SimpleXMLElement objects into
the items array. These objects cannot be serialized using the
serialize function.
This commit is contained in:
logmanoriginal 2016-10-02 18:07:56 +02:00
parent f0f0ffb96a
commit ee7ddcf992

View file

@ -112,21 +112,21 @@ abstract class FeedExpander extends BridgeAbstract {
protected function parseATOMItem($feedItem){ protected function parseATOMItem($feedItem){
$item = array(); $item = array();
if(isset($feedItem->id)) $item['uri'] = $feedItem->id; if(isset($feedItem->id)) $item['uri'] = (string)$feedItem->id;
if(isset($feedItem->title)) $item['title'] = $feedItem->title; if(isset($feedItem->title)) $item['title'] = (string)$feedItem->title;
if(isset($feedItem->updated)) $item['timestamp'] = strtotime($feedItem->updated); if(isset($feedItem->updated)) $item['timestamp'] = strtotime((string)$feedItem->updated);
if(isset($feedItem->author)) $item['author'] = $feedItem->author->name; if(isset($feedItem->author)) $item['author'] = (string)$feedItem->author->name;
if(isset($feedItem->content)) $item['content'] = $feedItem->content; if(isset($feedItem->content)) $item['content'] = (string)$feedItem->content;
return $item; return $item;
} }
protected function parseRSS_0_9_1_Item($feedItem){ protected function parseRSS_0_9_1_Item($feedItem){
$item = array(); $item = array();
if(isset($feedItem->link)) $item['uri'] = $feedItem->link; if(isset($feedItem->link)) $item['uri'] = (string)$feedItem->link;
if(isset($feedItem->title)) $item['title'] = $feedItem->title; if(isset($feedItem->title)) $item['title'] = (string)$feedItem->title;
// rss 0.91 doesn't support timestamps // rss 0.91 doesn't support timestamps
// rss 0.91 doesn't support authors // rss 0.91 doesn't support authors
if(isset($feedItem->description)) $item['content'] = $feedItem->description; if(isset($feedItem->description)) $item['content'] = (string)$feedItem->description;
return $item; return $item;
} }
@ -137,8 +137,8 @@ abstract class FeedExpander extends BridgeAbstract {
$namespaces = $feedItem->getNamespaces(true); $namespaces = $feedItem->getNamespaces(true);
if(isset($namespaces['dc'])){ if(isset($namespaces['dc'])){
$dc = $feedItem->children($namespaces['dc']); $dc = $feedItem->children($namespaces['dc']);
if(isset($dc->date)) $item['timestamp'] = strtotime($dc->date); if(isset($dc->date)) $item['timestamp'] = strtotime((string)$dc->date);
if(isset($dc->creator)) $item['author'] = $dc->creator; if(isset($dc->creator)) $item['author'] = (string)$dc->creator;
} }
return $item; return $item;
@ -155,21 +155,21 @@ abstract class FeedExpander extends BridgeAbstract {
foreach($feedItem->guid->attributes() as $attribute => $value){ foreach($feedItem->guid->attributes() as $attribute => $value){
if($attribute === 'isPermaLink' if($attribute === 'isPermaLink'
&& ($value === 'true' || filter_var($feedItem->guid,FILTER_VALIDATE_URL))){ && ($value === 'true' || filter_var($feedItem->guid,FILTER_VALIDATE_URL))){
$item['uri'] = $feedItem->guid; $item['uri'] = (string)$feedItem->guid;
break; break;
} }
} }
} }
if(isset($feedItem->pubDate)){ if(isset($feedItem->pubDate)){
$item['timestamp'] = strtotime($feedItem->pubDate); $item['timestamp'] = strtotime((string)$feedItem->pubDate);
} elseif(isset($dc->date)){ } elseif(isset($dc->date)){
$item['timestamp'] = strtotime($dc->date); $item['timestamp'] = strtotime((string)$dc->date);
} }
if(isset($feedItem->author)){ if(isset($feedItem->author)){
$item['author'] = $feedItem->author; $item['author'] = (string)$feedItem->author;
} elseif(isset($dc->creator)){ } elseif(isset($dc->creator)){
$item['author'] = $dc->creator; $item['author'] = (string)$dc->creator;
} }
return $item; return $item;
} }