Difference between revisions of "Extension:SimpleRSS.php"
(There's the problem - using object syntax for global function call) |
(updated: need to figure ot dom stuff) |
||
| Line 9: | Line 9: | ||
$wgRobsRSSTag = "rss"; | $wgRobsRSSTag = "rss"; | ||
| − | $wgRSSUseAjax = | + | $wgRSSUseAjax = false; |
$wgExtensionFunctions[] = 'wfSetupRobsRSS'; | $wgExtensionFunctions[] = 'wfSetupRobsRSS'; | ||
$wgExtensionCredits['parserhook'][] = array( | $wgExtensionCredits['parserhook'][] = array( | ||
| − | + | 'name' => 'RobsRSS', | |
| − | + | 'author' => '[http://www.organicdesign.co.nz/User:Rob User:Rob]', | |
| − | + | 'description' => 'A dynamic aggregating RSS reader', | |
| − | + | 'url' => 'http://www.mediawiki.org/wiki/Extension:RobsRSS', | |
| − | + | 'version' => ROBSRSS_VERSION | |
| − | + | ); | |
# Called from $wgExtensionFunctions array when initialising extensions | # Called from $wgExtensionFunctions array when initialising extensions | ||
function wfSetupRobsRSS() { | function wfSetupRobsRSS() { | ||
| − | + | global $wgParser,$wgRSSUseAjax,$wgAjaxExportList,$wgRobsRSSTag; | |
| − | + | $wgParser->setHook($wgRobsRSSTag,'wfRssTagHook'); | |
| − | + | if ($wgRSSUseAjax) $wgAjaxExportList[] = 'wfRenderRSS'; # Allow Ajax Dispatcher to call wfRenderRSS | |
| − | + | } | |
# Expand an <rss> tag | # Expand an <rss> tag | ||
function wfRssTagHook($text,$argv,&$parser) { | function wfRssTagHook($text,$argv,&$parser) { | ||
| − | + | global $wgRSSUseAjax; | |
| − | + | $args = ''; | |
| − | + | foreach ($argv as $k => $v) $args .= "<li><b>$k:</b> <i>$v</i></li>\n"; | |
| − | + | if ($wgRSSUseAjax) { | |
| − | + | # Render a container which does ajax requests for content | |
| − | + | $html = "<div id=foo> an ajax thingie </div>"; | |
| − | + | } | |
| − | + | else { | |
| − | + | # Not using ajax, render the output now | |
| − | + | $html = wfRenderRSS($data,$timestamp); | |
| − | + | } | |
| + | # grab each url and process | ||
| + | $data = wfReadRSS(preg_split("/[\n\r]/", $text, -1, PREG_SPLIT_NO_EMPTY)); | ||
| + | |||
| + | # dump data | ||
| + | foreach ($data as $k => $v) $html .= "<li><b>$k:</b> <i>$v</i></li>\n"; | ||
| + | |||
| + | return $html; | ||
| + | } | ||
| + | |||
| + | # Render a portion of RSS data (which is in the useful format returned by wfReadRSS) | ||
| + | function wfRenderRSS($data,$timestamp = false) { | ||
| + | return $html; | ||
| + | } | ||
| − | |||
| − | |||
| − | |||
| − | |||
# Read RSS from URL's and return as some kind of useful runtime structure | # Read RSS from URL's and return as some kind of useful runtime structure | ||
function wfReadRSS($urls) { | function wfReadRSS($urls) { | ||
| − | + | $data = array(); | |
| − | + | foreach ($urls as $url) { | |
| − | + | $doc = new DOMDocument(); | |
| − | + | # do some cache stuff here | |
| − | + | $doc->load($url); | |
| − | + | # get feed details | |
| − | + | $feed=$doc->getElementsByTagName('channel')->item(0); | |
| − | $feed_title = $ | + | $feed_title = $feed->getElementsByTagName('title') |
->item(0)->childNodes->item(0)->nodeValue; | ->item(0)->childNodes->item(0)->nodeValue; | ||
| − | $feed_link = $ | + | $feed_link = $feed->getElementsByTagName('link') |
->item(0)->childNodes->item(0)->nodeValue; | ->item(0)->childNodes->item(0)->nodeValue; | ||
| − | $feed_desc = $ | + | $feed_desc = $feed->getElementsByTagName('description') |
->item(0)->childNodes->item(0)->nodeValue; | ->item(0)->childNodes->item(0)->nodeValue; | ||
| − | + | $data[] = $feed; | |
| − | + | ||
| − | + | /* foreach ($doc->getElementsByTagName('item') as $item) { | |
| − | + | # what follows looks overly complicated? simplify? | |
| − | + | $item_title=$item->getElementsByTagName('title')->nodeValue; | |
| − | $ | + | $item_link=$doc->item($i)->getElementsByTagName('link') |
->item(0)->childNodes->item(0)->nodeValue; | ->item(0)->childNodes->item(0)->nodeValue; | ||
| − | $ | + | $item_desc=$doc->item($i)->getElementsByTagName('description') |
->item(0)->childNodes->item(0)->nodeValue; | ->item(0)->childNodes->item(0)->nodeValue; | ||
| − | $ | + | $item_date=$doc->item($i)->getElementsByTagName('pubDate') |
->item(0)->childNodes->item(0)->nodeValue; | ->item(0)->childNodes->item(0)->nodeValue; | ||
| − | + | # <pubDate>Tue, 20 May 2003 08:56:02 GMT</pubDate> | |
| − | + | $data[] = "<p>$item_title: $item_link $item_desc $item_date"; | |
| − | # <pubDate>Tue, 20 May 2003 08:56:02 GMT</pubDate> | + | |
| − | $data | ||
| − | |||
# add collected info into $data | # add collected info into $data | ||
# TODO need to grab date information so we can sort | # TODO need to grab date information so we can sort | ||
# Date is in UDF from memory | # Date is in UDF from memory | ||
| − | } | + | }*/ |
| − | + | } | |
| − | + | return $data; | |
| − | + | } | |
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
?> | ?> | ||
Revision as of 07:43, 14 October 2007
<?php
- Extension:RobsRSS
- - Licenced under LGPL (http://www.gnu.org/copyleft/lesser.html)
- - Author: User:RobCategory:Extensions created with Template:Extension
if (!defined('MEDIAWIKI')) die('Not an entry point.');
define('ROBSRSS_VERSION','0.0.0, 2007-10-14');
$wgRobsRSSTag = "rss"; $wgRSSUseAjax = false; $wgExtensionFunctions[] = 'wfSetupRobsRSS'; $wgExtensionCredits['parserhook'][] = array(
'name' => 'RobsRSS',
'author' => 'User:Rob',
'description' => 'A dynamic aggregating RSS reader',
'url' => 'http://www.mediawiki.org/wiki/Extension:RobsRSS',
'version' => ROBSRSS_VERSION
);
- Called from $wgExtensionFunctions array when initialising extensions
function wfSetupRobsRSS() {
global $wgParser,$wgRSSUseAjax,$wgAjaxExportList,$wgRobsRSSTag;
$wgParser->setHook($wgRobsRSSTag,'wfRssTagHook');
if ($wgRSSUseAjax) $wgAjaxExportList[] = 'wfRenderRSS'; # Allow Ajax Dispatcher to call wfRenderRSS
}
- Expand an <rss> tag
function wfRssTagHook($text,$argv,&$parser) {
global $wgRSSUseAjax;
$args = ;
foreach ($argv as $k => $v) $args .= "
\n";
if ($wgRSSUseAjax) {
# Render a container which does ajax requests for content
$html = "
";
}
else {
# Not using ajax, render the output now
$html = wfRenderRSS($data,$timestamp);
}
# grab each url and process
$data = wfReadRSS(preg_split("/[\n\r]/", $text, -1, PREG_SPLIT_NO_EMPTY));
# dump data
foreach ($data as $k => $v) $html .= "
\n";
return $html;
}
- Render a portion of RSS data (which is in the useful format returned by wfReadRSS)
function wfRenderRSS($data,$timestamp = false) {
return $html;
}
- Read RSS from URL's and return as some kind of useful runtime structure
function wfReadRSS($urls) {
$data = array();
foreach ($urls as $url) {
$doc = new DOMDocument();
# do some cache stuff here
$doc->load($url);
# get feed details
$feed=$doc->getElementsByTagName('channel')->item(0);
$feed_title = $feed->getElementsByTagName('title')
->item(0)->childNodes->item(0)->nodeValue;
$feed_link = $feed->getElementsByTagName('link')
->item(0)->childNodes->item(0)->nodeValue;
$feed_desc = $feed->getElementsByTagName('description')
->item(0)->childNodes->item(0)->nodeValue;
$data[] = $feed;
/* foreach ($doc->getElementsByTagName('item') as $item) {
# what follows looks overly complicated? simplify?
$item_title=$item->getElementsByTagName('title')->nodeValue;
$item_link=$doc->item($i)->getElementsByTagName('link')
->item(0)->childNodes->item(0)->nodeValue;
$item_desc=$doc->item($i)->getElementsByTagName('description')
->item(0)->childNodes->item(0)->nodeValue;
$item_date=$doc->item($i)->getElementsByTagName('pubDate')
->item(0)->childNodes->item(0)->nodeValue;
# <pubDate>Tue, 20 May 2003 08:56:02 GMT</pubDate>
$data[] = "
$item_title: $item_link $item_desc $item_date"; # add collected info into $data # TODO need to grab date information so we can sort # Date is in UDF from memory }*/ } return $data; } ?>



