Logo Search packages:      
Sourcecode: mantis version File versions  Download package

class.RSSBuilder.inc.php

<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
//+----------------------------------------------------------------------+
//| WAMP (XP-SP1/1.3.27/4.0.12/4.3.2)                                    |
//+----------------------------------------------------------------------+
//| Copyright (c) 1992-2003 Michael Wimmer                               |
//+----------------------------------------------------------------------+
//| I don't have the time to read through all the licences to find out   |
//| what the exactly say. But it's simple. It's free for non commercial  |
//| projects, but as soon as you make money with it, i want my share :-) |
//| (License : Free for non-commercial use)                              |
//+----------------------------------------------------------------------+
//| Authors: Michael Wimmer <flaimo@gmx.net>                             |
//+----------------------------------------------------------------------+
//
// $Id: class.RSSBuilder.inc.php,v 1.2 2004/06/16 04:29:09 robertjf Exp $

/**
* @package RSSBuilder
* @category FLP
*/
/**
* Abstract class for getting ini preferences
*
* Tested with WAMP (XP-SP1/1.3.27/4.0.12/4.3.2)
* Last change: 2003-06-26
*
* @desc Abstract class for the RSS classes
* @access protected
* @author Michael Wimmer <flaimo 'at' gmx 'dot' net>
* @copyright Michael Wimmer
* @link http://www.flaimo.com/
* @global array $GLOBALS['_TICKER_ini_settings']
* @abstract
* @package RSSBuilder
* @category FLP
* @version 1.002
*/
00039 class RSSBase {

      /*-----------------------*/
      /* C O N S T R U C T O R */
      /*-----------------------*/

      /**
      * Constructor
      *
      * @desc Constructor
      * @return void
      * @access private
      */
00052       function RSSBase() {
      } // end constructor

} // end class RSSBase

//---------------------------------------------------------------------------

/**
* Class for creating a RSS file
*
* Tested with WAMP (XP-SP1/1.3.27/4.0.12/4.3.2)
* Last change: 2003-06-26
*
* @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.002
*/
00075 class RSSBuilder extends RSSBase {

      /*-------------------*/
      /* V A R I A B L E S */
      /*-------------------*/

      /**#@+
      * @access private
      * @var string
      */
      /**
      * encoding of the XML file
      *
      * @desc encoding of the XML file
      */
00090       var $encoding;

      /**
      * URL where the RSS document will be made available
      *
      * @desc URL where the RSS document will be made available
      */
00097       var $about;

      /**
      * title of the rss stream
      *
      * @desc title of the rss stream
      */
00104       var $title;

      /**
      * description of the rss stream
      *
      * @desc description of the rss stream
      */
00111       var $description;

      /**
      * publisher of the rss stream (person, an organization, or a service)
      *
      * @desc publisher of the rss stream
      */
00118       var $publisher;

      /**
      * creator of the rss stream (person, an organization, or a service)
      *
      * @desc creator of the rss stream
      */
00125       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)
      */
00132       var $date;

      /**
      * iso format language
      *
      * @desc iso format language
      */
00139       var $language;

      /**
      * copyrights for the rss stream
      *
      * @desc copyrights for the rss stream
      */
00146       var $rights;

      /**
      * URL to an small image
      *
      * @desc URL to an small image
      */
00153       var $image_link;

      /**
      * spatial location, temporal period or jurisdiction
      *
      * 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, temporal period or jurisdiction
      */
00164       var $coverage;

      /**
      * person, an organization, or a service
      *
      * @desc person, an organization, or a service
      */
00171       var $contributor;

      /**
      * 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly'
      *
      * @desc 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly'
      */
00178       var $period;

      /**
      * 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)
      */
00188       var $base;

      /**
      * category (rss 2.0)
      *
      * @desc category (rss 2.0)
      * @since 1.001 - 2003-05-30
      */
