/** * Render the output of an RSS feed * * @param string $url URL of the feed * @param array $params Finetuning of the output */ function rss($url, $params) { global $lang; require_once DOKU_INC . 'inc/FeedParser.php'; $feed = new FeedParser(); $feed->feed_url($url); //disable warning while fetching $elvl = null; if (!defined('DOKU_E_LEVEL')) { $elvl = error_reporting(E_ERROR); } $rc = $feed->init(); if (!defined('DOKU_E_LEVEL')) { error_reporting($elvl); } //decide on start and end if ($params['reverse']) { $mod = -1; $start = $feed->get_item_quantity() - 1; $end = $start - $params['max']; $end = $end < -1 ? -1 : $end; } else { $mod = 1; $start = 0; $end = $feed->get_item_quantity(); $end = $end > $params['max'] ? $params['max'] : $end; } $this->listu_open(); if ($rc) { for ($x = $start; $x != $end; $x += $mod) { $item = $feed->get_item($x); $this->listitem_open(0); $this->listcontent_open(); $this->externallink($item->get_permalink(), $item->get_title()); if ($params['author']) { $author = $item->get_author(0); if ($author) { $name = $author->get_name(); if (!$name) { $name = $author->get_email(); } if ($name) { $this->cdata(' ' . $lang['by'] . ' ' . $name); } } } if ($params['date']) { $this->cdata(' (' . $item->get_date($this->config->getParam('dformat')) . ')'); } if ($params['details']) { $this->cdata(strip_tags($item->get_description())); } $this->listcontent_close(); $this->listitem_close(); } } else { $this->listitem_open(0); $this->listcontent_open(); $this->emphasis_open(); $this->cdata($lang['rssfailed']); $this->emphasis_close(); $this->externallink($url); $this->listcontent_close(); $this->listitem_close(); } $this->listu_close(); }
/** * Renders an RSS feed * * @author Andreas Gohr <*****@*****.**> */ function rss($url, $params) { global $lang; global $conf; require_once DOKU_INC . 'inc/FeedParser.php'; $feed = new FeedParser(); $feed->set_feed_url($url); //disable warning while fetching if (!defined('DOKU_E_LEVEL')) { $elvl = error_reporting(E_ERROR); } $rc = $feed->init(); if (isset($elvl)) { error_reporting($elvl); } if ($params['nosort']) { $feed->enable_order_by_date(false); } //decide on start and end if ($params['reverse']) { $mod = -1; $start = $feed->get_item_quantity() - 1; $end = $start - $params['max']; $end = $end < -1 ? -1 : $end; } else { $mod = 1; $start = 0; $end = $feed->get_item_quantity(); $end = $end > $params['max'] ? $params['max'] : $end; } $this->doc .= '<ul class="rss">'; if ($rc) { for ($x = $start; $x != $end; $x += $mod) { $item = $feed->get_item($x); $this->doc .= '<li><div class="li">'; // support feeds without links $lnkurl = $item->get_permalink(); if ($lnkurl) { // title is escaped by SimplePie, we unescape here because it // is escaped again in externallink() FS#1705 $this->externallink($item->get_permalink(), html_entity_decode($item->get_title(), ENT_QUOTES, 'UTF-8')); } else { $this->doc .= ' ' . $item->get_title(); } if ($params['author']) { $author = $item->get_author(0); if ($author) { $name = $author->get_name(); if (!$name) { $name = $author->get_email(); } if ($name) { $this->doc .= ' ' . $lang['by'] . ' ' . $name; } } } if ($params['date']) { $this->doc .= ' (' . $item->get_local_date($conf['dformat']) . ')'; } if ($params['details']) { $this->doc .= '<div class="detail">'; if ($conf['htmlok']) { $this->doc .= $item->get_description(); } else { $this->doc .= strip_tags($item->get_description()); } $this->doc .= '</div>'; } $this->doc .= '</div></li>'; } } else { $this->doc .= '<li><div class="li">'; $this->doc .= '<em>' . $lang['rssfailed'] . '</em>'; $this->externallink($url); if ($conf['allowdebug']) { $this->doc .= '<!--' . hsc($feed->error) . '-->'; } $this->doc .= '</div></li>'; } $this->doc .= '</ul>'; }
/** * Renders an RSS feed * * @author Andreas Gohr <*****@*****.**> */ function rss($url, $params) { global $lang; global $conf; require_once DOKU_INC . 'inc/FeedParser.php'; $feed = new FeedParser(); $feed->feed_url($url); //disable warning while fetching if (!defined('DOKU_E_LEVEL')) { $elvl = error_reporting(E_ERROR); } $rc = $feed->init(); if (!defined('DOKU_E_LEVEL')) { error_reporting($elvl); } //decide on start and end if ($params['reverse']) { $mod = -1; $start = $feed->get_item_quantity() - 1; $end = $start - $params['max']; $end = $end < -1 ? -1 : $end; } else { $mod = 1; $start = 0; $end = $feed->get_item_quantity(); $end = $end > $params['max'] ? $params['max'] : $end; } //$this->doc .= '<ul class="rss">'; $this->listu_open(); if ($rc) { for ($x = $start; $x != $end; $x += $mod) { $item = $feed->get_item($x); //$this->doc .= '<li><div class="li">'; $this->listitem_open(1); $this->externallink($item->get_permalink(), $item->get_title()); if ($params['author']) { $author = $item->get_author(0); if ($author) { $name = $author->get_name(); if (!$name) { $name = $author->get_email(); } if ($name) { $this->cdata(' ' . $lang['by'] . ' ' . $name); } //$this->doc .= ' '.$lang['by'].' '.$name; } } if ($params['date']) { $this->cdata(' (' . $item->get_date($conf['dformat']) . ')'); //$this->doc .= ' ('.$item->get_date($conf['dformat']).')'; } if ($params['details']) { //$this->doc .= '<div class="detail">'; if ($htmlok) { $this->cdata($item->get_description()); } else { $this->cdata(strip_tags($item->get_description())); } //$this->doc .= '</div>'; } //$this->doc .= '</div></li>'; $this->listitem_close(); } } else { //$this->doc .= '<li><div class="li">'; $this->listitem_open(1); $this->emphasis_open(); //$this->doc .= '<em>'.$lang['rssfailed'].'</em>'; $this->cdata($lang['rssfailed']); $this->emphasis_close(); $this->externallink($url); // if($conf['allowdebug']){ // $this->doc .= '<!--'.hsc($feed->error).'-->'; // } // $this->doc .= '</div></li>'; $this->listitem_close(); } // $this->doc .= '</ul>'; $this->listu_close(); }