# 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",
"atom" => "AtomFeed",
);
class FeedItem {
var $Title = "Wiki";
var $Description = "";
var $Url = "";
var $Date = "";
var $Author = "";
function FeedItem( $Title, $Description, $Url, $Date = "", $Author = "", $Comments = "" ) {
$this->Title = $Title;
$this->Description = $Description;
$this->Url = $Url;
$this->Date = $Date;
$this->Author = $Author;
$this->Comments = $Comments;
}
/* Static... */
function xmlEncode( $string ) {
global $wgInputEncoding, $wgLang;
$string = str_replace( "\r\n", "\n", $string );
if( strcasecmp( $wgInputEncoding, "utf-8" ) != 0 ) {
$string = $wgLang->iconv( $wgInputEncoding, "utf-8", $string );
}
return htmlspecialchars( $string );
}
function getTitle() {
return $this->xmlEncode( $this->Title );
}
function getUrl() {
return $this->xmlEncode( $this->Url );
}
function getDescription() {
return $this->xmlEncode( $this->Description );
}
function getLanguage() {
global $wgLanguageCode;
return $wgLanguageCode;
}
function getDate() {
return $this->Date;
}
function getAuthor() {
return $this->xmlEncode( $this->Author );
}
function getComments() {
return $this->xmlEncode( $this->Comments );
}
}
class ChannelFeed extends FeedItem {
/* Abstract functions, override! */
function outHeader() {
# print "";
}
function outItem( $item ) {
# print "...";
}
function outFooter() {
# print "";
}
function outXmlHeader( $mimetype="application/xml" ) {
global $wgServer, $wgStylePath, $wgOut;
# We take over from $wgOut, excepting its cache header info
$wgOut->disable();
header( "Content-type: $mimetype; charset=UTF-8" );
$wgOut->sendCacheControl();
print '<' . '?xml version="1.0" encoding="utf-8"?' . ">\n";
print '<' . '?xml-stylesheet type="text/css" href="' .
htmlspecialchars( "$wgServer$wgStylePath/feed.css" ) . '"?' . ">\n";
}
}
class RSSFeed extends ChannelFeed {
function formatTime( $ts ) {
return gmdate( "D, d M Y H:i:s \G\M\T", wfTimestamp2Unix( $ts ) );
}
function outHeader() {
global $wgVersion;
$this->outXmlHeader();
?>getTitle() ?>
getUrl() ?>
getDescription() ?>getLanguage() ?>MediaWiki formatTime( wfTimestampNow() ) ?>getTitle() ?>
getUrl() ?>
getDescription() ?>
getDate() ) { ?>formatTime( $item->getDate() ) ?>
getAuthor() ) { ?>getAuthor() ?>
getComments() ) { ?>getComments() ?>outXmlHeader();
?>getTitle() ?>formatTime( wfTimestampNow() ) ?>ZgetDescription() ?>MediaWiki getTitle() ?>
getDate() ) { ?>
formatTime( $item->getDate() ) ?>ZformatTime( $item->getDate() ) ?>formatTime( $item->getDate() ) ?>ZgetDescription() ?>
getAuthor() ) { ?>getAuthor() ?>foobar
getComments() ) { ?>getComments() ?>
*/
}
function outFooter() {?>