00001 <?PHP
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00021 class Feed
00022 {
00023 var $type;
00024 var $items;
00025
00026 var $title;
00027 var $link;
00028 var $description;
00029 var $pubDate;
00030 var $generator;
00031
00044 function Feed( $title, $link, $description, $pubDate, $generator = null, $type = null )
00045 {
00046 $this->title = $title;
00047 $this->link = $link;
00048 $this->description = $description;
00049 $this->pubDate = $pubDate;
00050
00051 $this->generator = ( $generator == null ) ? "Travelsized Feeds" : $generator;
00052 $this->type = ( $type == null ) ? "RSS2" : $type;
00053 $this->items = array();
00054 $this->itemCount = 0;
00055 }
00056
00062 function addItem( $feedItem )
00063 {
00064 $this->items[] = $feedItem;
00065 }
00066
00074 function render( $type = null )
00075 {
00076 if( $type != null )
00077 $this->type = $type;
00078
00079 $rendererType = "FeedRenderer" . $this->type;
00080 $renderer = new $rendererType( $this );
00081
00082 $renderedContent = $renderer->renderHead( $this );
00083
00084 foreach( $this->items as $key => $item )
00085 $renderedContent .= $renderer->renderItem( $item );
00086
00087 $renderedContent .= $renderer->renderFoot( $this );
00088
00089 return $renderedContent;
00090 }
00091 }
00092
00096 class FeedItem
00097 {
00098 var $title;
00099 var $link;
00100 var $description;
00101 var $pubDate;
00102 var $guid;
00103
00113 function FeedItem( $title, $link, $description, $pubDate, $guid )
00114 {
00115 $this->title = $title;
00116 $this->link = $link;
00117 $this->description = $description;
00118 $this->pubDate = $pubDate;
00119 $this->guid = $guid;
00120 }
00121 }
00122
00126 class FeedRendererRSS2
00127 {
00131 function FeedRendererRSS2() {}
00132
00140 function renderHead( $feed )
00141 {
00142 $renderedContent = "<?xml version=\"1.0\"?>
00143 <rss version=\"2.0\">
00144 <channel>
00145 <title>" . $feed->title . "</title>
00146 <link>" . $feed->link . "</link>
00147 <description>" . $feed->description . "</description>
00148 <pubDate>" . date( "r", $feed->pubDate ) . "</pubDate>
00149 <generator>" . $feed->generator . "</generator>";
00150
00151 return $renderedContent;
00152 }
00153
00161 function renderItem( $feedItem )
00162 {
00163 $renderedContent = "
00164 <item>
00165 <title>" . $feedItem->title . "</title>
00166 <link>" . $feedItem->link . "</link>
00167 <description>" . $feedItem->description . "</description>
00168 <pubDate>" . date( "r", $feed->pubDate ) . "</pubDate>
00169 <guid>" . $feedItem->guid . "</guid>
00170 </item>";
00171 return $renderedContent;
00172 }
00173
00181 function renderFoot( $feed )
00182 {
00183 $renderedContent = "
00184 </channel>
00185 </rss>";
00186 return $renderedContent;
00187 }
00188 }
00189
00190 ?>