00196       var $category;

      /**
      * compiled outputstring
      *
      * @desc compiled outputstring
      */
00203       var $output;
      /**#@-*/

      /**#@+
      * @access private
      */
      /**
      * every X hours/days/weeks/...
      *
      * @desc every X hours/days/weeks/...
      * @var int
      */
      var $frequency;

      /**
      * caching time in minutes (rss 2.0)
      *
      * @desc caching time in minutes (rss 2.0)
      * @var int
      * @since 1.001 - 2003-05-30
      */
      var $cache;

      /**
      * array wich all the rss items
      *
      * @desc array wich all the rss items
      * @var array
      */
      var $items = array();

      /**
      * use DC data
      *
      * @desc use DC data
      * @var boolean
      */
      var $use_dc_data = FALSE;

      /**
      * use SY data
      *
      * @desc use SY data
      * @var boolean
      */
      var $use_sy_data = FALSE;
      /**#@-*/

      /*-----------------------*/
      /* C O N S T R U C T O R */
      /*-----------------------*/

      /**#@+
      * @return void
      */
      /**
      * 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
      * @uses setEncoding()
      * @uses setAbout()
      * @uses setTitle()
      * @uses setDescription()
      * @uses setImageLink()
      * @uses setCategory()
      * @uses etCache()
      * @access private
      */
00276       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
      * @uses setPublisher()
      * @uses setCreator()
      * @uses setDate()
      * @uses setLanguage()
      * @uses setRights()
      * @uses setCoverage()
      * @uses setContributor()
      * @access public
      */
00316       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
      * @uses setPeriod()
      * @uses setFrequency()
      * @uses setBase()
      * @access public
      */
00345       function addSYdata($period = '', $frequency = '', $base = '') {
            $this->setPeriod($period);
            $this->setFrequency($frequency);
            $this->setBase($base);
            $this->use_sy_data = (boolean) TRUE;
      } // end function
      /**#@-*/

      /**#@+
      * @return void
      * @access private
      */
      /**
      * Sets $encoding variable
      *
      * @desc Sets $encoding variable
      * @param string $encoding  encoding of the xml file
      * @see $encoding
      */
00364       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
      * @see $about
      */
00377       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
      * @see $title
      */
00390       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
      * @see $description
      */
00403       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
      * @see $publisher
      */
00416       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
      * @see $creator
      */
00429       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
      * @see $date
      */
00442       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
      * @see $language
      * @uses isValidLanguageCode()
      */
00456       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
      * @see $rights
      */
00469       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
      * @see $coverage
      */
00482       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
      * @see $contributor
      */
00496       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
      * @see $image_link
      */
00509       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'
      * @see $period
      */
00522       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
      * @see $frequency
      */
00546       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
      * @see $base
      */
00559       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
      * @see $category
      * @since 1.001 - 2003-05-30
      */
00573       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
      * @see $cache
      * @since 1.001 - 2003-05-30
      */
00587       function setCache($cache = '') {
            if (strlen(trim($cache)) > 0) {
                  $this->cache = (int) $cache;
            } // end if
      } // end function
      /**#@-*/

      /**#@+
      * @access public
      */
      /**
      * 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
      * @static
      */
00605       function isValidLanguageCode($code = '') {
            return (boolean) ((preg_match('(^([a-zA-Z]{2})$)',$code) > 0) ? TRUE : FALSE);
      } // end function

      /**
      * Returns $encoding variable
      *
      * @desc Returns $encoding variable
      * @return string $encoding
      * @see $image_link
      */
00616       function getEncoding() {
            return (string) $this->encoding;
      } // end function

      /**
      * Returns $about variable
      *
      * @desc Returns $about variable
      * @return string $about
      * @see $about
      */
00627       function getAbout() {
            return (string) $this->about;
      } // end function

      /**
      * Returns $title variable
      *
      * @desc Returns $title variable
      * @return string $title
      * @see $title
      */
