/** * 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); }