# 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
/**
* Contain a feed class as well as classes to build rss / atom ... feeds
*/
/**
* Available feeds objects
*/
$wgFeedClasses = array(
'rss' => 'RSSFeed',
'atom' => 'AtomFeed',
);
/**
* @todo document
*/
class FeedItem {
/**@#+
* @var string
* @access private
*/
var $Title = 'Wiki';
var $Description = '';
var $Url = '';
var $Date = '';
var $Author = '';
/**@#-*/
/**
* @todo document
*/
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
* @todo document
*/
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 );
}
/**
* @todo document
*/
function getTitle() { return $this->xmlEncode( $this->Title ); }
/**
* @todo document
*/
function getUrl() { return $this->xmlEncode( $this->Url ); }
/**
* @todo document
*/
function getDescription() { return $this->xmlEncode( $this->Description ); }
/**
* @todo document
*/
function getLanguage() {
global $wgLanguageCode;
return $wgLanguageCode;
}
/**
* @todo document
*/
function getDate() { return $this->Date; }
/**
* @todo document
*/
function getAuthor() { return $this->xmlEncode( $this->Author ); }
/**
* @todo document
*/
function getComments() { return $this->xmlEncode( $this->Comments ); }
}
/**
* @todo document
*/
class ChannelFeed extends FeedItem {
/**@#+
* Abstract function, override!
*/
/**
* @todo document
*/
function outHeader() {
# print "";
}
/**
* @todo document
*/
function outItem( $item ) {
# print "- ...
";
}
/**
* @todo document
*/
function outFooter() {
# print "";
}
/**
* @todo document
*/
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";
}
/**@#-*/
}
/**
* Generate a RSS feed
* @todo document
*/
class RSSFeed extends ChannelFeed {
/**
* @todo document
*/
function formatTime( $ts ) {
return gmdate( 'D, d M Y H:i:s \G\M\T', wfTimestamp2Unix( $ts ) );
}
/**
* @todo document
*/
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() ) ?>Z
getDescription() ?>
MediaWiki
getTitle() ?>
getDate() ) { ?>
formatTime( $item->getDate() ) ?>Z
formatTime( $item->getDate() ) ?>
formatTime( $item->getDate() ) ?>Z
getDescription() ?>
getAuthor() ) { ?>getAuthor() ?>
foobar
getComments() ) { ?>getComments() ?>
*/
}
/**
* @todo document
*/
function outFooter() {?>