00638       function getTitle() {
            return (string) $this->title;
      } // end function

      /**
      * Returns $description variable
      *
      * @desc Returns $description variable
      * @return string $description
      * @see $description
      */
00649       function getDescription() {
            return (string) $this->description;
      } // end function

      /**
      * Returns $publisher variable
      *
      * @desc Returns $publisher variable
      * @return string $publisher
      * @see $publisher
      */
00660       function getPublisher() {
            return (string) $this->publisher;
      } // end function

      /**
      * Returns $creator variable
      *
      * @desc Returns $creator variable
      * @return string $creator
      * @see $creator
      */
00671       function getCreator() {
            return (string) $this->creator;
      } // end function

      /**
      * Returns $date variable
      *
      * @desc Returns $date variable
      * @return string $date
      * @see $date
      */
00682       function getDate() {
            return (string) $this->date;
      } // end function

      /**
      * Returns $language variable
      *
      * @desc Returns $language variable
      * @return string $language
      * @see $language
      */
00693       function getLanguage() {
            return (string) $this->language;
      } // end function

      /**
      * Returns $rights variable
      *
      * @desc Returns $rights variable
      * @return string $rights
      * @see $rights
      */
00704       function getRights() {
            return (string) $this->rights;
      } // end function

      /**
      * Returns $coverage variable
      *
      * @desc Returns $coverage variable
      * @return string $coverage
      * @see $coverage
      */
00715       function getCoverage() {
            return (string) $this->coverage;
      } // end function

      /**
      * Returns $contributor variable
      *
      * @desc Returns $contributor variable
      * @return string $contributor
      * @see $contributor
      */
00726       function getContributor() {
            return (string) $this->contributor;
      } // end function

      /**
      * Returns $image_link variable
      *
      * @desc Returns $image_link variable
      * @return string $image_link
      * @see $image_link
      */
00737       function getImageLink() {
            return (string) $this->image_link;
      } // end function

      /**
      * Returns $period variable
      *
      * @desc Returns $period variable
      * @return string $period
      * @see $period
      */
00748       function getPeriod() {
            return (string) $this->period;
      } // end function

      /**
      * Returns $frequency variable
      *
      * @desc Returns $frequency variable
      * @return string $frequency
      * @see $frequency
      */
00759       function getFrequency() {
            return (int) $this->frequency;
      } // end function

      /**
      * Returns $base variable
      *
      * @desc Returns $base variable
      * @return string $base
      * @see $base
      */
00770       function getBase() {
            return (string) $this->base;
      } // end function

      /**
      * Returns $category variable
      *
      * @desc Returns $category variable
      * @return string $category
      * @see $category
      * @since 1.001 - 2003-05-30
      */
00782       function getCategory() {
            return (string) $this->category;
      } // end function

      /**
      * Returns $cache variable
      *
      * @desc Returns $cache variable
      * @return int $cache
      * @see $cache
      * @since 1.001 - 2003-05-30
      */
00794       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)
      * @param string $author  some sort of category author of item
      * @param string $comments  url to comment page rss 2.0 value
      * @param string $image  optional mod_im value for dispaying a different pic for every item
      * @return void
      * @see $items
      * @uses RSSItem
      */
