<?php
/**
* RSSFeed - Class
*
* The RSSFeed-class makes it possible to create a well-formed RSSFeed
* for your Website. It can be easily be included into your code.
* See Example for more details on how to include / setup.
*
* Use Feedreader (http://www.feedreader.com/downloads.php) to read your feeds.
* **CUT**
* Feedreader is a freeware Windows application that reads and displays Internet
* newsfeeds aka RSS feeds based on XML.
* It supports all major RSS formats - 0.9, 0.91, 1.0 and various extensions such
* as Dublin Core and Slashback. Feedreader utilizes advanced caching methods to
* reduce bandwitch usage, making the program ideal for mobile communication.
* **CUTEND**
*
* The contents of this file are subject to the Gnu Public License (GPL).
* you may not use this file except in compliance with the License. You may obtain a
* copy of the License at http://www.opensource.org/licenses/gpl-license.html
*
* Latest releases are available at http://phpclasses.org/. For feedback or
* bug reports, please contact the author at [email]c.bolten@grafiknews.de[/email]. Thanks!
*
* The Initial Developer of the Original Code is Cornelius Bolten.
* Portions created by Cornelius Bolten are Copyright (C) 2003 Cornelius Bolten.
* All Rights Reserved.
**/
class RSSFeed {
/**
* variables
* @access private
*/
var $m_RSSversion = '1.0';
var $m_XMLversion = '2.0';
var $m_channel = NULL;
var $m_FeedItem = '';
var $m_channelItem = '';
/**
* function RSSFeed
* this is the constructor-method of RSSFeed-class
* @access public
*/
function RSSFeed() {
$this->m_channel = "<?xml version=/"".$this->m_XMLversion."/"?>/n";
$this->m_channel .= "<rdf:RDF /n xmlns:rdf=/"http://www.w3.org/1999/02/22-rdf-syntax-ns#/"/n xmlns=/"http://purl.org/rss/1.0//"/n >/n";
}
/**
* function addChannel
* Add a Channel to the opened Feed. This is a MUST.
*
* @access public
* @param ChannelTitle String Title of Channel
* @param ChannelDescription String Description of Channel
* @param ChannelLanguage String en,de,fr..etc. Language that channel uses
* @param ChannelURL String URL corresponding to RSS-File
*/
function addChannel($ChannelTitle, $ChannelDescription, $ChannelLanguage, $ChannelURL) {
$this->m_channel .= "/t<channel rdf:about=/"".$ChannelURL."/">/n";
$this->m_channel .= "/t/t<title>".$ChannelTitle."</title>/n";
$this->m_channel .= "/t/t<description>".$ChannelDescription."</description>/n";
$this->m_channel .= "/t/t<language>".$ChannelLanguage."</language>/n";
}
/**
* function addChannelLink
* Add a Link-Tag to Channel-Informations.
*
* @access public
* @param ChannelLink String Extra add of Link. can be same as ChanneLink@addChannel
* @see addChannel
*/
function addChannelLink($ChannelLink) {
$this->m_channel .= "/t/t<link>".$ChannelLink."</link>/n";
}
/**
* function addChannelImage
* Add an Image to Channel-Informations. This image is displayed in FeedReader.
*
* @access public
* @param ImageULR String URL to ChannelImage
* @param ImageTitle String Title of the Image
* @param ImageLink String Link to which image points
*/
function addChannelImage($ImageURL, $ImageTitle, $ImageLink) {
$this->m_channel .= "/t/t<image>/n";
$this->m_channel .= "/t/t/t<title>".$ImageTitle."</title>/n";
$this->m_channel .= "/t/t/t<url>".$ImageURL."</url>/n";
$this->m_channel .= "/t/t/t<link>".$ImageLink."</link>";
$this->m_channel .= "/t/t</image>/n";
}
/**
* function addChannelItem
* Add a channelitem to Channel. this is not a news- or article-item!
* to add a news-item use addFeedItem instead.
*
* @access public
* @param ChannelItem String Item-Resource-Link
* @see addFeedItem
*/
function addChannelItem($ChannelItem) {
$this->m_channelItem .= "/t/t/t/t<rdf:li resource=/"".$ChannelItem."/" />/n";
}
/**
* function addFeedItem
* add a feed-item to your feed. this contains the main informations for
* each news/article/etc.-item
*
* @access public
* @param ItemTitle String Title of Item
* @param ItemURL String URL corresponding to Article
* @param ItemDescription String Description of Item (News-Teaser, etc.)
*/
function addFeedItem($ItemTitle, $ItemURL, $ItemDescription) {
$this->m_FeedItem .= "/t<item rdf:about=/"".$ItemURL."/">/n";
$this->m_FeedItem .= "/t/t<title>".$ItemTitle."</title>/n";
$this->m_FeedItem .= "/t/t<link>".$ItemURL."</link>/n";
$this->m_FeedItem .= "/t/t<description>".$ItemDescription."</description>/n";
$this->m_FeedItem .= "/t</item>/n";
}
/**
* function releaseFeed
* function to release Feed an print the whole RSS-Data.
* this is the final-call of the object.
*/
function releaseFeed() {
header("Content-Type: text/xml");
print $this->m_channel;
if(strlen($this->m_channelItem) >= 1) {
print "/t/t<items>/n
/t/t/t<rdf:Seq>/n"
.$this->m_channelItem
."/t/t/t</rdf:Seq>/n
/t/t</items>/n";
}
print "/t</channel>/n";
print $this->m_FeedItem;
print "</rdf:RDF>/n";
}
}
?>