Assembla home | Assembla project page
 

Changeset 182

Show
Ignore:
Timestamp:
03/21/08 22:45:00 (8 months ago)
Author:
Slynderdale
Message:

Fixed a fatal error in FeedTicker that would cause Phergie to quit with a fatal error if it couldn't parse a feed correctly.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Phergie/Plugin/FeedTicker.php

    r166 r182  
    196196            } 
    197197 
    198             // RSS/RDF Feed 
    199             if (strpos($content, '<rss version=') !== false || strpos($content, '<rdf') !== false) { 
    200                 $xml = new SimpleXMLElement($content); 
    201                 $feedTitle = (string) $xml->channel->title; 
    202                 foreach ($xml->channel->item as $item) { 
    203                     $retrieved[$id][] = array((string) $item->title, (string) $item->link, $chans, $feedTitle); 
     198            try { 
     199                // RSS/RDF Feed 
     200                if (strpos($content, '<rss version=') !== false || strpos($content, '<rdf') !== false) { 
     201                    $xml = new SimpleXMLElement($content); 
     202                    $feedTitle = (string) $xml->channel->title; 
     203                    foreach ($xml->channel->item as $item) { 
     204                        $retrieved[$id][] = array((string) $item->title, (string) $item->link, $chans, $feedTitle); 
     205                    } 
     206                } elseif(strpos($content, '/Atom') !== false) { // ATOM Feed 
     207                    $xml = new SimpleXMLElement($content); 
     208                    $feedTitle = (string) $xml->title; 
     209                    foreach($xml->entry as $item) { 
     210                        $retrieved[$id][] = array((string) $item->title, (string) $item->link[0]['href'], $chans, $feedTitle); 
     211                    } 
     212                } else { // Trouble 
     213                    $this->debug('Feed format unrecognized: ' . $url); 
     214                    continue; 
    204215                } 
    205             } elseif(strpos($content, '/Atom') !== false) { // ATOM Feed 
    206                 $xml = new SimpleXMLElement($content); 
    207                 $feedTitle = (string) $xml->title; 
    208                 foreach($xml->entry as $item) { 
    209                     $retrieved[$id][] = array((string) $item->title, (string) $item->link[0]['href'], $chans, $feedTitle); 
    210                 } 
    211             } else { // Trouble 
    212                 $this->debug('Feed format unrecognized: ' . $url); 
     216            } catch (Exception $e) { 
     217                $this->debug('Caught exception: ',  $e->getMessage()); 
    213218                continue; 
    214219            }