bnbweb/includes/cls_rss.php
2022-11-15 01:31:15 +08:00

1725 lines
64 KiB
PHP
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* ECSHOP RSS 类
* ============================================================================
* * 版权所有 2005-2012 上海商派网络科技有限公司,并保留所有权利。
* 网站地址: http://www.ecshop.com
* ----------------------------------------------------------------------------
* 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和
* 使用;不允许对程序代码以任何形式任何目的的再发布。
* ============================================================================
* $Author: liubo $
* $Id: cls_rss.php 17217 2011-01-19 06:29:08Z liubo $
*/
if (!defined('IN_ECS'))
{
die('Hacking attempt');
}
/*-----------------------------------------------------------------------*/
// @package RSSBuilder
// @category FLP
/*-----------------------------------------------------------------------*/
/*-----------------------------------------------------------------------*/
// Abstract class for getting ini preferences
//-------------------------------------------------
// Tested with WAMP (XP-SP1/1.3.24/4.0.12/4.3.0)
// Last change: 2003-05-30
//-------------------------------------------------
// @desc Abstract class for the RSS classes
// @access protected
// @author Michael Wimmer <flaimo@gmx.net>
// @copyright Michael Wimmer
// @link http://www.flaimo.com/
// @global array $GLOBALS['_TICKER_ini_settings']
// @abstract
// @package RSSBuilder
// @category FLP
// @version 1.001
/*-----------------------------------------------------------------------*/
class RSSBase
{
/*-----------------------*/
/* C O N S T R U C T O R */
/*-----------------------*/
//-------------------------------------------------
// Constructor
//-------------------------------------------------
// @desc Constructor
// @return (void)
// @access private
//-------------------------------------------------
function RSSBase() {
} // end constructor
} // end class RSSBase
//---------------------------------------------------------------------------
/*-----------------------------------------------------------------------*/
// Class for creating a RSS file
//-------------------------------------------------
// Tested with WAMP (XP-SP1/1.3.24/4.0.12/4.3.0)
// Last change: 2003-05-30
//-------------------------------------------------
// @desc Class for creating a RSS file
// @access public
// @author Michael Wimmer <flaimo@gmx.net>
// @copyright Michael Wimmer
// @link http://www.flaimo.com/
// @example rss_sample_script.php Sample script
// @package RSSBuilder
// @category FLP
// @version 1.001
/*-----------------------------------------------------------------------*/
class RSSBuilder extends RSSBase
{
/*-----------------------------------------------------------------------*/
/* V A R I A B L E S
/*-----------------------------------------------------------------------*/
//-------------------------------------------------
// encoding of the XML file
//-------------------------------------------------
// @desc encoding of the XML file
// @var string
// @access private
//-------------------------------------------------
var $encoding;
//-------------------------------------------------
// URL where the RSS document will be made available
//-------------------------------------------------
// @desc URL where the RSS document will be made available
// @var string
// @access private
//-------------------------------------------------
var $about;
//-------------------------------------------------
// title of the rss stream
//-------------------------------------------------
// @desc title of the rss stream
// @var string
// @access private
//-------------------------------------------------
var $title;
//-------------------------------------------------
// description of the rss stream
//-------------------------------------------------
// @desc description of the rss stream
// @var string
// @access private
//-------------------------------------------------
var $description;
//-------------------------------------------------
// publisher of the rss stream (person, an organization, or a service)
//-------------------------------------------------
// @desc publisher of the rss stream
// @var string
// @access private
//-------------------------------------------------
var $publisher;
//-------------------------------------------------
// creator of the rss stream (person, an organization, or a service)
//-------------------------------------------------
// @desc creator of the rss stream
// @var string
// @access private
//-------------------------------------------------
var $creator;
//-------------------------------------------------
// creation date of the file (format: 2003-05-29T00:03:07+0200)
//-------------------------------------------------
// @desc creation date of the file (format: 2003-05-29T00:03:07+0200)
// @var string
// @access private
//-------------------------------------------------
var $date;
//-------------------------------------------------
// iso format language
//-------------------------------------------------
// @desc iso format language
// @var string
// @access private
//-------------------------------------------------
var $language;
//-------------------------------------------------
// copyrights for the rss stream
//-------------------------------------------------
// @desc copyrights for the rss stream
// @var string
// @access private
//-------------------------------------------------
var $rights;
//-------------------------------------------------
// URL to an small image
//-------------------------------------------------
// @desc URL to an small image
// @var string
// @access private
//-------------------------------------------------
var $image_link;
//-------------------------------------------------
// spatial location (a place name or geographic coordinates), temporal period (a period label, date, or date range) or jurisdiction (such as a named administrative entity)
//-------------------------------------------------
// @desc spatial location (a place name or geographic coordinates), temporal period (a period label, date, or date range) or jurisdiction (such as a named administrative entity)
// @var string
// @access private
//-------------------------------------------------
var $coverage;
//-------------------------------------------------
// person, an organization, or a service
//-------------------------------------------------
// @desc person, an organization, or a service
// @var string
// @access private
//-------------------------------------------------
var $contributor;
//-------------------------------------------------
// 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly'
//-------------------------------------------------
// @desc 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly'
// @var string
// @access private
//-------------------------------------------------
var $period;
//-------------------------------------------------
// every X hours/days/weeks/...
//-------------------------------------------------
// @desc every X hours/days/weeks/...
// @var int
// @access private
//-------------------------------------------------
var $frequency;
//-------------------------------------------------
// date (format: 2003-05-29T00:03:07+0200)
//-------------------------------------------------
// Defines a base date to be used in concert with updatePeriod and
// updateFrequency to calculate the publishing schedule.
//-------------------------------------------------
// @desc base date to calculate from (format: 2003-05-29T00:03:07+0200)
// @var string
// @access private
//-------------------------------------------------
var $base;
//-------------------------------------------------
// category (rss 2.0)
//-------------------------------------------------
// @desc category (rss 2.0)
// @var string
// @access private
// @since 1.001 - 2003/05/30
//-------------------------------------------------
var $category;
//-------------------------------------------------
// caching time in minutes (rss 2.0)
//-------------------------------------------------
// @desc caching time in minutes (rss 2.0)
// @var int
// @access private
// @since 1.001 - 2003/05/30
//-------------------------------------------------
var $cache;
//-------------------------------------------------
// array wich all the rss items
//-------------------------------------------------
// @desc array wich all the rss items
// @var array
// @access private
//-------------------------------------------------
var $items = array();
//-------------------------------------------------
// compiled outputstring
//-------------------------------------------------
// @desc compiled outputstring
// @var string
// @access private
//-------------------------------------------------
var $output;
//-------------------------------------------------
// use DC data
//-------------------------------------------------
// @desc use DC data
// @var boolean
// @access private
//-------------------------------------------------
var $use_dc_data = false;
//-------------------------------------------------
// use SY data
//-------------------------------------------------
// @desc use SY data
// @var boolean
// @access private
//-------------------------------------------------
var $use_sy_data = false;
/*-----------------------*/
/* C O N S T R U C T O R */
/*-----------------------*/
//-------------------------------------------------
// Constructor
//-------------------------------------------------
// @desc Constructor
// @param (string) $encoding encoding of the xml file
// @param (string) $about URL where the RSS document will be made available
// @param (string) $title
// @param (string) $description
// @param (string) $image_link URL
// @return (void)
// @uses setEncoding(), setAbout(), setTitle(), setDescription(), setImageLink(), setCategory(), setCache()
// @access private
//-------------------------------------------------
function RSSBuilder($encoding = '',
$about = '',
$title = '',
$description = '',
$image_link = '',
$category = '',
$cache = '') {
$this->setEncoding($encoding);
$this->setAbout($about);
$this->setTitle($title);
$this->setDescription($description);
$this->setImageLink($image_link);
$this->setCategory($category);
$this->setCache($cache);
} // end constructor
/*-----------------------------------------------------------------------*/
/* F U N C T I O N S */
/*-----------------------------------------------------------------------*/
//-------------------------------------------------
// add additional DC data
//-------------------------------------------------
// @desc add additional DC data
// @param (string) $publisher person, an organization, or a service
// @param (string) $creator person, an organization, or a service
// @param (string) $date format: 2003-05-29T00:03:07+0200
// @param (string) $language iso-format
// @param (string) $rights copyright information
// @param (string) $coverage spatial location (a place name or geographic coordinates), temporal period (a period label, date, or date range) or jurisdiction (such as a named administrative entity)
// @param (string) $contributor person, an organization, or a service
// @return (void)
// @uses setPublisher(), setCreator(), setDate(), setLanguage(), setRights(), setCoverage(), setContributor()
// @access public
//-------------------------------------------------
function addDCdata($publisher = '',
$creator = '',
$date = '',
$language = '',
$rights = '',
$coverage = '',
$contributor = '') {
$this->setPublisher($publisher);
$this->setCreator($creator);
$this->setDate($date);
$this->setLanguage($language);
$this->setRights($rights);
$this->setCoverage($coverage);
$this->setContributor($contributor);
$this->use_dc_data = (boolean) true;
} // end function
//-------------------------------------------------
// add additional SY data
//-------------------------------------------------
// @desc add additional DC data
// @param (string) $period 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly'
// @param (int) $frequency every x hours/days/weeks/...
// @param (string) $base format: 2003-05-29T00:03:07+0200
// @return (void)
// @uses setPeriod(), setFrequency(), setBase()
// @access public
//-------------------------------------------------
function addSYdata($period = '', $frequency = '', $base = '') {
$this->setPeriod($period);
$this->setFrequency($frequency);
$this->setBase($base);
$this->use_sy_data = (boolean) true;
} // end function
//-------------------------------------------------
// Checks if a given string is a valid iso-language-code
//-------------------------------------------------
// @desc Checks if a given string is a valid iso-language-code
// @param (string) $code String that should validated
// @return (boolean) $isvalid If string is valid or not
// @access public
// @static
//-------------------------------------------------
function isValidLanguageCode($code = '') {
return (boolean) ((preg_match('(^([a-zA-Z]{2})$)',$code) > 0) ? true : false);
} // end function
//-------------------------------------------------
// Sets $encoding variable
//-------------------------------------------------
// @desc Sets $encoding variable
// @param (string) $encoding encoding of the xml file
// @return (void)
// @access private
// @see $encoding
//-------------------------------------------------
function setEncoding($encoding = '') {
if (!isset($this->encoding)) {
$this->encoding = (string) ((strlen(trim($encoding)) > 0) ? trim($encoding) : 'UTF-8');
} // end if
} // end function
//-------------------------------------------------
// Sets $about variable
//-------------------------------------------------
// @desc Sets $about variable
// @param (string) $about
// @return (void)
// @access private
// @see $about
//-------------------------------------------------
function setAbout($about = '') {
if (!isset($this->about) && strlen(trim($about)) > 0) {
$this->about = (string) trim($about);
} // end if
} // end function
//-------------------------------------------------
// Sets $title variable
//-------------------------------------------------
// @desc Sets $title variable
// @param (string) $title
// @return (void)
// @access private
// @see $title
//-------------------------------------------------
function setTitle($title = '') {
if (!isset($this->title) && strlen(trim($title)) > 0) {
$this->title = (string) trim($title);
} // end if
} // end function
//-------------------------------------------------
// Sets $description variable
//-------------------------------------------------
// @desc Sets $description variable
// @param (string) $description
// @return (void)
// @access private
// @see $description
//-------------------------------------------------
function setDescription($description = '') {
if (!isset($this->description) && strlen(trim($description)) > 0) {
$this->description = (string) trim($description);
} // end if
} // end function
//-------------------------------------------------
// Sets $publisher variable
//-------------------------------------------------
// @desc Sets $publisher variable
// @param (string) $publisher
// @return (void)
// @access private
// @see $publisher
//-------------------------------------------------
function setPublisher($publisher = '') {
if (!isset($this->publisher) && strlen(trim($publisher)) > 0) {
$this->publisher = (string) trim($publisher);
} // end if
} // end function
//-------------------------------------------------
// Sets $creator variable
//-------------------------------------------------
// @desc Sets $creator variable
// @param (string) $creator
// @return (void)
// @access private
// @see $creator
//-------------------------------------------------
function setCreator($creator = '') {
if (!isset($this->creator) && strlen(trim($creator)) > 0) {
$this->creator = (string) trim($creator);
} // end if
} // end function
//-------------------------------------------------
// Sets $date variable
//-------------------------------------------------
// @desc Sets $date variable
// @param (string) $date format: 2003-05-29T00:03:07+0200
// @return (void)
// @access private
// @see $date
//-------------------------------------------------
function setDate($date = '') {
if (!isset($this->date) && strlen(trim($date)) > 0) {
$this->date = (string) trim($date);
} // end if
} // end function
//-------------------------------------------------
// Sets $language variable
//-------------------------------------------------
// @desc Sets $language variable
// @param (string) $language
// @return (void)
// @access private
// @see $language
// @uses isValidLanguageCode()
//-------------------------------------------------
function setLanguage($language = '') {
if (!isset($this->language) && $this->isValidLanguageCode($language) === true) {
$this->language = (string) trim($language);
} // end if
} // end function
//-------------------------------------------------
// Sets $rights variable
//-------------------------------------------------
// @desc Sets $rights variable
// @param (string) $rights
// @return (void)
// @access private
// @see $rights
//-------------------------------------------------
function setRights($rights = '') {
if (!isset($this->rights) && strlen(trim($rights)) > 0) {
$this->rights = (string) trim($rights);
} // end if
} // end function
//-------------------------------------------------
// Sets $coverage variable
//-------------------------------------------------
// @desc Sets $coverage variable
// @param (string) $coverage
// @return (void)
// @access private
// @see $coverage
//-------------------------------------------------
function setCoverage($coverage = '') {
if (!isset($this->coverage) && strlen(trim($coverage)) > 0) {
$this->coverage = (string) trim($coverage);
} // end if
} // end function
//-------------------------------------------------
// Sets $contributor variable
//-------------------------------------------------
// @desc Sets $contributor variable
// @param (string) $contributor
// @return (void)
// @access private
// @see $contributor
//-------------------------------------------------
function setContributor($contributor = '') {
if (!isset($this->contributor) && strlen(trim($contributor)) > 0) {
$this->contributor = (string) trim($contributor);
} // end if
} // end function
//-------------------------------------------------
// Sets $image_link variable
//-------------------------------------------------
// @desc Sets $image_link variable
// @param (string) $image_link
// @return (void)
// @access private
// @see $image_link
//-------------------------------------------------
function setImageLink($image_link = '') {
if (!isset($this->image_link) && strlen(trim($image_link)) > 0) {
$this->image_link = (string) trim($image_link);
} // end if
} // end function
//-------------------------------------------------
// Sets $period variable
//-------------------------------------------------
// @desc Sets $period variable
// @param (string) $period 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly'
// @return (void)
// @access private
// @see $period
//-------------------------------------------------
function setPeriod($period = '') {
if (!isset($this->period) && strlen(trim($period)) > 0) {
switch ($period) {
case 'hourly':
case 'daily':
case 'weekly':
case 'monthly':
case 'yearly':
$this->period = (string) trim($period);
break;
default:
$this->period = (string) '';
break;
} // end switch
} // end if
} // end function
//-------------------------------------------------
// Sets $frequency variable
//-------------------------------------------------
// @desc Sets $frequency variable
// @param (int) $frequency
// @return (void)
// @access private
// @see $frequency
//-------------------------------------------------
function setFrequency($frequency = '') {
if (!isset($this->frequency) && strlen(trim($frequency)) > 0) {
$this->frequency = (int) $frequency;
} // end if
} // end function
//-------------------------------------------------
// Sets $base variable
//-------------------------------------------------
// @desc Sets $base variable
// @param (string) $base
// @return (void)
// @access private
// @see $base
//-------------------------------------------------
function setBase($base = '') {
if (!isset($this->base) && strlen(trim($base)) > 0) {
$this->base = (string) trim($base);
} // end if
} // end function
//-------------------------------------------------
// Sets $category variable
//-------------------------------------------------
// @desc Sets $category variable
// @param (string) $category
// @return (void)
// @access private
// @see $category
// @since 1.001 - 2003/05/30
//-------------------------------------------------
function setCategory($category = '') {
if (strlen(trim($category)) > 0) {
$this->category = (string) trim($category);
} // end if
} // end function
//-------------------------------------------------
// Sets $cache variable
//-------------------------------------------------
// @desc Sets $cache variable
// @param (int) $cache
// @return (void)
// @access private
// @see $cache
// @since 1.001 - 2003/05/30
//-------------------------------------------------
function setCache($cache = '') {
if (strlen(trim($cache)) > 0) {
$this->cache = (int) $cache;
} // end if
} // end function
//-------------------------------------------------
// Returns $encoding variable
//-------------------------------------------------
// @desc Returns $encoding variable
// @return (string) $encoding
// @access public
// @see $image_link
//-------------------------------------------------
function getEncoding() {
return (string) $this->encoding;
} // end function
//-------------------------------------------------
// Returns $about variable
//-------------------------------------------------
// @desc Returns $about variable
// @return (string) $about
// @access public
// @see $about
//-------------------------------------------------
function getAbout() {
return (string) $this->about;
} // end function
//-------------------------------------------------
// Returns $title variable
//-------------------------------------------------
// @desc Returns $title variable
// @return (string) $title
// @access public
// @see $title
//-------------------------------------------------
function getTitle() {
return (string) $this->title;
} // end function
//-------------------------------------------------
// Returns $description variable
//-------------------------------------------------
// @desc Returns $description variable
// @return (string) $description
// @access public
// @see $description
//-------------------------------------------------
function getDescription() {
return (string) $this->description;
} // end function
//-------------------------------------------------
// Returns $publisher variable
//-------------------------------------------------
// @desc Returns $publisher variable
// @return (string) $publisher
// @access public
// @see $publisher
//-------------------------------------------------
function getPublisher() {
return (string) $this->publisher;
} // end function
//-------------------------------------------------
// Returns $creator variable
//-------------------------------------------------
// @desc Returns $creator variable
// @return (string) $creator
// @access public
// @see $creator
//-------------------------------------------------
function getCreator() {
return (string) $this->creator;
} // end function
//-------------------------------------------------
// Returns $date variable
//-------------------------------------------------
// @desc Returns $date variable
// @return (string) $date
// @access public
// @see $date
//-------------------------------------------------
function getDate() {
return (string) $this->date;
} // end function
//-------------------------------------------------
// Returns $language variable
//-------------------------------------------------
// @desc Returns $language variable
// @return (string) $language
// @access public
// @see $language
//-------------------------------------------------
function getLanguage() {
return (string) $this->language;
} // end function
//-------------------------------------------------
// Returns $rights variable
//-------------------------------------------------
// @desc Returns $rights variable
// @return (string) $rights
// @access public
// @see $rights
//-------------------------------------------------
function getRights() {
return (string) $this->rights;
} // end function
//-------------------------------------------------
// Returns $coverage variable
//-------------------------------------------------
// @desc Returns $coverage variable
// @return (string) $coverage
// @access public
// @see $coverage
//-------------------------------------------------
function getCoverage() {
return (string) $this->coverage;
} // end function
//-------------------------------------------------
// Returns $contributor variable
//-------------------------------------------------
// @desc Returns $contributor variable
// @return (string) $contributor
// @access public
// @see $contributor
//-------------------------------------------------
function getContributor() {
return (string) $this->contributor;
} // end function
//-------------------------------------------------
// Returns $image_link variable
//-------------------------------------------------
// @desc Returns $image_link variable
// @return (string) $image_link
// @access public
// @see $image_link
//-------------------------------------------------
function getImageLink() {
return (string) $this->image_link;
} // end function
//-------------------------------------------------
// Returns $period variable
//-------------------------------------------------
// @desc Returns $period variable
// @return (string) $period
// @access public
// @see $period
//-------------------------------------------------
function getPeriod() {
return (string) $this->period;
} // end function
//-------------------------------------------------
// Returns $frequency variable
//-------------------------------------------------
// @desc Returns $frequency variable
// @return (string) $frequency
// @access public
// @see $frequency
//-------------------------------------------------
function getFrequency() {
return (int) $this->frequency;
} // end function
//-------------------------------------------------
// Returns $base variable
//-------------------------------------------------
// @desc Returns $base variable
// @return (string) $base
// @access public
// @see $base
//-------------------------------------------------
function getBase() {
return (string) $this->base;
} // end function
//-------------------------------------------------
// Returns $category variable
//-------------------------------------------------
// @desc Returns $category variable
// @return (string) $category
// @access public
// @see $category
// @since 1.001 - 2003/05/30
//-------------------------------------------------
function getCategory() {
return (string) $this->category;
} // end function
//-------------------------------------------------
// Returns $cache variable
//-------------------------------------------------
// @desc Returns $cache variable
// @return (int) $cache
// @access public
// @see $cache
// @since 1.001 - 2003/05/30
//-------------------------------------------------
function getCache() {
return (int) $this->cache;
} // end function
//-------------------------------------------------
// Adds another rss item to the object
//-------------------------------------------------
// @desc Adds another rss item to the object
// @param (string) $about URL
// @param (string) $title
// @param (string) $link URL
// @param (string) $description (optional)
// @param (string) $subject some sort of category (optional dc value - only shows up if DC data has been set before)
// @param (string) $date format: 2003-05-29T00:03:07+0200 (optional dc value - only shows up if DC data has been set before)
// @return (void)
// @access public
// @see $items
// @uses RSSItem
//-------------------------------------------------
function addItem($about = '',
$title = '',
$link = '',
$description = '',
$subject = '',
$date = '',
$author = '',
$comments = '')
{
$item = new RSSItem($about,
$title,
$link,
$description,
$subject,
$date,
$author = '',
$comments = '');
$this->items[] = $item;
} // end function
//-------------------------------------------------
// Deletes a rss item from the array
//-------------------------------------------------
// @desc Deletes a rss item from the array
// @param (int) $id id of the element in the $items array
// @return (boolean) true if item was deleted
// @access public
// @see $items
//-------------------------------------------------
function deleteItem($id = -1) {
if (array_key_exists($id, $this->items)) {
unset($this->items[$id]);
return (boolean) true;
} else {
return (boolean) false;
} // end if
} // end function
//-------------------------------------------------
// Returns an array with all the keys of the $items array
//-------------------------------------------------
// @desc Returns an array with all the keys of the $items array
// @return (array) array with all the keys of the $items array
// @access public
// @see $items
//-------------------------------------------------
function getItemList() {
return (array) array_keys($this->items);
} // end function
//-------------------------------------------------
// Returns the $items array
//-------------------------------------------------
// @desc Returns the $items array
// @return (array) $items
// @access public
//-------------------------------------------------
function getItems() {
return (array) $this->items;
} // end function
//-------------------------------------------------
// Returns a single rss item by ID
//-------------------------------------------------
// @desc Returns a single rss item by ID
// @param (int) $id id of the element in the $items array
// @return (mixed) RSSItem or false
// @access public
// @see RSSItem
//-------------------------------------------------
function getItem($id = -1) {
if (array_key_exists($id, $this->items)) {
return (object) $this->items[$id];
} else {
return (boolean) false;
} // end if
} // end function
//-------------------------------------------------
// creates the output based on the 0.91 rss version
//-------------------------------------------------
// @desc creates the output based on the 0.91 rss version
// @return (void)
// @access private
// @see $output
//-------------------------------------------------
function createOutputV090() {
// not implemented
$this->createOutputV100();
} // end function
//-------------------------------------------------
// creates the output based on the 0.91 rss version
//-------------------------------------------------
// @desc creates the output based on the 0.91 rss version
// @return (void)
// @access private
// @see $output
// @since 1.001 - 2003/05/30
//-------------------------------------------------
function createOutputV091() {
$this->output = (string) '<!DOCTYPE rss SYSTEM "http://my.netscape.com/publish/formats/rss-0.91.dtd">' . "\n";
$this->output .= (string) '<rss version="0.91">' . "\n";
$this->output .= (string) '<channel>' . "\n";
if (strlen($this->rights) > 0) {
$this->output .= (string) '<copyright>' . $this->rights . '</copyright>' . "\n";
} // end if
if (strlen($this->date) > 0) {
$this->output .= (string) '<pubDate>' .$this->date . '</pubDate>' . "\n";
$this->output .= (string) '<lastBuildDate>' .$this->date . '</lastBuildDate>' . "\n";
} // end if
if (strlen($this->about) > 0) {
$this->output .= (string) '<docs>' . $this->about . '</docs>' . "\n";
} // end if
if (strlen($this->description) > 0) {
$this->output .= (string) '<description>' . $this->description . '</description>' . "\n";
} // end if
if (strlen($this->about) > 0) {
$this->output .= (string) '<link>' . $this->about . '</link>' . "\n";
} // end if
if (strlen($this->title) > 0) {
$this->output .= (string) '<title>' . $this->title . '</title>' . "\n";
} // end if
if (strlen($this->image_link) > 0) {
$this->output .= (string) '<image>' . "\n";
$this->output .= (string) '<title>' . $this->title . '</title>' . "\n";
$this->output .= (string) '<url>' . $this->image_link . '</url>' . "\n";
$this->output .= (string) '<link>' . $this->about . '</link>' . "\n";
if (strlen($this->description) > 0) {
$this->output .= (string) '<description>' . $this->description . '</description>' . "\n";
} // end if
$this->output .= (string) '</image>' . "\n";
} // end if
if (strlen($this->publisher) > 0) {
$this->output .= (string) '<managingEditor>' . $this->publisher . '</managingEditor>' . "\n";
} // end if
if (strlen($this->creator) > 0) {
$this->output .= (string) '<webMaster>' . $this->creator . '</webMaster>' . "\n";
} // end if
if (strlen($this->language) > 0) {
$this->output .= (string) '<language>' . $this->language . '</language>' . "\n";
} // end if
if (count($this->getItemList()) > 0) {
foreach ($this->getItemList() AS $id) {
$item =& $this->items[$id];
if (strlen($item->getTitle()) > 0 && strlen($item->getLink()) > 0) {
$this->output .= (string) '<item>' . "\n";
$this->output .= (string) '<title>' . $item->getTitle() . '</title>' . "\n";
$this->output .= (string) '<link>' . $item->getLink() . '</link>' . "\n";
if (strlen($item->getDescription()) > 0) {
$this->output .= (string) '<description>' . $item->getDescription() . '</description>' . "\n";
} // end if
$this->output .= (string) '</item>' . "\n";
} // end if
} // end foreach
} // end if
$this->output .= (string) '</channel>' . "\n";
$this->output .= (string) '</rss>' . "\n";
} // end function
//-------------------------------------------------
// creates the output based on the 1.0 rss version
//-------------------------------------------------
// @desc creates the output based on the 1.0 rss version
// @return (void)
// @access private
// @see $output
//-------------------------------------------------
function createOutputV100() {
$this->output = (string) '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" ';
if ($this->use_dc_data === true) {
$this->output .= (string) 'xmlns:dc="http://purl.org/dc/elements/1.1/" ';
} // end if
if ($this->use_sy_data === true) {
$this->output .= (string) 'xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" ';
} // end if
$this->output .= (string) 'xmlns="http://purl.org/rss/1.0/">' . "\n";
if (strlen($this->about) > 0) {
$this->output .= (string) '<channel rdf:about="' . $this->about . '">' . "\n";
} else {
$this->output .= (string) '<channel>' . "\n";
} // end if
if (strlen($this->title) > 0) {
$this->output .= (string) '<title>' . $this->title . '</title>' . "\n";
} // end if
if (strlen($this->about) > 0) {
$this->output .= (string) '<link>' . $this->about . '</link>' . "\n";
} // end if
if (strlen($this->description) > 0) {
$this->output .= (string) '<description>' . $this->description . '</description>' . "\n";
} // end if
// additional dc data
if (strlen($this->publisher) > 0) {
$this->output .= (string) '<dc:publisher>' . $this->publisher . '</dc:publisher>' . "\n";
} // end if
if (strlen($this->creator) > 0) {
$this->output .= (string) '<dc:creator>' . $this->creator . '</dc:creator>' . "\n";
} // end if
if (strlen($this->date) > 0) {
$this->output .= (string) '<dc:date>' .$this->date . '</dc:date>' . "\n";
} // end if
if (strlen($this->language) > 0) {
$this->output .= (string) '<dc:language>' . $this->language . '</dc:language>' . "\n";
} // end if
if (strlen($this->rights) > 0) {
$this->output .= (string) '<dc:rights>' . $this->rights . '</dc:rights>' . "\n";
} // end if
if (strlen($this->coverage) > 0) {
$this->output .= (string) '<dc:coverage>' . $this->coverage . '</dc:coverage>' . "\n";
} // end if
if (strlen($this->contributor) > 0) {
$this->output .= (string) '<dc:contributor>' . $this->contributor . '</dc:contributor>' . "\n";
} // end if
// additional SY data
if (strlen($this->period) > 0) {
$this->output .= (string) '<sy:updatePeriod>' . $this->period . '</sy:updatePeriod>' . "\n";
} // end if
if (strlen($this->frequency) > 0) {
$this->output .= (string) '<sy:updateFrequency>' . $this->frequency . '</sy:updateFrequency>' . "\n";
} // end if
if (strlen($this->base) > 0) {
$this->output .= (string) '<sy:updateBase>' . $this->base . '</sy:updateBase>' . "\n";
} // end if
if (strlen($this->image_link) > 0) {
$this->output .= (string) '<image rdf:resource="' . $this->image_link . '" />' . "\n";
} // end if
if (strlen($this->image_link) > 0) {
$this->output .= (string) '<image rdf:about="' . $this->image_link . '">' . "\n";
$this->output .= (string) '<title>' . $this->title . '</title>' . "\n";
$this->output .= (string) '<url>' . $this->image_link . '</url>' . "\n";
$this->output .= (string) '<link>' . $this->about . '</link>' . "\n";
if (strlen($this->description) > 0) {
$this->output .= (string) '<description>' . $this->description . '</description>' . "\n";
} // end if
$this->output .= (string) '</image>' . "\n";
} // end if
if (count($this->getItemList()) > 0) {
$this->output .= (string) '<items><rdf:Seq>' . "\n";
foreach ($this->getItemList() as $id) {
$item =& $this->items[$id];
if (strlen($item->getAbout()) > 0) {
$this->output .= (string) ' <rdf:li resource="' . $item->getAbout() . '" />' . "\n";
} // end if
} // end foreach
$this->output .= (string) '</rdf:Seq></items>' . "\n";
} // end if
$this->output .= (string) '</channel>' . "\n";
if (count($this->getItemList()) > 0) {
foreach ($this->getItemList() as $id) {
$item =& $this->items[$id];
if (strlen($item->getTitle()) > 0 && strlen($item->getLink()) > 0) {
if (strlen($item->getAbout()) > 0) {
$this->output .= (string) '<item rdf:about="' . $item->getAbout() . '">' . "\n";
} else {
$this->output .= (string) '<item>' . "\n";
} // end if
$this->output .= (string) '<title>' . $item->getTitle() . '</title>' . "\n";
$this->output .= (string) '<link>' . $item->getLink() . '</link>' . "\n";
if (strlen($item->getDescription()) > 0) {
$this->output .= (string) '<description>' . $item->getDescription() . '</description>' . "\n";
} // end if
if ($this->use_dc_data === true && strlen($item->getSubject()) > 0) {
$this->output .= (string) '<dc:subject>' . $item->getSubject() . '</dc:subject>' . "\n";
} // end if
if ($this->use_dc_data === true && strlen($item->getDate()) > 0) {
$this->output .= (string) '<dc:date>' . $item->getDate() . '</dc:date>' . "\n";
} // end if
$this->output .= (string) '</item>' . "\n";
} // end if
} // end foreach
} // end if
$this->output .= (string) '</rdf:RDF>';
} // end function
//-------------------------------------------------
// creates the output based on the 2.0 rss draft
//-------------------------------------------------
// @desc creates the output based on the 0.91 rss draft
// @return (void)
// @access private
// @see $output
// @since 1.001 - 2003/05/30
//-------------------------------------------------
function createOutputV200() {
// not implemented
$this->createOutputV100();
//---------------------
$this->output = (string) '<rss version="2.0">' . "\n";
$this->output .= (string) '<channel>' . "\n";
if (strlen($this->rights) > 0) {
$this->output .= (string) '<copyright>' . $this->rights . '</copyright>' . "\n";
} // end if
if (strlen($this->date) > 0) {
$this->output .= (string) '<pubDate>' .$this->date . '</pubDate>' . "\n";
//xuanyan 2007.5.8 edit
//$this->output .= (string) '<lastBuildDate>' .$this->date . '</lastBuildDate>' . "\n";
} // end if
if (strlen($this->about) > 0) {
$this->output .= (string) '<docs>' . $this->about . '</docs>' . "\n";
} // end if
if (strlen($this->description) > 0) {
$this->output .= (string) '<description>' . $this->description . '</description>' . "\n";
} // end if
if (strlen($this->about) > 0) {
$this->output .= (string) '<link>' . $this->about . '</link>' . "\n";
} // end if
if (strlen($this->title) > 0) {
$this->output .= (string) '<title>' . $this->title . '</title>' . "\n";
} // end if
if (strlen($this->image_link) > 0) {
$this->output .= (string) '<image>' . "\n";
$this->output .= (string) '<title>' . $this->title . '</title>' . "\n";
$this->output .= (string) '<url>' . $this->image_link . '</url>' . "\n";
$this->output .= (string) '<link>' . $this->about . '</link>' . "\n";
if (strlen($this->description) > 0) {
$this->output .= (string) '<description>' . $this->description . '</description>' . "\n";
} // end if
$this->output .= (string) '</image>' . "\n";
} // end if
if (strlen($this->publisher) > 0) {
$this->output .= (string) '<managingEditor>' . $this->publisher . '</managingEditor>' . "\n";
} // end if
if (strlen($this->creator) > 0) {
//xuanyan 2007.5.8 edit
//$this->output .= (string) '<webMaster>' . $this->creator . '</webMaster>' . "\n";
$this->output .= (string) '<generator>' . $this->creator . '</generator>' . "\n";
} // end if
if (strlen($this->language) > 0) {
$this->output .= (string) '<language>' . $this->language . '</language>' . "\n";
} // end if
if (strlen($this->category) > 0) {
$this->output .= (string) '<category>' . $this->category . '</category>' . "\n";
} // end if
if (strlen($this->cache) > 0) {
$this->output .= (string) '<ttl>' . $this->cache . '</ttl>' . "\n";
} // end if
if (count($this->getItemList()) > 0) {
foreach ($this->getItemList() as $id) {
$item =& $this->items[$id];
if (strlen($item->getTitle()) > 0 && strlen($item->getLink()) > 0) {
$this->output .= (string) '<item>' . "\n";
$this->output .= (string) '<title>' . $item->getTitle() . '</title>' . "\n";
$this->output .= (string) '<link>' . $item->getLink() . '</link>' . "\n";
if (strlen($item->getDescription()) > 0) {
$this->output .= (string) '<description>' . $item->getDescription() . '</description>' . "\n";
} // end if
if ($this->use_dc_data === true && strlen($item->getSubject()) > 0) {
$this->output .= (string) '<category>' . $item->getSubject() . '</category>' . "\n";
} // end if
if ($this->use_dc_data === true && strlen($item->getDate()) > 0) {
$this->output .= (string) '<pubDate>' . $item->getDate() . '</pubDate>' . "\n";
} // end if
if (strlen($item->getAbout()) > 0) {
$this->output .= (string) '<guid>' . $item->getAbout() . '</guid>' . "\n";
} // end if
if (strlen($item->getAuthor()) > 0) {
$this->output .= (string) '<author>' . $item->getAuthor() . '</author>' . "\n";
} // end if
if (strlen($item->getComments()) > 0) {
$this->output .= (string) '<comments>' . $item->getComments() . '</comments>' . "\n";
} // end if
$this->output .= (string) '</item>' . "\n";
} // end if
} // end foreach
} // end if
$this->output .= (string) '</channel>' . "\n";
$this->output .= (string) '</rss>' . "\n";
} // end function
//-------------------------------------------------
// creates the output
//-------------------------------------------------
// @desc creates the output
// @return (void)
// @access private
// @uses createOutputV100()
//-------------------------------------------------
function createOutput($version = '') {
if (strlen(trim($version)) === 0) {
$version = (string) '1.0';
} // end if
switch ($version) {
case '0.9':
$this->createOutputV090();
break;
case '0.91':
$this->createOutputV091();
break;
case '2.00':
$this->createOutputV200();
break;
case '1.0':
default:
$this->createOutputV100();
break;
} // end switch
} // end function
//-------------------------------------------------
// echos the output
//-------------------------------------------------
// use this function if you want to directly output the rss stream
//-------------------------------------------------
// @desc echos the output
// @return (void)
// @access public
// @uses createOutput()
//-------------------------------------------------
function outputRSS($version = '') {
if (!isset($this->output)) {
$this->createOutput($version);
} // end if
// header('Content-Disposition: inline; filename=rss_' . str_replace(' ', '', $this->title) . '.xml');
$this->output = '<' . '?xml version="1.0" encoding="' . $this->encoding . '"?' .'>' . "\n" .
'<!-- RSS generated by ECSHOP (http://www.ecshop.com) [' . date('Y-m-d H:i:s') .'] -->' . "\n" . $this->output;
echo $this->output;
} // end function
//-------------------------------------------------
// returns the output
//-------------------------------------------------
// use this function if you want to have the output stream as a string (for example to write it in a cache file)
//-------------------------------------------------
// @desc returns the output
// @return (void)
// @access public
// @uses createOutput()
//-------------------------------------------------
function getRSSOutput($version = '') {
if (!isset($this->output)) {
$this->createOutput($version);
} // end if
return (string) '<' . '?xml version="1.0" encoding="' . $this->encoding . '"?' . '>' . "\n" .
'<!-- RSS generated by ' .APP_NAME. ' ' .APP_VERSION. ' [' . date('Y-m-d H:i:s') .'] --> ' . "\n" . $this->output;
} // end function
} // end class RSSBuilder
//---------------------------------------------------------------------------
/*-----------------------------------------------------------------------*/
// single rss item object
//-------------------------------------------------
// Tested with WAMP (XP-SP1/1.3.24/4.0.12/4.3.0)
// Last change: 2003-05-30
//-------------------------------------------------
// @desc single rss item object
// @access private
// @author Michael Wimmer <flaimo@gmx.net>
// @copyright Michael Wimmer
// @link http://www.flaimo.com/
// @package RSSBuilder
// @category FLP
// @version 1.001
/*-----------------------------------------------------------------------*/
class RSSItem extends RSSBase
{
/*-----------------------------------------------------------------------*/
/* V A R I A B L E S */
/*-----------------------------------------------------------------------*/
//-------------------------------------------------
// URL
//-------------------------------------------------
// @desc URL
// @var string
// @access private
//-------------------------------------------------
var $about;
//-------------------------------------------------
// headline
//-------------------------------------------------
// @desc headline
// @var string
// @access private
//-------------------------------------------------
var $title;
//-------------------------------------------------
// URL to the full item
//-------------------------------------------------
// @desc URL to the full item
// @var string
// @access private
//-------------------------------------------------
var $link;
//-------------------------------------------------
// optional description
//-------------------------------------------------
// @desc optional description
// @var string
// @access private
//-------------------------------------------------
var $description;
//-------------------------------------------------
// optional subject (category)
//-------------------------------------------------
// @desc optional subject (category)
// @var string
// @access private
//-------------------------------------------------
var $subject;
//-------------------------------------------------
// optional date
//-------------------------------------------------
// @desc optional date
// @var string
// @access private
//-------------------------------------------------
var $date;
//-------------------------------------------------
// author of item
//-------------------------------------------------
// @desc author of item
// @var string
// @access private
// @since 1.001 - 2003/05/30
//-------------------------------------------------
var $author;
//-------------------------------------------------
// url to comments page (rss 2.0)
//-------------------------------------------------
// @desc url to comments page (rss 2.0)
// @var string
// @access private
// @since 1.001 - 2003/05/30
//-------------------------------------------------
var $comments;
/*-----------------------*/
/* C O N S T R U C T O R */
/*-----------------------*/
//-------------------------------------------------
// Constructor
//-------------------------------------------------
// @desc Constructor
// @param (string) $about URL
// @param (string) $title
// @param (string) $link URL
// @param (string) $description (optional)
// @param (string) $subject some sort of category (optional)
// @param (string) $date format: 2003-05-29T00:03:07+0200 (optional)
// @return (void)
// @uses setAbout(), setTitle(), setLink(), setDescription(), setSubject(), setDate(), setAuthor(), setComments()
// @access private
//-------------------------------------------------
function RSSItem($about = '',
$title = '',
$link = '',
$description = '',
$subject = '',
$date = '',
$author = '',
$comments = '') {
$this->setAbout($about);
$this->setTitle($title);
$this->setLink($link);
$this->setDescription($description);
$this->setSubject($subject);
$this->setDate($date);
$this->setAuthor($author);
$this->setComments($comments);
} // end constructor
//-------------------------------------------------
// Sets $about variable
//-------------------------------------------------
// @desc Sets $about variable
// @param (string) $about
// @return (void)
// @access private
// @see $about
//-------------------------------------------------
function setAbout($about = '') {
if (!isset($this->about) && strlen(trim($about)) > 0) {
$this->about = (string) trim($about);
} // end if
} // end function
//-------------------------------------------------
// Sets $title variable
//-------------------------------------------------
// @desc Sets $title variable
// @param (string) $title
// @return (void)
// @access private
// @see $title
//-------------------------------------------------
function setTitle($title = '') {
if (!isset($this->title) && strlen(trim($title)) > 0) {
$this->title = (string) trim($title);
} // end if
} // end function
//-------------------------------------------------
// Sets $link variable
//-------------------------------------------------
// @desc Sets $link variable
// @param (string) $link
// @return (void)
// @access private
// @see $link
//-------------------------------------------------
function setLink($link = '') {
if (!isset($this->link) && strlen(trim($link)) > 0) {
$this->link = (string) trim($link);
} // end if
} // end function
//-------------------------------------------------
// Sets $description variable
//-------------------------------------------------
// @desc Sets $description variable
// @param (string) $description
// @return (void)
// @access private
// @see $description
//-------------------------------------------------
function setDescription($description = '') {
if (!isset($this->description) && strlen(trim($description)) > 0) {
$this->description = (string) trim($description);
} // end if
} // end function
//-------------------------------------------------
// Sets $subject variable
//-------------------------------------------------
// @desc Sets $subject variable
// @param (string) $subject
// @return (void)
// @access private
// @see $subject
//-------------------------------------------------
function setSubject($subject = '') {
if (!isset($this->subject) && strlen(trim($subject)) > 0) {
$this->subject = (string) trim($subject);
} // end if
} // end function
//-------------------------------------------------
// Sets $date variable
//-------------------------------------------------
// @desc Sets $date variable
// @param (string) $date
// @return (void)
// @access private
// @see $date
//-------------------------------------------------
function setDate($date = '') {
if (!isset($this->date) && strlen(trim($date)) > 0) {
$this->date = (string) trim($date);
} // end if
} // end function
//-------------------------------------------------
// Sets $author variable
//-------------------------------------------------
// @desc Sets $author variable
// @param (string) $author
// @return (void)
// @access private
// @see $author
// @since 1.001 - 2003/05/30
//-------------------------------------------------
function setAuthor($author = '') {
if (!isset($this->author) && strlen(trim($author)) > 0) {
$this->author = (string) trim($author);
} // end if
} // end function
//-------------------------------------------------
// Sets $comments variable
//-------------------------------------------------
// @desc Sets $comments variable
// @param (string) $comments
// @return (void)
// @access private
// @see $comments
// @since 1.001 - 2003/05/30
//-------------------------------------------------
function setComments($comments = '') {
if (!isset($this->comments) && strlen(trim($comments)) > 0) {
$this->comments = (string) trim($comments);
} // end if
} // end function
//-------------------------------------------------
// Returns $about variable
//-------------------------------------------------
// @desc Returns $about variable
// @return (string) $about
// @access public
// @see $about
//-------------------------------------------------
function getAbout() {
return (string) $this->about;
} // end function
//-------------------------------------------------
// Returns $title variable
//-------------------------------------------------
// @desc Returns $title variable
// @return (string) $title
// @access public
// @see $title
//-------------------------------------------------
function getTitle() {
return (string) $this->title;
} // end function
//-------------------------------------------------
// Returns $link variable
//-------------------------------------------------
// @desc Returns $link variable
// @return (string) $link
// @access public
// @see $link
//-------------------------------------------------
function getLink() {
return (string) $this->link;
} // end function
//-------------------------------------------------
// Returns $description variable
//-------------------------------------------------
// @desc Returns $description variable
// @return (string) $description
// @access public
// @see $description
//-------------------------------------------------
function getDescription() {
return (string) $this->description;
} // end function
//-------------------------------------------------
// Returns $subject variable
//-------------------------------------------------
// @desc Returns $subject variable
// @return (string) $subject
// @access public
// @see $subject
//-------------------------------------------------
function getSubject() {
return (string) $this->subject;
} // end function
//-------------------------------------------------
// Returns $date variable
//-------------------------------------------------
// @desc Returns $date variable
// @return (string) $date
// @access public
// @see $date
//-------------------------------------------------
function getDate() {
return (string) $this->date;
} // end function
//-------------------------------------------------
// Returns $author variable
//-------------------------------------------------
// @desc Returns $author variable
// @return (string) $author
// @access public
// @see $author
// @since 1.001 - 2003/05/30
//-------------------------------------------------
function getAuthor() {
return (string) $this->author;
} // end function
//-------------------------------------------------
// Returns $comments variable
//-------------------------------------------------
// @desc Returns $comments variable
// @return (string) $comments
// @access public
// @see $comments
// @since 1.001 - 2003/05/30
//-------------------------------------------------
function getComments() {
return (string) $this->comments;
} // end function
} // end class RSSItem
?>