From 39cc09dfc302514bc536c437ba10a2c1325aab07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Tue, 3 Dec 2013 10:39:00 +0100 Subject: [change] update FeedWriter class --- inc/3rdparty/feedwriter/FeedWriter.php | 339 +++++++++++++++++---------------- 1 file changed, 170 insertions(+), 169 deletions(-) (limited to 'inc/3rdparty/feedwriter') diff --git a/inc/3rdparty/feedwriter/FeedWriter.php b/inc/3rdparty/feedwriter/FeedWriter.php index d5d6648a..46ecc3d5 100644 --- a/inc/3rdparty/feedwriter/FeedWriter.php +++ b/inc/3rdparty/feedwriter/FeedWriter.php @@ -1,16 +1,16 @@ @@ -18,21 +18,17 @@ define('ATOM', 3, true); */ class FeedWriter { - private $self = null; // self URL - http://feed2.w3.org/docs/warning/MissingAtomSelfLink.html - private $hubs = array(); // PubSubHubbub hubs private $channels = array(); // Collection of channel elements private $items = array(); // Collection of items as object of FeedItem class. private $data = array(); // Store some other version wise data private $CDATAEncoding = array(); // The tag names which have to encoded as CDATA - private $xsl = null; // stylesheet to render RSS (used by Chrome) - private $json = null; // JSON object private $version = null; /** * Constructor * - * @param constant the version constant (RSS2 or JSON). + * @param constant the version constant (RSS1/RSS2/ATOM). */ function __construct($version = RSS2) { @@ -43,11 +39,7 @@ define('ATOM', 3, true); $this->channels['link'] = 'http://www.ajaxray.com/blog'; //Tag names to encode in CDATA - $this->CDATAEncoding = array('description', 'content:encoded', 'content', 'subtitle', 'summary'); - } - - public function setFormat($format) { - $this->version = $format; + $this->CDATAEncoding = array('description', 'content:encoded', 'summary'); } // Start # public functions --------------------------------------------- @@ -82,26 +74,19 @@ define('ATOM', 3, true); } /** - * Genarate the actual RSS/JSON file + * Genarate the actual RSS/ATOM file * * @access public * @return void */ public function genarateFeed() { - if ($this->version == RSS2) { - header('Content-type: text/xml; charset=UTF-8'); - } elseif ($this->version == JSON) { - header('Content-type: application/json; charset=UTF-8'); - $this->json = new stdClass(); - } + header("Content-type: text/xml"); + $this->printHead(); $this->printChannels(); $this->printItems(); $this->printTale(); - if ($this->version == JSON) { - echo json_encode($this->json); - } } /** @@ -128,6 +113,7 @@ define('ATOM', 3, true); $this->items[] = $feedItem; } + // Wrapper functions ------------------------------------------------------------------- /** @@ -142,42 +128,6 @@ define('ATOM', 3, true); $this->setChannelElement('title', $title); } - /** - * Add a hub to the channel element - * - * @access public - * @param string URL - * @return void - */ - public function addHub($hub) - { - $this->hubs[] = $hub; - } - - /** - * Set XSL URL - * - * @access public - * @param string URL - * @return void - */ - public function setXsl($xsl) - { - $this->xsl = $xsl; - } - - /** - * Set self URL - * - * @access public - * @param string URL - * @return void - */ - public function setSelf($self) - { - $this->self = $self; - } - /** * Set the 'description' channel element * @@ -187,8 +137,7 @@ define('ATOM', 3, true); */ public function setDescription($desciption) { - $tag = ($this->version == ATOM)? 'subtitle' : 'description'; - $this->setChannelElement($tag, $desciption); + $this->setChannelElement('description', $desciption); } /** @@ -217,6 +166,36 @@ define('ATOM', 3, true); $this->setChannelElement('image', array('title'=>$title, 'link'=>$link, 'url'=>$url)); } + /** + * Set the 'about' channel element. Only for RSS 1.0 + * + * @access public + * @param srting value of 'about' channel tag + * @return void + */ + public function setChannelAbout($url) + { + $this->data['ChannelAbout'] = $url; + } + + /** + * Genarates an UUID + * @author Anis uddin Ahmad + * @param string an optional prefix + * @return string the formated uuid + */ + public static function uuid($key = null, $prefix = '') + { + $key = ($key == null)? uniqid(rand()) : $key; + $chars = md5($key); + $uuid = substr($chars,0,8) . '-'; + $uuid .= substr($chars,8,4) . '-'; + $uuid .= substr($chars,12,4) . '-'; + $uuid .= substr($chars,16,4) . '-'; + $uuid .= substr($chars,20,12); + + return $prefix . $uuid; + } // End # public functions ---------------------------------------------- // Start # private functions ---------------------------------------------- @@ -229,17 +208,28 @@ define('ATOM', 3, true); */ private function printHead() { - if ($this->version == RSS2) + $out = '' . "\n"; + + if($this->version == RSS2) + { + $out .= '' . PHP_EOL; + } + elseif($this->version == RSS1) { - $out = ''."\n"; - if ($this->xsl) $out .= 'xsl).'"?>' . PHP_EOL; - $out .= '' . PHP_EOL; - echo $out; + $out .= '' . PHP_EOL;; } - elseif ($this->version == JSON) + else if($this->version == ATOM) { - $this->json->rss = array('@attributes' => array('version' => '2.0')); + $out .= '' . PHP_EOL;; } + echo $out; } /** @@ -250,83 +240,67 @@ define('ATOM', 3, true); */ private function printTale() { - if ($this->version == RSS2) + if($this->version == RSS2) { - echo '',PHP_EOL,''; + echo '' . PHP_EOL . ''; } - // do nothing for JSON + elseif($this->version == RSS1) + { + echo ''; + } + else if($this->version == ATOM) + { + echo ''; + } + } /** * Creates a single node as xml format * * @access private - * @param string name of the tag + * @param srting name of the tag * @param mixed tag value as string or array of nested tags in 'tagName' => 'tagValue' format * @param array Attributes(if any) in 'attrName' => 'attrValue' format * @return string formatted xml tag */ private function makeNode($tagName, $tagContent, $attributes = null) { - if ($this->version == RSS2) + $nodeText = ''; + $attrText = ''; + + if(is_array($attributes)) { - $nodeText = ''; - $attrText = ''; - if (is_array($attributes)) + foreach ($attributes as $key => $value) { - foreach ($attributes as $key => $value) - { - $attrText .= " $key=\"$value\" "; - } + $attrText .= " $key=\"$value\" "; } - $nodeText .= "<{$tagName}{$attrText}>"; - if (is_array($tagContent)) - { - foreach ($tagContent as $key => $value) - { - $nodeText .= $this->makeNode($key, $value); - } - } - else - { - //$nodeText .= (in_array($tagName, $this->CDATAEncoding))? $tagContent : htmlentities($tagContent); - $nodeText .= htmlspecialchars($tagContent); - } - //$nodeText .= (in_array($tagName, $this->CDATAEncoding))? "]]>" : ""; - $nodeText .= ""; - return $nodeText . PHP_EOL; } - elseif ($this->version == JSON) + + if(is_array($tagContent) && $this->version == RSS1) { - $tagName = (string)$tagName; - $tagName = strtr($tagName, ':', '_'); - $node = null; - if (!$tagContent && is_array($attributes) && count($attributes)) - { - $node = array('@attributes' => $this->json_keys($attributes)); - } else { - if (is_array($tagContent)) { - $node = $this->json_keys($tagContent); - } else { - $node = $tagContent; - } - } - return $node; + $attrText = ' rdf:parseType="Resource"'; } - return ''; // should not get here - } - - private function json_keys(array $array) { - $new = array(); - foreach ($array as $key => $val) { - if (is_string($key)) $key = strtr($key, ':', '_'); - if (is_array($val)) { - $new[$key] = $this->json_keys($val); - } else { - $new[$key] = $val; + + + $attrText .= (in_array($tagName, $this->CDATAEncoding) && $this->version == ATOM)? ' type="html" ' : ''; + $nodeText .= (in_array($tagName, $this->CDATAEncoding))? "<{$tagName}{$attrText}>"; + + if(is_array($tagContent)) + { + foreach ($tagContent as $key => $value) + { + $nodeText .= $this->makeNode($key, $value); } } - return $new; + else + { + $nodeText .= (in_array($tagName, $this->CDATAEncoding))? $tagContent : htmlentities($tagContent); + } + + $nodeText .= (in_array($tagName, $this->CDATAEncoding))? "]]>" : ""; + + return $nodeText . PHP_EOL; } /** @@ -340,27 +314,41 @@ define('ATOM', 3, true); switch ($this->version) { case RSS2: - echo '' . PHP_EOL; - // add hubs - foreach ($this->hubs as $hub) { - //echo $this->makeNode('link', '', array('rel'=>'hub', 'href'=>$hub, 'xmlns'=>'http://www.w3.org/2005/Atom')); - echo '' . PHP_EOL; - } - // add self - if (isset($this->self)) { - //echo $this->makeNode('link', '', array('rel'=>'self', 'href'=>$this->self, 'xmlns'=>'http://www.w3.org/2005/Atom')); - echo '' . PHP_EOL; - } - //Print Items of channel - foreach ($this->channels as $key => $value) - { - echo $this->makeNode($key, $value); - } + echo '' . PHP_EOL; break; - case JSON: - $this->json->rss['channel'] = (object)$this->json_keys($this->channels); + case RSS1: + echo (isset($this->data['ChannelAbout']))? "data['ChannelAbout']}\">" : "channels['link']}\">"; break; } + + //Print Items of channel + foreach ($this->channels as $key => $value) + { + if($this->version == ATOM && $key == 'link') + { + // ATOM prints link element as href attribute + echo $this->makeNode($key,'',array('href'=>$value)); + //Add the id for ATOM + echo $this->makeNode('id',self::uuid($value,'urn:uuid:')); + } + else + { + echo $this->makeNode($key, $value); + } + + } + + //RSS 1.0 have special tag with channel + if($this->version == RSS1) + { + echo "" . PHP_EOL . "" . PHP_EOL; + foreach ($this->items as $item) + { + $thisItems = $item->getElements(); + echo "" . PHP_EOL; + } + echo "" . PHP_EOL . "" . PHP_EOL . "" . PHP_EOL; + } } /** @@ -375,28 +363,14 @@ define('ATOM', 3, true); { $thisItems = $item->getElements(); - echo $this->startItem(); - - if ($this->version == JSON) { - $json_item = array(); - } + //the argument is printed as rdf:about attribute of item in rss 1.0 + echo $this->startItem($thisItems['link']['content']); foreach ($thisItems as $feedItem ) { - if ($this->version == RSS2) { - echo $this->makeNode($feedItem['name'], $feedItem['content'], $feedItem['attributes']); - } elseif ($this->version == JSON) { - $json_item[strtr($feedItem['name'], ':', '_')] = $this->makeNode($feedItem['name'], $feedItem['content'], $feedItem['attributes']); - } + echo $this->makeNode($feedItem['name'], $feedItem['content'], $feedItem['attributes']); } echo $this->endItem(); - if ($this->version == JSON) { - if (count($this->items) > 1) { - $this->json->rss['channel']->item[] = $json_item; - } else { - $this->json->rss['channel']->item = $json_item; - } - } } } @@ -404,15 +378,30 @@ define('ATOM', 3, true); * Make the starting tag of channels * * @access private + * @param srting The vale of about tag which is used for only RSS 1.0 * @return void */ - private function startItem() + private function startItem($about = false) { - if ($this->version == RSS2) + if($this->version == RSS2) { echo '' . PHP_EOL; } - // nothing for JSON + elseif($this->version == RSS1) + { + if($about) + { + echo "" . PHP_EOL; + } + else + { + die('link element is not set .\n It\'s required for RSS 1.0 to be used as about attribute of item'); + } + } + else if($this->version == ATOM) + { + echo "" . PHP_EOL; + } } /** @@ -423,12 +412,24 @@ define('ATOM', 3, true); */ private function endItem() { - if ($this->version == RSS2) + if($this->version == RSS2 || $this->version == RSS1) { echo '' . PHP_EOL; } - // nothing for JSON + else if($this->version == ATOM) + { + echo "" . PHP_EOL; + } } + + // End # private functions ---------------------------------------------- - } \ No newline at end of file + + } // end of class FeedWriter + +// autoload classes +function __autoload($class_name) +{ + require_once $class_name . '.php'; +} \ No newline at end of file -- cgit v1.2.3 From 42c80841c846610be280218d53fcde06b0f0063b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicolas=20L=C5=93uillet?= Date: Fri, 6 Dec 2013 09:45:27 +0100 Subject: [change] we now use Full-Text RSS 3.1, thank you so much @fivefilters --- inc/3rdparty/feedwriter/DummySingleItemFeed.php | 24 -- inc/3rdparty/feedwriter/FeedItem.php | 167 --------- inc/3rdparty/feedwriter/FeedWriter.php | 435 ------------------------ 3 files changed, 626 deletions(-) delete mode 100644 inc/3rdparty/feedwriter/DummySingleItemFeed.php delete mode 100644 inc/3rdparty/feedwriter/FeedItem.php delete mode 100644 inc/3rdparty/feedwriter/FeedWriter.php (limited to 'inc/3rdparty/feedwriter') diff --git a/inc/3rdparty/feedwriter/DummySingleItemFeed.php b/inc/3rdparty/feedwriter/DummySingleItemFeed.php deleted file mode 100644 index 5f2f871e..00000000 --- a/inc/3rdparty/feedwriter/DummySingleItemFeed.php +++ /dev/null @@ -1,24 +0,0 @@ -item = new DummySingleItem($url); } - public function get_title() { return ''; } - public function get_description() { return 'Content extracted from '.$this->item->url; } - public function get_link() { return $this->item->url; } - public function get_language() { return false; } - public function get_image_url() { return false; } - public function get_items($start=0, $max=1) { return array(0=>$this->item); } -} -class DummySingleItem { - public $url; - function __construct($url) { $this->url = $url; } - public function get_permalink() { return $this->url; } - public function get_title() { return ''; } - public function get_date($format='') { return false; } - public function get_author($key=0) { return null; } - public function get_authors() { return null; } - public function get_description() { return ''; } - public function get_enclosure($key=0, $prefer=null) { return null; } - public function get_enclosures() { return null; } -} \ No newline at end of file diff --git a/inc/3rdparty/feedwriter/FeedItem.php b/inc/3rdparty/feedwriter/FeedItem.php deleted file mode 100644 index 71e6e98c..00000000 --- a/inc/3rdparty/feedwriter/FeedItem.php +++ /dev/null @@ -1,167 +0,0 @@ - - * @link http://www.ajaxray.com/projects/rss - */ - class FeedItem - { - private $elements = array(); //Collection of feed elements - private $version; - - /** - * Constructor - * - * @param contant (RSS1/RSS2/ATOM) RSS2 is default. - */ - function __construct($version = RSS2) - { - $this->version = $version; - } - - /** - * Add an element to elements array - * - * @access public - * @param srting The tag name of an element - * @param srting The content of tag - * @param array Attributes(if any) in 'attrName' => 'attrValue' format - * @return void - */ - public function addElement($elementName, $content, $attributes = null) - { - $this->elements[$elementName]['name'] = $elementName; - $this->elements[$elementName]['content'] = $content; - $this->elements[$elementName]['attributes'] = $attributes; - } - - /** - * Set multiple feed elements from an array. - * Elements which have attributes cannot be added by this method - * - * @access public - * @param array array of elements in 'tagName' => 'tagContent' format. - * @return void - */ - public function addElementArray($elementArray) - { - if(! is_array($elementArray)) return; - foreach ($elementArray as $elementName => $content) - { - $this->addElement($elementName, $content); - } - } - - /** - * Return the collection of elements in this feed item - * - * @access public - * @return array - */ - public function getElements() - { - return $this->elements; - } - - // Wrapper functions ------------------------------------------------------ - - /** - * Set the 'dscription' element of feed item - * - * @access public - * @param string The content of 'description' element - * @return void - */ - public function setDescription($description) - { - $tag = ($this->version == ATOM)? 'summary' : 'description'; - $this->addElement($tag, $description); - } - - /** - * @desc Set the 'title' element of feed item - * @access public - * @param string The content of 'title' element - * @return void - */ - public function setTitle($title) - { - $this->addElement('title', $title); - } - - /** - * Set the 'date' element of feed item - * - * @access public - * @param string The content of 'date' element - * @return void - */ - public function setDate($date) - { - if(! is_numeric($date)) - { - $date = strtotime($date); - } - - if($this->version == ATOM) - { - $tag = 'updated'; - $value = date(DATE_ATOM, $date); - } - elseif($this->version == RSS2) - { - $tag = 'pubDate'; - $value = date(DATE_RSS, $date); - } - else - { - $tag = 'dc:date'; - $value = date("Y-m-d", $date); - } - - $this->addElement($tag, $value); - } - - /** - * Set the 'link' element of feed item - * - * @access public - * @param string The content of 'link' element - * @return void - */ - public function setLink($link) - { - if($this->version == RSS2 || $this->version == RSS1) - { - $this->addElement('link', $link); - } - else - { - $this->addElement('link','',array('href'=>$link)); - $this->addElement('id', FeedWriter::uuid($link,'urn:uuid:')); - } - - } - - /** - * Set the 'encloser' element of feed item - * For RSS 2.0 only - * - * @access public - * @param string The url attribute of encloser tag - * @param string The length attribute of encloser tag - * @param string The type attribute of encloser tag - * @return void - */ - public function setEncloser($url, $length, $type) - { - $attributes = array('url'=>$url, 'length'=>$length, 'type'=>$type); - $this->addElement('enclosure','',$attributes); - } - - } // end of class FeedItem -?> diff --git a/inc/3rdparty/feedwriter/FeedWriter.php b/inc/3rdparty/feedwriter/FeedWriter.php deleted file mode 100644 index 46ecc3d5..00000000 --- a/inc/3rdparty/feedwriter/FeedWriter.php +++ /dev/null @@ -1,435 +0,0 @@ - - * @link http://www.ajaxray.com/projects/rss - */ - class FeedWriter - { - private $channels = array(); // Collection of channel elements - private $items = array(); // Collection of items as object of FeedItem class. - private $data = array(); // Store some other version wise data - private $CDATAEncoding = array(); // The tag names which have to encoded as CDATA - - private $version = null; - - /** - * Constructor - * - * @param constant the version constant (RSS1/RSS2/ATOM). - */ - function __construct($version = RSS2) - { - $this->version = $version; - - // Setting default value for assential channel elements - $this->channels['title'] = $version . ' Feed'; - $this->channels['link'] = 'http://www.ajaxray.com/blog'; - - //Tag names to encode in CDATA - $this->CDATAEncoding = array('description', 'content:encoded', 'summary'); - } - - // Start # public functions --------------------------------------------- - - /** - * Set a channel element - * @access public - * @param srting name of the channel tag - * @param string content of the channel tag - * @return void - */ - public function setChannelElement($elementName, $content) - { - $this->channels[$elementName] = $content ; - } - - /** - * Set multiple channel elements from an array. Array elements - * should be 'channelName' => 'channelContent' format. - * - * @access public - * @param array array of channels - * @return void - */ - public function setChannelElementsFromArray($elementArray) - { - if(! is_array($elementArray)) return; - foreach ($elementArray as $elementName => $content) - { - $this->setChannelElement($elementName, $content); - } - } - - /** - * Genarate the actual RSS/ATOM file - * - * @access public - * @return void - */ - public function genarateFeed() - { - header("Content-type: text/xml"); - - $this->printHead(); - $this->printChannels(); - $this->printItems(); - $this->printTale(); - } - - /** - * Create a new FeedItem. - * - * @access public - * @return object instance of FeedItem class - */ - public function createNewItem() - { - $Item = new FeedItem($this->version); - return $Item; - } - - /** - * Add a FeedItem to the main class - * - * @access public - * @param object instance of FeedItem class - * @return void - */ - public function addItem($feedItem) - { - $this->items[] = $feedItem; - } - - - // Wrapper functions ------------------------------------------------------------------- - - /** - * Set the 'title' channel element - * - * @access public - * @param srting value of 'title' channel tag - * @return void - */ - public function setTitle($title) - { - $this->setChannelElement('title', $title); - } - - /** - * Set the 'description' channel element - * - * @access public - * @param srting value of 'description' channel tag - * @return void - */ - public function setDescription($desciption) - { - $this->setChannelElement('description', $desciption); - } - - /** - * Set the 'link' channel element - * - * @access public - * @param srting value of 'link' channel tag - * @return void - */ - public function setLink($link) - { - $this->setChannelElement('link', $link); - } - - /** - * Set the 'image' channel element - * - * @access public - * @param srting title of image - * @param srting link url of the imahe - * @param srting path url of the image - * @return void - */ - public function setImage($title, $link, $url) - { - $this->setChannelElement('image', array('title'=>$title, 'link'=>$link, 'url'=>$url)); - } - - /** - * Set the 'about' channel element. Only for RSS 1.0 - * - * @access public - * @param srting value of 'about' channel tag - * @return void - */ - public function setChannelAbout($url) - { - $this->data['ChannelAbout'] = $url; - } - - /** - * Genarates an UUID - * @author Anis uddin Ahmad - * @param string an optional prefix - * @return string the formated uuid - */ - public static function uuid($key = null, $prefix = '') - { - $key = ($key == null)? uniqid(rand()) : $key; - $chars = md5($key); - $uuid = substr($chars,0,8) . '-'; - $uuid .= substr($chars,8,4) . '-'; - $uuid .= substr($chars,12,4) . '-'; - $uuid .= substr($chars,16,4) . '-'; - $uuid .= substr($chars,20,12); - - return $prefix . $uuid; - } - // End # public functions ---------------------------------------------- - - // Start # private functions ---------------------------------------------- - - /** - * Prints the xml and rss namespace - * - * @access private - * @return void - */ - private function printHead() - { - $out = '' . "\n"; - - if($this->version == RSS2) - { - $out .= '' . PHP_EOL; - } - elseif($this->version == RSS1) - { - $out .= '' . PHP_EOL;; - } - else if($this->version == ATOM) - { - $out .= '' . PHP_EOL;; - } - echo $out; - } - - /** - * Closes the open tags at the end of file - * - * @access private - * @return void - */ - private function printTale() - { - if($this->version == RSS2) - { - echo '' . PHP_EOL . ''; - } - elseif($this->version == RSS1) - { - echo ''; - } - else if($this->version == ATOM) - { - echo ''; - } - - } - - /** - * Creates a single node as xml format - * - * @access private - * @param srting name of the tag - * @param mixed tag value as string or array of nested tags in 'tagName' => 'tagValue' format - * @param array Attributes(if any) in 'attrName' => 'attrValue' format - * @return string formatted xml tag - */ - private function makeNode($tagName, $tagContent, $attributes = null) - { - $nodeText = ''; - $attrText = ''; - - if(is_array($attributes)) - { - foreach ($attributes as $key => $value) - { - $attrText .= " $key=\"$value\" "; - } - } - - if(is_array($tagContent) && $this->version == RSS1) - { - $attrText = ' rdf:parseType="Resource"'; - } - - - $attrText .= (in_array($tagName, $this->CDATAEncoding) && $this->version == ATOM)? ' type="html" ' : ''; - $nodeText .= (in_array($tagName, $this->CDATAEncoding))? "<{$tagName}{$attrText}>"; - - if(is_array($tagContent)) - { - foreach ($tagContent as $key => $value) - { - $nodeText .= $this->makeNode($key, $value); - } - } - else - { - $nodeText .= (in_array($tagName, $this->CDATAEncoding))? $tagContent : htmlentities($tagContent); - } - - $nodeText .= (in_array($tagName, $this->CDATAEncoding))? "]]>" : ""; - - return $nodeText . PHP_EOL; - } - - /** - * @desc Print channels - * @access private - * @return void - */ - private function printChannels() - { - //Start channel tag - switch ($this->version) - { - case RSS2: - echo '' . PHP_EOL; - break; - case RSS1: - echo (isset($this->data['ChannelAbout']))? "data['ChannelAbout']}\">" : "channels['link']}\">"; - break; - } - - //Print Items of channel - foreach ($this->channels as $key => $value) - { - if($this->version == ATOM && $key == 'link') - { - // ATOM prints link element as href attribute - echo $this->makeNode($key,'',array('href'=>$value)); - //Add the id for ATOM - echo $this->makeNode('id',self::uuid($value,'urn:uuid:')); - } - else - { - echo $this->makeNode($key, $value); - } - - } - - //RSS 1.0 have special tag with channel - if($this->version == RSS1) - { - echo "" . PHP_EOL . "" . PHP_EOL; - foreach ($this->items as $item) - { - $thisItems = $item->getElements(); - echo "" . PHP_EOL; - } - echo "" . PHP_EOL . "" . PHP_EOL . "" . PHP_EOL; - } - } - - /** - * Prints formatted feed items - * - * @access private - * @return void - */ - private function printItems() - { - foreach ($this->items as $item) - { - $thisItems = $item->getElements(); - - //the argument is printed as rdf:about attribute of item in rss 1.0 - echo $this->startItem($thisItems['link']['content']); - - foreach ($thisItems as $feedItem ) - { - echo $this->makeNode($feedItem['name'], $feedItem['content'], $feedItem['attributes']); - } - echo $this->endItem(); - } - } - - /** - * Make the starting tag of channels - * - * @access private - * @param srting The vale of about tag which is used for only RSS 1.0 - * @return void - */ - private function startItem($about = false) - { - if($this->version == RSS2) - { - echo '' . PHP_EOL; - } - elseif($this->version == RSS1) - { - if($about) - { - echo "" . PHP_EOL; - } - else - { - die('link element is not set .\n It\'s required for RSS 1.0 to be used as about attribute of item'); - } - } - else if($this->version == ATOM) - { - echo "" . PHP_EOL; - } - } - - /** - * Closes feed item tag - * - * @access private - * @return void - */ - private function endItem() - { - if($this->version == RSS2 || $this->version == RSS1) - { - echo '' . PHP_EOL; - } - else if($this->version == ATOM) - { - echo "" . PHP_EOL; - } - } - - - - // End # private functions ---------------------------------------------- - - } // end of class FeedWriter - -// autoload classes -function __autoload($class_name) -{ - require_once $class_name . '.php'; -} \ No newline at end of file -- cgit v1.2.3