([more] bugs fixed)
See also MeatBall:RssExtensionModuleForWikis as implemented in /ModWiki.
use vars qw($RSSdataFile $RSS092File $SiteDomain);
# ...
$SiteDomain = "www.IAwiki.net"; # Domain of this wiki site
$RSSdataFile = "$DataDir/rss.data"; # List of recent page edits
$RSS092File = "/var/www/html/rss092.xml"; # RSS XML of recent page edits
# ...
sub WriteRcLog {
# ...
if (!$isEdit) {
&UpdateRSS($editTime, $id, $summary, $name);
}
}
#---------------------------------------------------------------------------------------
sub UpdateRSS {
my ($editTime, $id, $summary, $name) = @_;
my ($status, $fileData) = &ReadFile($RSSdataFile);
my $rss_data = join($FS, $editTime, $id, $summary, $name);
my $newData = $rss_data . "\n"; # start the new datafile with the current RSS line
my $i = 1;
my $line;
foreach $line (split("\n",$fileData)) {
if ($i == 15) {
last; # only keep track of 15 lines
} else {
my ($LineEditTime, $LineId, $LineSummary, $LineName) = split($FS, $line);
if ($id ne $LineId) {
# add line to new data, increment count
$newData .= $line . "\n";
$i = $i + 1;
}
}
}
&WriteStringToFile($RSSdataFile, $newData);
&GenerateRSSfile();
}
#---------------------------------------------------------------------------------------
sub GenerateRSSfile {
my $RssXml = "";
$RssXml .= '<?xml version="1.0"?>' . "\n";
$RssXml .= '<rss version="0.92">' . "\n";
$RssXml .= '<channel>' . "\n";
$RssXml .= '<title>' . $SiteName . '</title>' . "\n";
$RssXml .= "\t" . '<link>http://' . $SiteDomain . '/</link>' . "\n";
$RssXml .= "\t" . '<description>The Information Architect\'s Wiki</description>' . "\n";
$RssXml .= "\t" . '<language>en-us</language>' . "\n";
$RssXml .= "\t" . '<lastBuildDate>' . &TimeToText(time) . '</lastBuildDate>' . "\n";
$RssXml .= "\t" . '<docs>http://backend.userland.com/rss092</docs>' . "\n";
$RssXml .= "\t" . '<managingEditor>IAwiki@ironclad.net.au (Eric Scheid)</managingEditor>' . "\n";
$RssXml .= "\t" . '<webMaster>IAwiki@ironclad.net.au (Eric Scheid)</webMaster>' . "\n";
my ($status, $fileData) = &ReadFile($RSSdataFile);
my $line;
foreach $line (split("\n", $fileData)) {
my ($LineEditTime, $LineId, $LineSummary, $LineName) = split($FS, $line);
$RssXml .= "\t<item>\n";
$RssXml .= "\t\t<title>" . $LineId . "</title>\n";
if (($LineSummary ne "")&&($LineSummary ne "*")) {
$RssXml .= "\t\t<description>" . &QuoteHtml($LineSummary) . "</description>\n";
}
$RssXml .= "\t\t<link>http://" . $SiteDomain . "/cgi-bin/wiki.pl?" . $LineId . "</link>\n";
$RssXml .= "\t</item>\n";
}
$RssXml .= "</channel>\n";
$RssXml .= "</rss>\n";
&WriteStringToFile($RSS092File, $RssXml);
return;
}