Ejemplo n.º 1
0
 /**
  * Static function wrapping RSSParser to handle rendering of RSS elements
  * @param $input String: text inside the tags.
  * @param $args Array: value associative list of the element attributes and
  * 						their values.
  * @param $parser Parser
  * @param $frame PPFrame parser context
  */
 static function renderRss($input, $args, $parser, $frame)
 {
     global $wgRSSCacheAge, $wgRSSCacheCompare, $wgRSSNamespaces, $wgRSSAllowedFeeds;
     if (is_array($wgRSSNamespaces) && count($wgRSSNamespaces)) {
         $ns = $parser->getTitle()->getNamespace();
         $checkNS = array_flip($wgRSSNamespaces);
         if (!isset($checkNS[$ns])) {
             return wfMsg('rss-ns-permission');
         }
     }
     if (count($wgRSSAllowedFeeds) && !in_array($input, $wgRSSAllowedFeeds)) {
         return wfMsg('rss-url-permission');
     }
     if (!Http::isValidURI($input)) {
         return wfMsg('rss-invalid-url', htmlspecialchars($input));
     }
     if ($wgRSSCacheCompare) {
         $timeout = $wgRSSCacheCompare;
     } else {
         $timeout = $wgRSSCacheAge;
     }
     $parser->getOutput()->updateCacheExpiry($timeout);
     $rss = new RSSParser($input, $args);
     $status = $rss->fetch();
     # Check for errors.
     if (!$status->isGood()) {
         return wfMsg('rss-error', htmlspecialchars($input), $status->getWikiText());
     }
     if (!is_object($rss->rss) || !is_array($rss->rss->items)) {
         return wfMsg('rss-empty', htmlspecialchars($input));
     }
     return $rss->renderFeed($parser, $frame);
 }