<?php
+# Basic support for outputting syndication feeds in RSS, other formats
+#
+# Copyright (C) 2004 Brion Vibber <brion@pobox.com>
+# http://www.mediawiki.org/
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# http://www.gnu.org/copyleft/gpl.html
$wgFeedClasses = array(
"rss" => "RSSFeed",
var $Title = "Wiki";
var $Description = "";
var $Url = "";
+ var $Date = "";
+ var $Author = "";
- function FeedItem( $Title, $Description, $Url ) {
+ function FeedItem( $Title, $Description, $Url, $Date = "", $Author = "" ) {
$this->Title = $Title;
$this->Description = $Description;
$this->Url = $Url;
+ $this->Date = $Date;
+ $this->Author = $Author;
}
/* Static... */
global $wgInputEncoding, $wgLang;
$string = str_replace( "\r\n", "\n", $string );
if( strcasecmp( $wgInputEncoding, "utf-8" ) != 0 ) {
- $string = $wgLang->iconv( $wgInputEncoding, "utf-8" );
+ $string = $wgLang->iconv( $wgInputEncoding, "utf-8", $string );
}
return htmlspecialchars( $string );
}
global $wgLanguageCode;
return $wgLanguageCode;
}
+ function getDate() {
+ return $this->Date;
+ }
+ function getAuthor() {
+ return $this->xmlEncode( $this->Author );
+ }
}
class ChannelFeed extends FeedItem {
}
class RSSFeed extends ChannelFeed {
+ function formatTime( $ts ) {
+ return gmdate( "D, d M Y H:i:s T", wfTimestamp2Unix( $ts ) );
+ }
+
function outHeader() {
+ global $wgVersion, $wgOut;
+
+ # We take over from $wgOut, excepting its cache header info
+ $wgOut->disable();
+ header( "Content-type: application/xml; charset=UTF-8" );
+ $wgOut->sendCacheControl();
+
print '<' . '?xml version="1.0" encoding="utf-8"?' . ">\n";
- ?><!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-<rss version="0.91">
+ ?><rss version="2.0">
<channel>
<title><?php print $this->getTitle() ?></title>
<link><?php print $this->getUrl() ?></link>
<description><?php print $this->getDescription() ?></description>
<language><?php print $this->getLanguage() ?></language>
+ <generator>MediaWiki <?php print $wgVersion ?></generator>
+ <lastBuildDate><?php print $this->formatTime( wfTimestampNow() ) ?></lastBuildDate>
<?php
}
<title><?php print $item->getTitle() ?></title>
<link><?php print $item->getUrl() ?></link>
<description><?php print $item->getDescription() ?></description>
+ <?php if( $item->getDate() ) { ?><pubDate><?php print $this->formatTime( $item->getDate() ) ?></pubDate><?php } ?>
+ <?php if( $item->getAuthor() ) { ?><author><?php print $item->getAuthor() ?></author><?php }?>
+
</item>
<?php
}