Difference between revisions of "Extension:SimpleRSS.php"
m |
(add dom fetching - need to find key for date in rss format) |
||
Line 18: | Line 18: | ||
'version' => ROBSRSS_VERSION | 'version' => ROBSRSS_VERSION | ||
); | ); | ||
+ | |||
# Expand an <rss> tag | # Expand an <rss> tag | ||
Line 44: | Line 45: | ||
# do some cache stuff here | # do some cache stuff here | ||
$doc->load($url); | $doc->load($url); | ||
− | foreach ($dom->getElementsByTagName(' | + | # get feed details |
− | + | $feed=$doc->getElementsByTagName('channel')->item(0); | |
− | + | $feed_title = $channel->getElementsByTagName('title') | |
+ | ->item(0)->childNodes->item(0)->nodeValue; | ||
+ | $feed_link = $channel->getElementsByTagName('link') | ||
+ | ->item(0)->childNodes->item(0)->nodeValue; | ||
+ | $feed_desc = $channel->getElementsByTagName('description') | ||
+ | ->item(0)->childNodes->item(0)->nodeValue; | ||
+ | |||
+ | |||
+ | foreach ($dom->getElementsByTagName('item') as $item) { | ||
+ | for ($i=0; $i<=2; $i++) { | ||
+ | $item_title=$x->item($i)->getElementsByTagName('title') | ||
+ | ->item(0)->childNodes->item(0)->nodeValue; | ||
+ | $item_link=$x->item($i)->getElementsByTagName('link') | ||
+ | ->item(0)->childNodes->item(0)->nodeValue; | ||
+ | $item_desc=$x->item($i)->getElementsByTagName('description') | ||
+ | ->item(0)->childNodes->item(0)->nodeValue; | ||
+ | } | ||
+ | # add collected info into $data | ||
+ | # TODO need to grab date information so we can sort | ||
+ | # Date is in UDF from memory | ||
+ | } | ||
} | } | ||
return $data; | return $data; |
Revision as of 04:24, 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 = true; $wgExtensionFunctions[] = 'wfSetupRobsRSS'; $wgExtensionCredits['taghook'][] = array( 'name' => 'RobsRSS', 'author' => 'User:Rob', 'description' => 'A dynamic aggregating RSS reader', 'url' => 'http://www.mediawiki.org/wiki/Extension:RobsRSS', 'version' => ROBSRSS_VERSION );
- 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); }
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 = $channel->getElementsByTagName('title') ->item(0)->childNodes->item(0)->nodeValue; $feed_link = $channel->getElementsByTagName('link') ->item(0)->childNodes->item(0)->nodeValue; $feed_desc = $channel->getElementsByTagName('description') ->item(0)->childNodes->item(0)->nodeValue;
foreach ($dom->getElementsByTagName('item') as $item) {
for ($i=0; $i<=2; $i++) { $item_title=$x->item($i)->getElementsByTagName('title') ->item(0)->childNodes->item(0)->nodeValue; $item_link=$x->item($i)->getElementsByTagName('link') ->item(0)->childNodes->item(0)->nodeValue; $item_desc=$x->item($i)->getElementsByTagName('description') ->item(0)->childNodes->item(0)->nodeValue; } # add collected info into $data # TODO need to grab date information so we can sort # Date is in UDF from memory }
} return $data; }
- Render a portion of RSS data (which is in the useful format returned by wfReadRSS)
function wfRenderRSS($data,$timestamp = false) { return $html; }
- Called from $wgExtensionFunctions array when initialising extensions
function wfSetupRobsRSS() { global $wgParser,$wgRSSUseAjax,$wgAjaxExportList; $wgParser->setHook($wgRobsRSSTag,array($this,'wfRssTagHook')); if ($wgRSSUseAjax) $wgAjaxExportList[] = 'wfRenderRSS'; # Allow Ajax Dispatcher to call wfRenderRSS } ?>