00815       function addItem($about = '',
                              $title = '',
                              $link = '',
                              $description = '',
                              $subject = '',
                              $date = '',
                              $author = '',
                              $comments = '',
                              $image = '') {

            $item = new RSSItem($about,
                                          $title,
                                          $link,
                                          $description,
                                          $subject,
                                          $date,
                                          $author,
                                          $comments,
                                          $image);
            $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
      * @see $items
      */
00845       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
      * @see $items
      */
00861       function getItemList() {
            return (array) array_keys($this->items);
      } // end function

      /**
      * Returns the $items array
      *
      * @desc Returns the $items array
      * @return array $items
      */
00871       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
      * @see RSSItem
      */
00883       function getItem($id = -1) {
            if (array_key_exists($id, $this->items)) {
                  return (object) $this->items[$id];
            } else {
                  return (boolean) FALSE;
            } // end if
      } // end function
      /**#@-*/

      /**#@+
      * @return void
      * @access private
      */
      /**
      * creates the output based on the 0.91 rss version
      *
      * @desc creates the output based on the 0.91 rss version
      * @see $output
      */
00902       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
      * @see $output
      * @since 1.001 - 2003-05-30
      */
00914       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
      * @see $output
      */
00993       function createOutputV100() {
            $this->output  = (string) '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:im="http://purl.org/rss/1.0/item-images/" ';

            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: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

                              if (strlen($item->getImage()) > 0) {
                                    $this->output .= (string) '<im:image>' . $item->getImage() . '</im:image>' . "\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
      * @see $output
      * @since 1.001 - 2003-05-30
      */
01134       function createOutputV200() {
            $this->output  = (string) '<rss version="2.0" xmlns:im="http://purl.org/rss/1.0/item-images/" ';

            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) '>' . "\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";
                  $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


            // 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 (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

                              if (strlen($item->getImage()) > 0) {
                                    $this->output .= (string) '<im:image>' . $item->getImage() . '</im:image>' . "\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
      * @uses createOutputV090()
      * @uses createOutputV091()
      * @uses createOutputV200()
      * @uses createOutputV100()
      */
01303       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()
      */
01334       function outputRSS($version = '') {
            if (!isset($this->output)) {
                  $this->createOutput($version);
            } // end if
            header ('content-type: text/xml');
            header('Content-Disposition: inline; filename=rss_' . str_replace(' ','',$this->title) . '.xml');
            $this->output = '<?xml version="1.0" encoding="' . $this->encoding . '"?>' . "\n" .
                                    '<!--  RSS generated by Flaimo.com RSS Builder [' .  date('Y-m-d H:i:s')  .']  --> ' . $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
      */
01352       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 Flaimo.com RSS Builder [' .  date('Y-m-d H:i:s')  .']  --> ' . $this->output;
      } // end function
      /**#@-*/
} // end class RSSBuilder

//---------------------------------------------------------------------------

/**
* single rss item object
*
* Tested with WAMP (XP-SP1/1.3.27/4.0.12/4.3.2)
* Last change: 2003-06-26
*
* @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.002
*/
01379 class RSSItem extends RSSBase {

      /*-------------------*/
      /* V A R I A B L E S */
      /*-------------------*/

      /**#@+
      * @access private
      * @var string
      */
      /**
      * URL
      *
      * @desc URL
      */
01394       var $about;

      /**
      * headline
      *
      * @desc headline
      */
01401       var $title;

      /**
      * URL to the full item
      *
      * @desc URL to the full item
      */
01408       var $link;

      /**
      * optional description
      *
      * @desc optional description
      */
01415       var $description;

      /**
      * optional subject (category)
      *
      * @desc optional subject (category)
      */
01422       var $subject;

      /**
      * optional date
      *
      * @desc optional date
      */
01429       var $date;

      /**
      * author of item
      *
      * @desc author of item
      * @since 1.001 - 2003-05-30
      */
01437       var $author;

      /**
      * url to comments page (rss 2.0)
      *
      * @desc url to comments page (rss 2.0)
      * @since 1.001 - 2003-05-30
      */
01445       var $comments;

      /**
      * imagelink for this item (mod_im only)
      *
      * @desc imagelink for this item (mod_im only)
      * @since 1.002 - 2003-06-26
      */
01453       var $image;
      /**#@-*/

      /*-----------------------*/
      /* C O N S T R U C T O R */
      /*-----------------------*/

      /**#@+
      * @access private
      * @return void
      */
      /**
      * 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)
      * @param string $author  some sort of category author of item
      * @param string $comments  url to comment page rss 2.0 value
      * @param string $image  optional mod_im value for dispaying a different pic for every item
      * @uses setAbout()
      * @uses setTitle()
      * @uses setLink()
      * @uses setDescription()
      * @uses setSubject()
      * @uses setDate()
      * @uses setAuthor()
      * @uses setComments()
      * @uses setImage()
      */
01487       function RSSItem($about = '',
                              $title = '',
                              $link = '',
                              $description = '',
                              $subject = '',
                              $date = '',
                              $author = '',
                              $comments = '',
                              $image = '') {
            $this->setAbout($about);
            $this->setTitle($title);
            $this->setLink($link);
            $this->setDescription($description);
            $this->setSubject($subject);
            $this->setDate($date);
            $this->setAuthor($author);
            $this->setComments($comments);
            $this->setImage($image);
      } // end constructor


      /**
      * Sets $about variable
      *
      * @desc Sets $about variable
      * @param string $about
      * @see $about
      */
01515       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
      * @see $title
      */
01528       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
      * @see $link
      */
01541       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
      * @see $description
      */
01554       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
      * @see $subject
      */
01567       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
      * @see $date
      */
01580       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
      * @see $author
      * @since 1.001 - 2003-05-30
      */
01594       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
      * @see $comments
      * @since 1.001 - 2003-05-30
      */
01608       function setComments($comments = '') {
            if (!isset($this->comments) && strlen(trim($comments)) > 0) {
                  $this->comments = (string) trim($comments);
            } // end if
      } // end function

      /**
      * Sets $image variable
      *
      * @desc Sets $image variable
      * @param string $image
      * @see $image
      * @since 1.002 - 2003-06-26
      */
01622       function setImage($image = '') {
            if (!isset($this->image) && strlen(trim($image)) > 0) {
                  $this->image = (string) trim($image);
            } // end if
      } // end function
      /**#@-*/

      /**#@+
      * @access public
      */
      /**
      * Returns $about variable
      *
      * @desc Returns $about variable
      * @return string $about
      * @see $about
      */
01639       function getAbout() {
            return (string) $this->about;
      } // end function

      /**
      * Returns $title variable
      *
      * @desc Returns $title variable
      * @return string $title
      * @see $title
      */
01650       function getTitle() {
            return (string) $this->title;
      } // end function

      /**
      * Returns $link variable
      *
      * @desc Returns $link variable
      * @return string $link
      * @see $link
      */
01661       function getLink() {
            return (string) $this->link;
      } // end function

      /**
      * Returns $description variable
      *
      * @desc Returns $description variable
      * @return string $description
      * @see $description
      */
01672       function getDescription() {
            return (string) $this->description;
      } // end function

      /**
      * Returns $subject variable
      *
      * @desc Returns $subject variable
      * @return string $subject
      * @see $subject
      */
01683       function getSubject() {
            return (string) $this->subject;
      } // end function

      /**
      * Returns $date variable
      *
      * @desc Returns $date variable
      * @return string $date
      * @see $date
      */
01694       function getDate() {
            return (string) $this->date;
      } // end function

      /**
      * Returns $author variable
      *
      * @desc Returns $author variable
      * @return string $author
      * @see $author
      * @since 1.001 - 2003-05-30
      */
01706       function getAuthor() {
            return (string) $this->author;
      } // end function

      /**
      * Returns $comments variable
      *
      * @desc Returns $comments variable
      * @return string $comments
      * @see $comments
      * @since 1.001 - 2003-05-30
      */
01718       function getComments() {
            return (string) $this->comments;
      } // end function

      /**
      * Returns $image variable
      *
      * @desc Returns $image variable
      * @return string $image
      * @see $image
      * @since 1.002 - 2003-06-26
      */
01730       function getImage() {
            return (string) $this->image;
      } // end function
      /**#@-*/
} // end class RSSItem
?>

Generated by  Doxygen 1.6.0   Back to index