/libraries/domit/xml_domit_rss.php
PHP | 1121 lines | 546 code | 117 blank | 458 comment | 41 complexity | c877f8461536ce796e953facd754141d MD5 | raw file
- <?php
- /**
- * DOMIT! RSS is a DOM based RSS parser
- * @package domit-rss
- * @subpackage domit-rss-main
- * @version 0.51
- * @copyright (C) 2004 John Heinstein. All rights reserved
- * @license http://www.gnu.org/copyleft/lesser.html LGPL License
- * @author John Heinstein <johnkarl@nbnet.nb.ca>
- * @link http://www.engageinteractive.com/domitrss/ DOMIT! RSS Home Page
- * DOMIT! RSS is Free Software
- **/
-
- if (!defined('DOMIT_RSS_INCLUDE_PATH')) {
- define('DOMIT_RSS_INCLUDE_PATH', (dirname(__FILE__) . DIRECTORY_SEPARATOR));
- }
-
- /** current version of DOMIT! RSS */
- define ('DOMIT_RSS_VERSION', '0.51');
- /** language constant */
- define('DOMIT_RSS_ELEMENT_LANGUAGE', 'language');
- /** copyright constant */
- define('DOMIT_RSS_ELEMENT_COPYRIGHT', 'copyright');
- /** managing editor constant */
- define('DOMIT_RSS_ELEMENT_MANAGINGEDITOR', 'managingeditor');
- /** webmaster constant */
- define('DOMIT_RSS_ELEMENT_WEBMASTER', 'webmaster');
- /** pubdate constant */
- define('DOMIT_RSS_ELEMENT_PUBDATE', 'pubdate');
- /** last build date constant */
- define('DOMIT_RSS_ELEMENT_LASTBUILDDATE', 'lastbuilddate');
- /** category constant */
- define('DOMIT_RSS_ELEMENT_CATEGORY', 'category');
- /** generator constant */
- define('DOMIT_RSS_ELEMENT_GENERATOR', 'generator');
- /** docs constant */
- define('DOMIT_RSS_ELEMENT_DOCS', 'docs');
- /** cloud constant */
- define('DOMIT_RSS_ELEMENT_CLOUD', 'cloud');
- /** ttl constant */
- define('DOMIT_RSS_ELEMENT_TTL', 'ttl');
- /** image constant */
- define('DOMIT_RSS_ELEMENT_IMAGE', 'image');
- /** rating constant */
- define('DOMIT_RSS_ELEMENT_RATING', 'rating');
- /** textinput constant */
- define('DOMIT_RSS_ELEMENT_TEXTINPUT', 'textinput');
- /** skiphours constant */
- define('DOMIT_RSS_ELEMENT_SKIPHOURS', 'skiphours');
- /** skipdays constant */
- define('DOMIT_RSS_ELEMENT_SKIPDAYS', 'skipdays');
- /** url constant */
- define('DOMIT_RSS_ELEMENT_URL', 'url');
- /** width constant */
- define('DOMIT_RSS_ELEMENT_WIDTH', 'width');
- /** height constant */
- define('DOMIT_RSS_ELEMENT_HEIGHT', 'height');
- /** guid constant */
- define('DOMIT_RSS_ELEMENT_GUID', 'guid');
- /** enclosure constant */
- define('DOMIT_RSS_ELEMENT_ENCLOSURE', 'enclosure');
- /** comments constant */
- define('DOMIT_RSS_ELEMENT_COMMENTS', 'comments');
- /** source constant */
- define('DOMIT_RSS_ELEMENT_SOURCE', 'source');
- /** name constant */
- define('DOMIT_RSS_ELEMENT_NAME', 'name');
- /** author constant */
- define('DOMIT_RSS_ELEMENT_AUTHOR', 'author');
-
- /** domain constant */
- define('DOMIT_RSS_ATTR_DOMAIN', 'domain');
- /** port constant */
- define('DOMIT_RSS_ATTR_PORT', 'port');
- /** path constant */
- define('DOMIT_RSS_ATTR_PATH', 'path');
- /** registerProcedure constant */
- define('DOMIT_RSS_ATTR_REGISTERPROCEDURE', 'registerProcedure');
- /** protocol constant */
- define('DOMIT_RSS_ATTR_PROTOCOL', 'protocol');
- /** url constant */
- define('DOMIT_RSS_ATTR_URL', 'url');
- /** length constant */
- define('DOMIT_RSS_ATTR_LENGTH', 'length');
- /** type constant */
- define('DOMIT_RSS_ATTR_TYPE', 'type');
- /** isPermaLink constant */
- define('DOMIT_RSS_ATTR_ISPERMALINK', 'isPermaLink');
-
- require_once(DOMIT_RSS_INCLUDE_PATH . 'xml_domit_rss_shared.php');
-
- /**
- * The base DOMIT! RSS document class
- *
- * @package domit-rss
- * @subpackage domit-rss-main
- * @author John Heinstein <johnkarl@nbnet.nb.ca>
- */
- class xml_domit_rss_document extends xml_domit_rss_base_document {
- /**
- * Constructor
- * @param string Path to the rss file
- * @param string Directory in which cache files are to be stored
- * @param string Expiration time (in seconds) for the cache file
- * @return Object A new instance of xml_domit_rss_document
- */
- function xml_domit_rss_document($url = '', $cacheDir = './', $cacheTime = '3600') {
- $this->parser = 'DOMIT_RSS';
- $this->xml_domit_rss_base_document($url, $cacheDir, $cacheTime);
- } //xml_domit_rss_document
-
- /**
- * Performs initialization of the RSS document
- */
- function _init() {
- $total = $this->node->documentElement->childCount;
- $itemCounter = 0;
- $channelCounter = 0;
- $categoryCounter = 0;
-
- for ($i = 0; $i < $total; $i++) {
- $currNode =& $this->node->documentElement->childNodes[$i];
- $tagName = strtolower($currNode->nodeName);
-
- switch ($tagName) {
- case DOMIT_RSS_ELEMENT_ITEM:
- $this->domit_rss_items[$itemCounter] = new xml_domit_rss_item($currNode);
- $itemCounter++;
- break;
- case DOMIT_RSS_ELEMENT_CHANNEL:
- $this->domit_rss_channels[$channelCounter] = new xml_domit_rss_channel($currNode);
- $channelCounter++;
- break;
- case DOMIT_RSS_ELEMENT_CATEGORY:
- $this->domit_rss_categories[$categoryCounter] = new xml_domit_rss_category($currNode);
- $categoryCounter++;
- break;
- case DOMIT_RSS_ELEMENT_IMAGE:
- $this->DOMIT_RSS_indexer[$tagName] = new xml_domit_rss_image($currNode);
- break;
- case DOMIT_RSS_ELEMENT_CLOUD:
- $this->indexer[$tagName] = new xml_domit_rss_cloud($currNode);
- break;
- case DOMIT_RSS_ELEMENT_TEXTINPUT:
- $this->indexer[$tagName] = new xml_domit_rss_textinput($currNode);
- break;
- case DOMIT_RSS_ELEMENT_TITLE:
- case DOMIT_RSS_ELEMENT_LINK:
- case DOMIT_RSS_ELEMENT_DESCRIPTION:
- case DOMIT_RSS_ELEMENT_LANGUAGE:
- case DOMIT_RSS_ELEMENT_COPYRIGHT:
- case DOMIT_RSS_ELEMENT_MANAGINGEDITOR:
- case DOMIT_RSS_ELEMENT_WEBMASTER:
- case DOMIT_RSS_ELEMENT_PUBDATE:
- case DOMIT_RSS_ELEMENT_LASTBUILDDATE:
- case DOMIT_RSS_ELEMENT_GENERATOR:
- case DOMIT_RSS_ELEMENT_DOCS:
- case DOMIT_RSS_ELEMENT_TTL:
- case DOMIT_RSS_ELEMENT_RATING:
- case DOMIT_RSS_ELEMENT_SKIPHOURS:
- case DOMIT_RSS_ELEMENT_SKIPDAYS:
- $this->DOMIT_RSS_indexer[$tagName] = new xml_domit_rss_simpleelement($currNode);
- break;
- default:
- $this->addIndexedElement($currNode);
- //$this->indexer[$tagName] =& $currNode;
- }
- }
-
- if ($itemCounter != 0) {
- $this->DOMIT_RSS_indexer[DOMIT_RSS_ARRAY_ITEMS] =& $this->domit_rss_items;
- }
-
- if ($channelCounter != 0) {
- $this->DOMIT_RSS_indexer[DOMIT_RSS_ARRAY_CHANNELS] =& $this->domit_rss_channels;
- }
-
- if ($categoryCounter != 0) {
- $this->DOMIT_RSS_indexer[DOMIT_RSS_ARRAY_CATEGORIES] =& $this->domit_rss_categories;
- }
-
- $this->handleChannelElementsEmbedded();
- } //_init
-
- /**
- * Returns the current version of DOMIT! RSS
- * @return int The current version of DOMIT! RSS
- */
- function getVersion() {
- return DOMIT_RSS_VERSION;
- } //getVersion
- } //xml_domit_rss_document
-
-
- /**
- * Represents an RSS channel
- *
- * @package domit-rss
- * @subpackage domit-rss-main
- * @author John Heinstein <johnkarl@nbnet.nb.ca>
- */
- class xml_domit_rss_channel extends xml_domit_rss_elementindexer {
- /** @var array A list of references to channel items */
- var $domit_rss_items = array();
- /** @var array A list of references to category items */
- var $domit_rss_categories = array();
-
- /**
- * Constructor
- * @param Object A DOM node containing channel data
- * @param boolean True if channel elements are siblings of the channel rather than children
- */
- function xml_domit_rss_channel(&$channel, $externalElements = false) {
- $this->node =& $channel;
- $this->rssDefinedElements = array('title','link','description','language','copyright',
- 'managingEditor','webmaster','pubDate','lastBuildDate',
- 'generator','docs','cloud','ttl','image', 'rating',
- 'textInput','skipHours','skipDays','domit_rss_channels',
- 'domit_rss_items','domit_rss_categories');
- $this->_init();
- } //xml_domit_rss_channel
-
- /**
- * Performs initialization of the RSS channel element
- */
- function _init() {
- $total = $this->node->childCount;
- $itemCounter = 0;
- $categoryCounter = 0;
-
- for ($i = 0; $i < $total; $i++) {
- $currNode =& $this->node->childNodes[$i];
- $tagName = strtolower($currNode->nodeName);
-
- switch($tagName) {
- case DOMIT_RSS_ELEMENT_ITEM:
- $this->domit_rss_items[$itemCounter] = new xml_domit_rss_item($currNode);
- $itemCounter++;
- break;
- case DOMIT_RSS_ELEMENT_CATEGORY:
- $this->domit_rss_categories[$categoryCounter] = new xml_domit_rss_category($currNode);
- $categoryCounter++;
- break;
- case DOMIT_RSS_ELEMENT_IMAGE:
- $this->DOMIT_RSS_indexer[$tagName] = new xml_domit_rss_image($currNode);
- break;
- case DOMIT_RSS_ELEMENT_CLOUD:
- $this->DOMIT_RSS_indexer[$tagName] = new xml_domit_rss_cloud($currNode);
- break;
- case DOMIT_RSS_ELEMENT_TEXTINPUT:
- $this->DOMIT_RSS_indexer[$tagName] = new xml_domit_rss_textinput($currNode);
- break;
- case DOMIT_RSS_ELEMENT_SKIPHOURS:
- $this->DOMIT_RSS_indexer[$tagName] = new xml_domit_rss_skiphours($currNode);
- break;
- case DOMIT_RSS_ELEMENT_SKIPDAYS:
- $this->DOMIT_RSS_indexer[$tagName] = new xml_domit_rss_skipdays($currNode);
- break;
- case DOMIT_RSS_ELEMENT_TITLE:
- case DOMIT_RSS_ELEMENT_LINK:
- case DOMIT_RSS_ELEMENT_DESCRIPTION:
- case DOMIT_RSS_ELEMENT_LANGUAGE:
- case DOMIT_RSS_ELEMENT_COPYRIGHT:
- case DOMIT_RSS_ELEMENT_MANAGINGEDITOR:
- case DOMIT_RSS_ELEMENT_WEBMASTER:
- case DOMIT_RSS_ELEMENT_PUBDATE:
- case DOMIT_RSS_ELEMENT_LASTBUILDDATE:
- case DOMIT_RSS_ELEMENT_GENERATOR:
- case DOMIT_RSS_ELEMENT_DOCS:
- case DOMIT_RSS_ELEMENT_TTL:
- case DOMIT_RSS_ELEMENT_RATING:
- $this->DOMIT_RSS_indexer[$tagName] = new xml_domit_rss_simpleelement($currNode);
- break;
- default:
- $this->addIndexedElement($currNode);
- //$this->DOMIT_RSS_indexer[$tagName] =& $currNode;
- }
- }
-
- if ($itemCounter != 0) {
- $this->DOMIT_RSS_indexer[DOMIT_RSS_ARRAY_ITEMS] =& $this->domit_rss_items;
- }
-
- if ($categoryCounter != 0) {
- $this->DOMIT_RSS_indexer[DOMIT_RSS_ARRAY_CATEGORIES] =& $this->domit_rss_categories;
- }
- } //_init
-
- /**
- * Returns the title of the channel
- * @return string The title of the channel, or an empty string
- */
- function getTitle() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_TITLE);
- } //getTitle
-
- /**
- * Returns the url of the channel
- * @return string The url of the channel, or an empty string
- */
- function getLink() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_LINK);
- } //getLink
-
- /**
- * Returns a description of the channel
- * @return string A description of the channel, or an empty string
- */
- function getDescription() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_DESCRIPTION);
- } //getDescription
-
- /**
- * Returns the language of the channel
- * @return string The language of the channel, or an empty string
- */
- function getLanguage() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_LANGUAGE);
- } //getLanguage
-
- /**
- * Returns the copyright of the channel
- * @return string The copyright of the channel, or an empty string
- */
- function getCopyright() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_COPYRIGHT);
- } //getCopyright
-
- /**
- * Returns the managing editor of the channel
- * @return string The managing editor of the channel, or an empty string
- */
- function getManagingEditor() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_MANAGINGEDITOR);
- } //getManagingEditor
-
- /**
- * Returns the webmaster of the channel
- * @return string The webmaster of the channel, or an empty string
- */
- function getWebMaster() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_WEBMASTER);
- } //getWebMaster
-
- /**
- * Returns the publication date of the channel
- * @return string The publication date of the channel, or an empty string
- */
- function getPubDate() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_PUBDATE);
- } //getPubDate
-
- /**
- * Returns the last build date of the channel
- * @return string The last build date of the channel, or an empty string
- */
- function getLastBuildDate() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_LASTBUILDDATE);
- } //getLastBuildDate
-
- /**
- * Returns the generator of the channel
- * @return string The generator of the channel, or an empty string
- */
- function getGenerator() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_GENERATOR);
- } //getGenerator
-
- /**
- * Returns the docs of the channel
- * @return string The docs of the channel, or an empty string
- */
- function getDocs() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_DOCS);
- } //getDocs
-
- /**
- * Returns the cloud of the channel
- * @return object A reference to the cloud object for the channel, or null
- */
- function getCloud() {
- if ($this->hasElement(DOMIT_RSS_ELEMENT_CLOUD)) {
- return $this->getElement(DOMIT_RSS_ELEMENT_CLOUD);
- }
-
- return null;
- } //getCloud
-
- /**
- * Returns the ttl of the channel
- * @return string The ttl of the channel, or an empty string
- */
- function getTTL() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_TTL);
- } //getTTL
-
- /**
- * Returns the image of the channel
- * @return object A reference to an image object for the channel, or null
- */
- function getImage() {
- if ($this->hasElement(DOMIT_RSS_ELEMENT_IMAGE)) {
- return $this->getElement(DOMIT_RSS_ELEMENT_IMAGE);
- }
-
- return null;
- } //getImage
-
- /**
- * Returns the rating of the channel
- * @return string The rating of the channel, or an empty string
- */
- function getRating() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_RATING);
- } //getRating
-
- /**
- * Returns the text input box of the channel
- * @return object A reference to a text input box object for the channel, or null
- */
- function getTextInput() {
- if ($this->hasElement(DOMIT_RSS_ELEMENT_TEXTINPUT)) {
- return $this->getElement(DOMIT_RSS_ELEMENT_TEXTINPUT);
- }
-
- return null;
- } //getTextInput
-
- /**
- * Returns the skip days of the channel
- * @return object A reference to the skip days object for the channel, or null
- */
- function getSkipDays() {
- if ($this->hasElement(DOMIT_RSS_ELEMENT_SKIPDAYS)) {
- return $this->getElement(DOMIT_RSS_ELEMENT_SKIPDAYS);
- }
-
- return null;
- } //getSkipDays
-
- /**
- * Returns the skip hours of the channel
- * @return object A reference to the skip hours object for the channel, or null
- */
- function getSkipHours() {
- if ($this->hasElement(DOMIT_RSS_ELEMENT_SKIPHOURS)) {
- return $this->getElement(DOMIT_RSS_ELEMENT_SKIPHOURS);
- }
-
- return null;
- } //getSkipHours
-
- /**
- * Returns the number of items in the channel
- * @return int The number of items in the channel
- */
- function getItemCount() {
- return count($this->domit_rss_items);
- } //getItemCount
-
- /**
- * Returns a reference to the item at the specified index
- * @param int The index of the requested item
- * @return Object A reference to the item at the specified index
- */
- function &getItem($index) {
- return $this->domit_rss_items[$index];
- } //getItem
-
- /**
- * Returns the number of categories in the channel
- * @return int The number of categories in the channel
- */
- function getCategoryCount() {
- return count($this->domit_rss_categories);
- } //getCategoryCount
-
- /**
- * Returns a reference to the category at the specified index
- * @param int The index of the requested category
- * @return Object A reference to the category at the specified index
- */
- function &getCategory($index) {
- return $this->domit_rss_categories[$index];
- } //getCategory
- } //xml_domit_rss_channel
-
- /**
- * Represents an RSS item
- *
- * @package domit-rss
- * @subpackage domit-rss-main
- * @author John Heinstein <johnkarl@nbnet.nb.ca>
- */
- class xml_domit_rss_item extends xml_domit_rss_elementindexer {
- /** @var array A list of references to category items */
- var $domit_rss_categories = array();
-
- /**
- * Constructor
- * @param Object A DOM node containing item data
- */
- function xml_domit_rss_item(&$item) {
- $this->node =& $item;
- $this->rssDefinedElements = array('title','link','description','author','comments',
- 'enclosure','guid','pubDate','source','domit_rss_categories');
- $this->_init();
- } //xml_domit_rss_item
-
- /**
- * Performs initialization of the item element
- */
- function _init(){
- $total = $this->node->childCount;
- $categoryCounter = 0;
-
- for($i = 0; $i < $total; $i++) {
- $currNode =& $this->node->childNodes[$i];
- $tagName = strtolower($currNode->nodeName);
-
- switch ($tagName) {
- case DOMIT_RSS_ELEMENT_CATEGORY:
- $this->categories[$categoryCounter] = new xml_domit_rss_category($currNode);
- $categoryCounter++;
- break;
- case DOMIT_RSS_ELEMENT_ENCLOSURE:
- $this->DOMIT_RSS_indexer[$tagName] = new xml_domit_rss_enclosure($currNode);
- break;
- case DOMIT_RSS_ELEMENT_SOURCE:
- $this->DOMIT_RSS_indexer[$tagName] = new xml_domit_rss_source($currNode);
- break;
- case DOMIT_RSS_ELEMENT_GUID:
- $this->DOMIT_RSS_indexer[$tagName] = new xml_domit_rss_guid($currNode);
- break;
- case DOMIT_RSS_ELEMENT_TITLE:
- case DOMIT_RSS_ELEMENT_LINK:
- case DOMIT_RSS_ELEMENT_DESCRIPTION:
- case DOMIT_RSS_ELEMENT_AUTHOR:
- case DOMIT_RSS_ELEMENT_COMMENTS:
- case DOMIT_RSS_ELEMENT_PUBDATE:
- $this->DOMIT_RSS_indexer[$tagName] = new xml_domit_rss_simpleelement($currNode);
- break;
- default:
- $this->addIndexedElement($currNode);
- //$this->DOMIT_RSS_indexer[$tagName] =& $currNode;
- }
- }
-
- if ($categoryCounter != 0) {
- $this->DOMIT_RSS_indexer[DOMIT_RSS_ARRAY_CATEGORIES] =& $this->domit_rss_categories;
- }
- } //init
-
- /**
- * Returns the title of the item
- * @return string The title of the item, or an empty string
- */
- function getTitle() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_TITLE);
- } //getTitle
-
- /**
- * Returns the url of the item
- * @return string The url of the item, or an empty string
- */
- function getLink() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_LINK);
- } //getLink
-
- /**
- * Returns a description of the item
- * @return string A description of the item, or an empty string
- */
- function getDescription() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_DESCRIPTION);
- } //getDescription
-
- /**
- * Returns the author of the item
- * @return string The author of the item, or an empty string
- */
- function getAuthor() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_AUTHOR);
- } //getAuthor
-
- /**
- * Returns the comments of the item
- * @return string The comments of the item, or an empty string
- */
- function getComments() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_COMMENTS);
- } //getComments
-
- /**
- * Returns the enclosure of the item
- * @return object A reference to the enclosure object for the item, or null
- */
- function getEnclosure() {
- if ($this->hasElement(DOMIT_RSS_ELEMENT_ENCLOSURE)) {
- return $this->getElement(DOMIT_RSS_ELEMENT_ENCLOSURE);
- }
-
- return null;
- } //getEnclosure
-
- /**
- * Returns the guid of the item
- * @return object A reference to the guid object for the item, or null
- */
- function getGUID() {
- if ($this->hasElement(DOMIT_RSS_ELEMENT_GUID)) {
- return $this->getElement(DOMIT_RSS_ELEMENT_GUID);
- }
-
- return null;
- } //getGUID
-
- /**
- * Returns the publication date of the item
- * @return string The publication date of the item, or an empty string
- */
- function getPubDate() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_PUBDATE);
- } //getPubDate
-
- /**
- * Returns the source of the item
- * @return object A reference to the source object for the item, or null
- */
- function getSource() {
- if ($this->hasElement(DOMIT_RSS_ELEMENT_SOURCE)) {
- return $this->getElement(DOMIT_RSS_ELEMENT_SOURCE);
- }
-
- return null;
- } //getSource
-
- /**
- * Returns the number of categories in the item
- * @return int The number of categories in the item
- */
- function getCategoryCount() {
- return count($this->domit_rss_categories);
- } //getCategoryCount
-
- /**
- * Returns a reference to the category at the specified index
- * @param int The index of the requested category
- * @return Object A reference to the category at the specified index
- */
- function &getCategory($index) {
- return $this->domit_rss_categories[$index];
- } //getCategory
- } //xml_domit_rss_item
-
-
- /**
- * Represents an RSS category
- *
- * @package domit-rss
- * @subpackage domit-rss-main
- * @author John Heinstein <johnkarl@nbnet.nb.ca>
- */
- class xml_domit_rss_category extends xml_domit_rss_elementindexer {
- /**
- * Constructor
- * @param Object A DOM node containing category data
- */
- function xml_domit_rss_category(&$category) {
- $this->node =& $category;
- $this->_init();
- } //xml_domit_rss_category
-
- /**
- * Returns the category
- * @return string The category text
- */
- function getCategory() {
- return $this->node->firstChild->toString();
- } //getCategory
-
- /**
- * Returns the category domain
- * @return string The category domain
- */
- function getDomain() {
- return $this->getAttribute(DOMIT_RSS_ATTR_DOMAIN);
- } //getDomain
- } //xml_domit_rss_category
-
- /**
- * Represents an RSS image
- *
- * @package domit-rss
- * @subpackage domit-rss-main
- * @author John Heinstein <johnkarl@nbnet.nb.ca>
- */
- class xml_domit_rss_image extends xml_domit_rss_elementindexer {
- /**
- * Constructor
- * @param Object A DOM node containing image data
- */
- function xml_domit_rss_image(&$image) {
- $this->node =& $image;
- $this->rssDefinedElements = array('title','link','description','url',
- 'width', 'height');
- $this->_init();
- } //xml_domit_rss_image
-
- /**
- * Performs initialization of image element
- */
- function _init(){
- $total = $this->node->childCount;
-
- for($i = 0; $i < $total; $i++) {
- $currNode =& $this->node->childNodes[$i];
- $tagName = strtolower($currNode->nodeName);
-
- switch ($tagName) {
- case DOMIT_RSS_ELEMENT_TITLE:
- case DOMIT_RSS_ELEMENT_LINK:
- case DOMIT_RSS_ELEMENT_DESCRIPTION:
- case DOMIT_RSS_ELEMENT_URL:
- case DOMIT_RSS_ELEMENT_WIDTH:
- case DOMIT_RSS_ELEMENT_HEIGHT:
- $this->DOMIT_RSS_indexer[$tagName] = new xml_domit_rss_simpleelement($currNode);
- break;
- default:
- $this->addIndexedElement($currNode);
- //$this->DOMIT_RSS_indexer[$tagName] =& $currNode;
- }
- }
- } //_init
-
- /**
- * Returns the image title
- * @return string The image title
- */
- function getTitle() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_TITLE);
- } //getTitle
-
- /**
- * Returns the image link
- * @return string The image link
- */
- function getLink() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_LINK);
- } //getLink
-
- /**
- * Returns the image url
- * @return string The image url
- */
- function getUrl() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_URL);
- } //getUrl
-
- /**
- * Returns the image width in pixels
- * @return string The image width (maximum 144, default 88)
- */
- function getWidth() {
- $myWidth = $this->getElementText(DOMIT_RSS_ELEMENT_WIDTH);
-
- if ($myWidth == '') {
- $myWidth = '88';
- }
- else if (intval($myWidth) > 144) {
- $myWidth = '144';
- }
-
- return $myWidth;
- } //getWidth
-
- /**
- * Returns the image height in pixels
- * @return string The image height (maximum 400, default 31)
- */
- function getHeight() {
- $myHeight = $this->getElementText(DOMIT_RSS_ELEMENT_HEIGHT);
-
- if ($myHeight == '') {
- $myHeight = '31';
- }
- else if (intval($myHeight) > 400) {
- $myHeight = '400';
- }
-
- return $myHeight;
- } //getHeight
-
- /**
- * Returns the image description
- * @return string The image description
- */
- function getDescription() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_DESCRIPTION);
- } //getDescription
- } //xml_domit_rss_image
-
- /**
- * Represents an RSS text input form
- *
- * @package domit-rss
- * @subpackage domit-rss-main
- * @author John Heinstein <johnkarl@nbnet.nb.ca>
- */
- class xml_domit_rss_textinput extends xml_domit_rss_elementindexer {
- /**
- * Constructor
- * @param Object A DOM node containing text input data
- */
- function xml_domit_rss_textinput(&$textinput) {
- $this->node =& $textinput;
- $this->rssDefinedElements = array('title','link','description','name');
- $this->_init();
- } //xml_domit_rss_textinput
-
- /**
- * Performs initialization of textInput element
- */
- function _init(){
- $total = $this->node->childCount;
-
- for($i = 0; $i < $total; $i++) {
- $currNode =& $this->node->childNodes[$i];
- $tagName = strtolower($currNode->nodeName);
-
- switch ($tagName) {
- case DOMIT_RSS_ELEMENT_TITLE:
- case DOMIT_RSS_ELEMENT_LINK:
- case DOMIT_RSS_ELEMENT_DESCRIPTION:
- case DOMIT_RSS_ELEMENT_NAME:
- $this->DOMIT_RSS_indexer[$tagName] = new xml_domit_rss_simpleelement($currNode);
- break;
- default:
- $this->addIndexedElement($currNode);
- //$this->DOMIT_RSS_indexer[$tagName] =& $currNode;
- }
- }
- } //_init
-
- /**
- * Returns the title of the text input
- * @return string The title of the text input, or an empty string
- */
- function getTitle() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_TITLE);
- } //getTitle
-
- /**
- * Returns a description of the text input
- * @return string A description of the text input, or an empty string
- */
- function getDescription() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_DESCRIPTION);
- } //getDescription
-
- /**
- * Returns the name of the text input
- * @return string The name of the text input, or an empty string
- */
- function getName() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_NAME);
- } //getName
-
- /**
- * Returns the url of the text input
- * @return string The url of the text input, or an empty string
- */
- function getLink() {
- return $this->getElementText(DOMIT_RSS_ELEMENT_LINK);
- } //getLink
- } //xml_domit_rss_textinput
-
- /**
- * Represents an RSS cloud
- *
- * @package domit-rss
- * @subpackage domit-rss-main
- * @author John Heinstein <johnkarl@nbnet.nb.ca>
- */
- class xml_domit_rss_cloud extends xml_domit_rss_elementindexer {
- /**
- * Constructor
- * @param Object A DOM node containing cloud data
- */
- function xml_domit_rss_cloud(&$cloud) {
- $this->node =& $cloud;
- $this->_init();
- } //xml_domit_rss_cloud
-
- /**
- * Returns the domain of the cloud
- * @return string The domain of the cloud
- */
- function getDomain() {
- return $this->getAttribute(DOMIT_RSS_ATTR_DOMAIN);
- } //getDomain
-
- /**
- * Returns the port of the cloud
- * @return string The port of the cloud
- */
- function getPort() {
- return $this->getAttribute(DOMIT_RSS_ATTR_PORT);
- } //getPort
-
- /**
- * Returns the path of the cloud
- * @return string The path of the cloud
- */
- function getPath() {
- return $this->getAttribute(DOMIT_RSS_ATTR_PATH);
- } //getPath
-
- /**
- * Returns the register procedure value of the cloud
- * @return string The register procedure value of the cloud
- */
- function getRegisterProcedure() {
- return $this->getAttribute(DOMIT_RSS_ATTR_REGISTERPROCEDURE);
- } //getRegisterProcedure
-
- /**
- * Returns the protocol used by the cloud
- * @return string The protocol used by the cloud
- */
- function getProtocol() {
- return $this->getAttribute(DOMIT_RSS_ATTR_PROTOCOL);
- } //getProtocol
- } //xml_domit_rss_cloud
-
- /**
- * Represents an RSS enclosure
- *
- * @package domit-rss
- * @subpackage domit-rss-main
- * @author John Heinstein <johnkarl@nbnet.nb.ca>
- */
- class xml_domit_rss_enclosure extends xml_domit_rss_elementindexer {
- /**
- * Constructor
- * @param Object A DOM node containing enclosure data
- */
- function xml_domit_rss_enclosure(&$enclosure) {
- $this->node =& $enclosure;
- $this->_init();
- } //xml_domit_rss_enclosure
-
- /**
- * Returns the url of the enclosure
- * @return string The url of the enclosure
- */
- function getUrl() {
- return $this->getAttribute(DOMIT_RSS_ATTR_URL);
- } //getUrl
-
- /**
- * Returns the length of the enclosure
- * @return string The length of the enclosure
- */
- function getLength() {
- return $this->getAttribute(DOMIT_RSS_ATTR_LENGTH);
- } //getLength
-
- /**
- * Returns the type of the enclosure
- * @return string The type of the enclosure
- */
- function getType() {
- return $this->getAttribute(DOMIT_RSS_ATTR_TYPE);
- } //getType
- } //xml_domit_rss_enclosure
-
- /**
- * Represents an RSS guid
- *
- * @package domit-rss
- * @subpackage domit-rss-main
- * @author John Heinstein <johnkarl@nbnet.nb.ca>
- */
- class xml_domit_rss_guid extends xml_domit_rss_elementindexer {
- /**
- * Constructor
- * @param Object A DOM node containing guid data
- */
- function xml_domit_rss_guid(&$guid) {
- $this->node =& $guid;
- $this->_init();
- } //xml_domit_rss_guid
-
- /**
- * Returns the guid text
- * @return string The guid text
- */
- function getGuid() {
- return $this->node->getText();
- } //getGuid
-
- /**
- * Determines whether the guid is a permalink
- * @return boolean True if the guid is a permalink (default true)
- */
- function isPermaLink() {
- if (!$this->node->hasAttribute(DOMIT_RSS_ATTR_ISPERMALINK)) {
- return true;
- }
- else {
- return (strtolower($this->node->getAttribute(DOMIT_RSS_ATTR_ISPERMALINK)) == "true");
- }
- } //isPermaLink
- } //xml_domit_rss_guid
-
- /**
- * Represents an RSS source
- *
- * @package domit-rss
- * @subpackage domit-rss-main
- * @author John Heinstein <johnkarl@nbnet.nb.ca>
- */
- class xml_domit_rss_source extends xml_domit_rss_elementindexer {
- /**
- * Constructor
- * @param Object A DOM node containing source data
- */
- function xml_domit_rss_source(&$source) {
- $this->node =& $source;
- $this->_init();
- } //xml_domit_rss_source
-
- /**
- * Returns the source text
- * @return string The source text
- */
- function getSource() {
- return $this->node->getText();
- } //getSource
-
- /**
- * Returns the url of the source
- * @return string The url of the source
- */
- function getUrl() {
- return $this->getAttribute(DOMIT_RSS_ATTR_URL);
- } //getUrl
- } //xml_domit_rss_source
-
- /**
- * Represents an RSS skipDays element
- *
- * @package domit-rss
- * @subpackage domit-rss-main
- * @author John Heinstein <johnkarl@nbnet.nb.ca>
- */
- class xml_domit_rss_skipdays extends xml_domit_rss_elementindexer {
- /**
- * Constructor
- * @param Object A DOM node containing source data
- */
- function xml_domit_rss_skipdays(&$skipdays) {
- $this->node =& $skipdays;
- $this->_init();
- } //xml_domit_rss_skipdays
-
- /**
- * Returns the number of skip day items
- * @return int The number of skip day items
- */
- function getSkipDayCount() {
- return $this->node->childCount;
- } //getSkipDayCount
-
- /**
- * Returns the day of the specified index (Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday)
- * @param int The index of the requested day
- * @return string The day of the specified index (Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday)
- */
- function getSkipDay($index) {
- return $this->node->childNodes[$index]->getText();
- } //getSkipDay
- } //xml_domit_rss_skipdays
-
- /**
- * Represents an RSS skipHours element
- *
- * @package domit-rss
- * @subpackage domit-rss-main
- * @author John Heinstein <johnkarl@nbnet.nb.ca>
- */
- class xml_domit_rss_skiphours extends xml_domit_rss_elementindexer {
- /**
- * Constructor
- * @param Object A DOM node containing source data
- */
- function xml_domit_rss_skiphours(&$skiphours) {
- $this->node =& $skiphours;
- $this->_init();
- } //xml_domit_rss_skiphours
-
- /**
- * Returns the number of skip hour items
- * @return int The number of skip hour items
- */
- function getSkipHourCount() {
- return $this->node->childCount;
- } //getSkipHourCount
-
- /**
- * Returns the hour of the specified index (0-23)
- * @param int The index of the requested hour
- * @return string The hour of the specified index (0-23)
- */
- function getSkipHour($index) {
- return $this->node->childNodes[$index]->getText();
- } //getSkipHour
- } //xml_domit_rss_skiphours
-
- ?>