Ejemplo n.º 1
0
 /**
  * Fetch the latest data for a feed from its specified URL.
  * Individual entries are returned in the 'entries' key of the return array.
  *
  * @param string $url
  * @param Exception|null $e Exception that occurs when reading feed
  *
  * @return array
  */
 public function getFeedData($url, Exception &$e = null)
 {
     try {
         $feed = Zend_Feed_Reader::import($url);
     } catch (Exception $feedEx) {
         $e = $feedEx;
         return array();
     }
     $data = array('id' => $feed->getId(), 'title' => $feed->getTitle(), 'link' => $feed->getLink(), 'date_modified' => $feed->getDateModified(), 'description' => $feed->getDescription(), 'language' => $feed->getLanguage(), 'image' => $feed->getImage(), 'generator' => $feed->getGenerator(), 'entries' => array());
     foreach ($feed as $entry) {
         /** @var $entry Zend_Feed_Reader_EntryInterface */
         $entryData = array('id' => $entry->getId(), 'title' => html_entity_decode($entry->getTitle(), ENT_COMPAT, 'utf-8'), 'description' => html_entity_decode($entry->getDescription(), ENT_COMPAT, 'utf-8'), 'date_modified' => null, 'authors' => $entry->getAuthors(), 'link' => $entry->getLink(), 'content_html' => $entry->getContent());
         $enclosure = $entry->getEnclosure();
         if ($enclosure) {
             $entryData['enclosure_url'] = $enclosure->url;
             $entryData['enclosure_length'] = $enclosure->length;
             $entryData['enclosure_type'] = $enclosure->type;
         }
         if (utf8_strlen($entryData['id']) > 250) {
             $entryData['id'] = md5($entryData['id']);
         }
         try {
             $entryData['date_modified'] = $entry->getDateModified();
         } catch (Zend_Exception $e) {
         }
         // triggered with invalid date format
         if (!empty($entryData['date_modified']) && $entryData['date_modified'] instanceof Zend_Date) {
             $entryData['date_modified'] = $entryData['date_modified']->getTimeStamp();
         } else {
             $entryData['date_modified'] = XenForo_Application::$time;
         }
         $entryData['date_modified'] = XenForo_Locale::dateTime($entryData['date_modified'], 'absolute');
         $data['entries'][] = $entryData;
     }
     $data = XenForo_Input::cleanStringArray($data);
     return $data;
 }