aboutsummaryrefslogtreecommitdiffhomepage
path: root/inc/3rdparty/libraries/feedwriter/FeedWriter.php
diff options
context:
space:
mode:
Diffstat (limited to 'inc/3rdparty/libraries/feedwriter/FeedWriter.php')
-rwxr-xr-x[-rw-r--r--]inc/3rdparty/libraries/feedwriter/FeedWriter.php856
1 files changed, 434 insertions, 422 deletions
diff --git a/inc/3rdparty/libraries/feedwriter/FeedWriter.php b/inc/3rdparty/libraries/feedwriter/FeedWriter.php
index adb2526c..9446cddf 100644..100755
--- a/inc/3rdparty/libraries/feedwriter/FeedWriter.php
+++ b/inc/3rdparty/libraries/feedwriter/FeedWriter.php
@@ -2,6 +2,7 @@
2define('RSS2', 1, true); 2define('RSS2', 1, true);
3define('JSON', 2, true); 3define('JSON', 2, true);
4define('JSONP', 3, true); 4define('JSONP', 3, true);
5define('ATOM', 4, true);
5 6
6 /** 7 /**
7 * Univarsel Feed Writer class 8 * Univarsel Feed Writer class
@@ -9,433 +10,444 @@ define('JSONP', 3, true);
9 * Genarate RSS2 or JSON (original: RSS 1.0, RSS2.0 and ATOM Feed) 10 * Genarate RSS2 or JSON (original: RSS 1.0, RSS2.0 and ATOM Feed)
10 * 11 *
11 * Modified for FiveFilters.org's Full-Text RSS project 12 * Modified for FiveFilters.org's Full-Text RSS project
12 * to allow for inclusion of hubs, JSON output. 13 * to allow for inclusion of hubs, JSON output.
13 * Stripped RSS1 and ATOM support. 14 * Stripped RSS1 and ATOM support.
14 * 15 *
15 * @package UnivarselFeedWriter 16 * @package UnivarselFeedWriter
16 * @author Anis uddin Ahmad <anisniit@gmail.com> 17 * @author Anis uddin Ahmad <anisniit@gmail.com>
17 * @link http://www.ajaxray.com/projects/rss 18 * @link http://www.ajaxray.com/projects/rss
18 */ 19 */
19 class FeedWriter 20 class FeedWriter
20 { 21 {
21 private $self = null; // self URL - http://feed2.w3.org/docs/warning/MissingAtomSelfLink.html 22 private $self = null; // self URL - http://feed2.w3.org/docs/warning/MissingAtomSelfLink.html
22 private $hubs = array(); // PubSubHubbub hubs 23 private $hubs = array(); // PubSubHubbub hubs
23 private $channels = array(); // Collection of channel elements 24 private $channels = array(); // Collection of channel elements
24 private $items = array(); // Collection of items as object of FeedItem class. 25 private $items = array(); // Collection of items as object of FeedItem class.
25 private $data = array(); // Store some other version wise data 26 private $data = array(); // Store some other version wise data
26 private $CDATAEncoding = array(); // The tag names which have to encoded as CDATA 27 private $CDATAEncoding = array(); // The tag names which have to encoded as CDATA
27 private $xsl = null; // stylesheet to render RSS (used by Chrome) 28 private $xsl = null; // stylesheet to render RSS (used by Chrome)
28 private $json = null; // JSON object 29 private $json = null; // JSON object
29 30
30 private $version = null; 31 private $version = null;
31 32
32 /** 33 /**
33 * Constructor 34 * Constructor
34 * 35 *
35 * @param constant the version constant (RSS2 or JSON). 36 * @param constant the version constant (RSS2 or JSON).
36 */ 37 */
37 function __construct($version = RSS2) 38 function __construct($version = RSS2)
38 { 39 {
39 $this->version = $version; 40 $this->version = $version;
40 41
41 // Setting default value for assential channel elements 42 // Setting default value for assential channel elements
42 $this->channels['title'] = $version . ' Feed'; 43 $this->channels['title'] = $version . ' Feed';
43 $this->channels['link'] = 'http://www.ajaxray.com/blog'; 44 $this->channels['link'] = 'http://www.ajaxray.com/blog';
44 45
45 //Tag names to encode in CDATA 46 //Tag names to encode in CDATA
46 $this->CDATAEncoding = array('description', 'content:encoded', 'content', 'subtitle', 'summary'); 47 $this->CDATAEncoding = array('description', 'content:encoded', 'content', 'subtitle', 'summary');
47 } 48 }
48 49
49 public function setFormat($format) { 50 public function setFormat($format) {
50 $this->version = $format; 51 $this->version = $format;
51 } 52 }
52 53
53 // Start # public functions --------------------------------------------- 54 // Start # public functions ---------------------------------------------
54 55
55 /** 56 /**
56 * Set a channel element 57 * Set a channel element
57 * @access public 58 * @access public
58 * @param srting name of the channel tag 59 * @param srting name of the channel tag
59 * @param string content of the channel tag 60 * @param string content of the channel tag
60 * @return void 61 * @return void
61 */ 62 */
62 public function setChannelElement($elementName, $content) 63 public function setChannelElement($elementName, $content)
63 { 64 {
64 $this->channels[$elementName] = $content ; 65 $this->channels[$elementName] = $content ;
65 } 66 }
66 67
67 /** 68 /**
68 * Set multiple channel elements from an array. Array elements 69 * Set multiple channel elements from an array. Array elements
69 * should be 'channelName' => 'channelContent' format. 70 * should be 'channelName' => 'channelContent' format.
70 * 71 *
71 * @access public 72 * @access public
72 * @param array array of channels 73 * @param array array of channels
73 * @return void 74 * @return void
74 */ 75 */
75 public function setChannelElementsFromArray($elementArray) 76 public function setChannelElementsFromArray($elementArray)
76 { 77 {
77 if(! is_array($elementArray)) return; 78 if(! is_array($elementArray)) return;
78 foreach ($elementArray as $elementName => $content) 79 foreach ($elementArray as $elementName => $content)
79 { 80 {
80 $this->setChannelElement($elementName, $content); 81 $this->setChannelElement($elementName, $content);
81 } 82 }
82 } 83 }
83 84
84 /** 85 /**
85 * Genarate the actual RSS/JSON file 86 * Genarate the actual RSS/JSON file
86 * 87 *
87 * @access public 88 * @access public
88 * @return void 89 * @return void
89 */ 90 */
90 public function genarateFeed() 91 public function genarateFeed($withHeaders = true)
91 { 92 {
92 if ($this->version == RSS2) { 93 if ($withHeaders) {
93 header('Content-type: text/xml; charset=UTF-8'); 94 if ($this->version == RSS2) {
94 // this line prevents Chrome 20 from prompting download 95 header('Content-type: text/xml; charset=UTF-8');
95 // used by Google: https://news.google.com/news/feeds?ned=us&topic=b&output=rss 96 // this line prevents Chrome 20 from prompting download
96 header('X-content-type-options: nosniff'); 97 // used by Google: https://news.google.com/news/feeds?ned=us&topic=b&output=rss
97 } elseif ($this->version == JSON) { 98 header('X-content-type-options: nosniff');
98 header('Content-type: application/json; charset=UTF-8'); 99 } elseif ($this->version == JSON) {
99 $this->json = new stdClass(); 100 header('Content-type: application/json; charset=UTF-8');
100 } elseif ($this->version == JSONP) { 101 } elseif ($this->version == JSONP) {
101 header('Content-type: application/javascript; charset=UTF-8'); 102 header('Content-type: application/javascript; charset=UTF-8');
102 $this->json = new stdClass(); 103 }
103 } 104 }
104 $this->printHead(); 105
105 $this->printChannels(); 106 if ($this->version == JSON || $this->version == JSONP) {
106 $this->printItems(); 107 $this->json = new stdClass();
107 $this->printTale(); 108 }
108 if ($this->version == JSON || $this->version == JSONP) { 109
109 echo json_encode($this->json); 110
110 } 111 $this->printHead();
111 } 112 $this->printChannels();
112 113 $this->printItems();
113 /** 114 $this->printTale();
114 * Create a new FeedItem. 115 if ($this->version == JSON || $this->version == JSONP) {
115 * 116 echo json_encode($this->json);
116 * @access public 117 }
117 * @return object instance of FeedItem class 118 }
118 */ 119
119 public function createNewItem() 120 public function &getItems()
120 { 121 {
121 $Item = new FeedItem($this->version); 122 return $this->items;
122 return $Item; 123 }
123 } 124
124 125 /**
125 /** 126 * Create a new FeedItem.
126 * Add a FeedItem to the main class 127 *
127 * 128 * @access public
128 * @access public 129 * @return object instance of FeedItem class
129 * @param object instance of FeedItem class 130 */
130 * @return void 131 public function createNewItem()
131 */ 132 {
132 public function addItem($feedItem) 133 $Item = new FeedItem($this->version);
133 { 134 return $Item;
134 $this->items[] = $feedItem; 135 }
135 } 136
136 137 /**
137 // Wrapper functions ------------------------------------------------------------------- 138 * Add a FeedItem to the main class
138 139 *
139 /** 140 * @access public
140 * Set the 'title' channel element 141 * @param object instance of FeedItem class
141 * 142 * @return void
142 * @access public 143 */
143 * @param srting value of 'title' channel tag 144 public function addItem($feedItem)
144 * @return void 145 {
145 */ 146 $this->items[] = $feedItem;
146 public function setTitle($title) 147 }
147 { 148
148 $this->setChannelElement('title', $title); 149 // Wrapper functions -------------------------------------------------------------------
149 } 150
150 151 /**
151 /** 152 * Set the 'title' channel element
152 * Add a hub to the channel element 153 *
153 * 154 * @access public
154 * @access public 155 * @param srting value of 'title' channel tag
155 * @param string URL 156 * @return void
156 * @return void 157 */
157 */ 158 public function setTitle($title)
158 public function addHub($hub) 159 {
159 { 160 $this->setChannelElement('title', $title);
160 $this->hubs[] = $hub; 161 }
161 } 162
162 163 /**
163 /** 164 * Add a hub to the channel element
164 * Set XSL URL 165 *
165 * 166 * @access public
166 * @access public 167 * @param string URL
167 * @param string URL 168 * @return void
168 * @return void 169 */
169 */ 170 public function addHub($hub)
170 public function setXsl($xsl) 171 {
171 { 172 $this->hubs[] = $hub;
172 $this->xsl = $xsl; 173 }
173 } 174
174 175 /**
175 /** 176 * Set XSL URL
176 * Set self URL 177 *
177 * 178 * @access public
178 * @access public 179 * @param string URL
179 * @param string URL 180 * @return void
180 * @return void 181 */
181 */ 182 public function setXsl($xsl)
182 public function setSelf($self) 183 {
183 { 184 $this->xsl = $xsl;
184 $this->self = $self; 185 }
185 } 186
186 187 /**
187 /** 188 * Set self URL
188 * Set the 'description' channel element 189 *
189 * 190 * @access public
190 * @access public 191 * @param string URL
191 * @param srting value of 'description' channel tag 192 * @return void
192 * @return void 193 */
193 */ 194 public function setSelf($self)
194 public function setDescription($desciption) 195 {
195 { 196 $this->self = $self;
196 $tag = ($this->version == ATOM)? 'subtitle' : 'description'; 197 }
197 $this->setChannelElement($tag, $desciption); 198
198 } 199 /**
199 200 * Set the 'description' channel element
200 /** 201 *
201 * Set the 'link' channel element 202 * @access public
202 * 203 * @param srting value of 'description' channel tag
203 * @access public 204 * @return void
204 * @param srting value of 'link' channel tag 205 */
205 * @return void 206 public function setDescription($description)
206 */ 207 {
207 public function setLink($link) 208 $tag = ($this->version == ATOM)? 'subtitle' : 'description';
208 { 209 $this->setChannelElement($tag, $description);
209 $this->setChannelElement('link', $link); 210 }
210 } 211
211 212 /**
212 /** 213 * Set the 'link' channel element
213 * Set the 'image' channel element 214 *
214 * 215 * @access public
215 * @access public 216 * @param srting value of 'link' channel tag
216 * @param srting title of image 217 * @return void
217 * @param srting link url of the imahe 218 */
218 * @param srting path url of the image 219 public function setLink($link)
219 * @return void 220 {
220 */ 221 $this->setChannelElement('link', $link);
221 public function setImage($title, $link, $url) 222 }
222 { 223
223 $this->setChannelElement('image', array('title'=>$title, 'link'=>$link, 'url'=>$url)); 224 /**
224 } 225 * Set the 'image' channel element
225 226 *
226 // End # public functions ---------------------------------------------- 227 * @access public
227 228 * @param srting title of image
228 // Start # private functions ---------------------------------------------- 229 * @param srting link url of the imahe
229 230 * @param srting path url of the image
230 /** 231 * @return void
231 * Prints the xml and rss namespace 232 */
232 * 233 public function setImage($title, $link, $url)
233 * @access private 234 {
234 * @return void 235 $this->setChannelElement('image', array('title'=>$title, 'link'=>$link, 'url'=>$url));
235 */ 236 }
236 private function printHead() 237
237 { 238 // End # public functions ----------------------------------------------
238 if ($this->version == RSS2) 239
239 { 240 // Start # private functions ----------------------------------------------
240 $out = '<?xml version="1.0" encoding="utf-8"?>'."\n"; 241
241 if ($this->xsl) $out .= '<?xml-stylesheet type="text/xsl" href="'.htmlspecialchars($this->xsl).'"?>' . PHP_EOL; 242 /**
242 $out .= '<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/">' . PHP_EOL; 243 * Prints the xml and rss namespace
243 echo $out; 244 *
244 } 245 * @access private
245 elseif ($this->version == JSON || $this->version == JSONP) 246 * @return void
246 { 247 */
247 $this->json->rss = array('@attributes' => array('version' => '2.0')); 248 private function printHead()
248 } 249 {
249 } 250 if ($this->version == RSS2)
250 251 {
251 /** 252 $out = '<?xml version="1.0" encoding="utf-8"?>'."\n";
252 * Closes the open tags at the end of file 253 if ($this->xsl) $out .= '<?xml-stylesheet type="text/xsl" href="'.htmlspecialchars($this->xsl).'"?>' . PHP_EOL;
253 * 254 $out .= '<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/">' . PHP_EOL;
254 * @access private 255 echo $out;
255 * @return void 256 }
256 */ 257 elseif ($this->version == JSON || $this->version == JSONP)
257 private function printTale() 258 {
258 { 259 $this->json->rss = array('@attributes' => array('version' => '2.0'));
259 if ($this->version == RSS2) 260 }
260 { 261 }
261 echo '</channel>',PHP_EOL,'</rss>'; 262
262 } 263 /**
263 // do nothing for JSON 264 * Closes the open tags at the end of file
264 } 265 *
265 266 * @access private
266 /** 267 * @return void
267 * Creates a single node as xml format 268 */
268 * 269 private function printTale()
269 * @access private 270 {
270 * @param string name of the tag 271 if ($this->version == RSS2)
271 * @param mixed tag value as string or array of nested tags in 'tagName' => 'tagValue' format 272 {
272 * @param array Attributes(if any) in 'attrName' => 'attrValue' format 273 echo '</channel>',PHP_EOL,'</rss>';
273 * @return string formatted xml tag 274 }
274 */ 275 // do nothing for JSON
275 private function makeNode($tagName, $tagContent, $attributes = null) 276 }
276 { 277
277 if ($this->version == RSS2) 278 /**
278 { 279 * Creates a single node as xml format
279 $nodeText = ''; 280 *
280 $attrText = ''; 281 * @access private
281 if (is_array($attributes)) 282 * @param string name of the tag
282 { 283 * @param mixed tag value as string or array of nested tags in 'tagName' => 'tagValue' format
283 foreach ($attributes as $key => $value) 284 * @param array Attributes(if any) in 'attrName' => 'attrValue' format
284 { 285 * @return string formatted xml tag
285 $attrText .= " $key=\"$value\" "; 286 */
286 } 287 private function makeNode($tagName, $tagContent, $attributes = null)
287 } 288 {
288 $nodeText .= "<{$tagName}{$attrText}>"; 289 if ($this->version == RSS2)
289 if (is_array($tagContent)) 290 {
290 { 291 $nodeText = '';
291 foreach ($tagContent as $key => $value) 292 $attrText = '';
292 { 293 if (is_array($attributes))
293 $nodeText .= $this->makeNode($key, $value); 294 {
294 } 295 foreach ($attributes as $key => $value)
295 } 296 {
296 else 297 $attrText .= " $key=\"$value\" ";
297 { 298 }
298 //$nodeText .= (in_array($tagName, $this->CDATAEncoding))? $tagContent : htmlentities($tagContent); 299 }
299 $nodeText .= htmlspecialchars($tagContent); 300 $nodeText .= "<{$tagName}{$attrText}>";
300 } 301 if (is_array($tagContent))
301 //$nodeText .= (in_array($tagName, $this->CDATAEncoding))? "]]></$tagName>" : "</$tagName>"; 302 {
302 $nodeText .= "</$tagName>"; 303 foreach ($tagContent as $key => $value)
303 return $nodeText . PHP_EOL; 304 {
304 } 305 $nodeText .= $this->makeNode($key, $value);
305 elseif ($this->version == JSON || $this->version == JSONP) 306 }
306 { 307 }
307 $tagName = (string)$tagName; 308 else
308 $tagName = strtr($tagName, ':', '_'); 309 {
309 $node = null; 310 //$nodeText .= (in_array($tagName, $this->CDATAEncoding))? $tagContent : htmlentities($tagContent);
310 if (!$tagContent && is_array($attributes) && count($attributes)) 311 $nodeText .= htmlspecialchars($tagContent);
311 { 312 }
312 $node = array('@attributes' => $this->json_keys($attributes)); 313 //$nodeText .= (in_array($tagName, $this->CDATAEncoding))? "]]></$tagName>" : "</$tagName>";
313 } else { 314 $nodeText .= "</$tagName>";
314 if (is_array($tagContent)) { 315 return $nodeText . PHP_EOL;
315 $node = $this->json_keys($tagContent); 316 }
316 } else { 317 elseif ($this->version == JSON || $this->version == JSONP)
317 $node = $tagContent; 318 {
318 } 319 $tagName = (string)$tagName;
319 } 320 $tagName = strtr($tagName, ':', '_');
320 return $node; 321 $node = null;
321 } 322 if (!$tagContent && is_array($attributes) && count($attributes))
322 return ''; // should not get here 323 {
323 } 324 $node = array('@attributes' => $this->json_keys($attributes));
324 325 } else {
325 private function json_keys(array $array) { 326 if (is_array($tagContent)) {
326 $new = array(); 327 $node = $this->json_keys($tagContent);
327 foreach ($array as $key => $val) { 328 } else {
328 if (is_string($key)) $key = strtr($key, ':', '_'); 329 $node = $tagContent;
329 if (is_array($val)) { 330 }
330 $new[$key] = $this->json_keys($val); 331 }
331 } else { 332 return $node;
332 $new[$key] = $val; 333 }
333 } 334 return ''; // should not get here
334 } 335 }
335 return $new; 336
336 } 337 private function json_keys(array $array) {
337 338 $new = array();
338 /** 339 foreach ($array as $key => $val) {
339 * @desc Print channels 340 if (is_string($key)) $key = strtr($key, ':', '_');
340 * @access private 341 if (is_array($val)) {
341 * @return void 342 $new[$key] = $this->json_keys($val);
342 */ 343 } else {
343 private function printChannels() 344 $new[$key] = $val;
344 { 345 }
345 //Start channel tag 346 }
346 if ($this->version == RSS2) { 347 return $new;
347 echo '<channel>' . PHP_EOL; 348 }
348 // add hubs 349
349 foreach ($this->hubs as $hub) { 350 /**
350 //echo $this->makeNode('link', '', array('rel'=>'hub', 'href'=>$hub, 'xmlns'=>'http://www.w3.org/2005/Atom')); 351 * @desc Print channels
351 echo '<link rel="hub" href="'.htmlspecialchars($hub).'" xmlns="http://www.w3.org/2005/Atom" />' . PHP_EOL; 352 * @access private
352 } 353 * @return void
353 // add self 354 */
354 if (isset($this->self)) { 355 private function printChannels()
355 //echo $this->makeNode('link', '', array('rel'=>'self', 'href'=>$this->self, 'xmlns'=>'http://www.w3.org/2005/Atom')); 356 {
356 echo '<link rel="self" href="'.htmlspecialchars($this->self).'" xmlns="http://www.w3.org/2005/Atom" />' . PHP_EOL; 357 //Start channel tag
357 } 358 if ($this->version == RSS2) {
358 //Print Items of channel 359 echo '<channel>' . PHP_EOL;
359 foreach ($this->channels as $key => $value) 360 // add hubs
360 { 361 foreach ($this->hubs as $hub) {
361 echo $this->makeNode($key, $value); 362 //echo $this->makeNode('link', '', array('rel'=>'hub', 'href'=>$hub, 'xmlns'=>'http://www.w3.org/2005/Atom'));
362 } 363 echo '<link rel="hub" href="'.htmlspecialchars($hub).'" xmlns="http://www.w3.org/2005/Atom" />' . PHP_EOL;
363 } elseif ($this->version == JSON || $this->version == JSONP) { 364 }
364 $this->json->rss['channel'] = (object)$this->json_keys($this->channels); 365 // add self
365 } 366 if (isset($this->self)) {
366 } 367 //echo $this->makeNode('link', '', array('rel'=>'self', 'href'=>$this->self, 'xmlns'=>'http://www.w3.org/2005/Atom'));
367 368 echo '<link rel="self" href="'.htmlspecialchars($this->self).'" xmlns="http://www.w3.org/2005/Atom" />' . PHP_EOL;
368 /** 369 }
369 * Prints formatted feed items 370 //Print Items of channel
370 * 371 foreach ($this->channels as $key => $value)
371 * @access private 372 {
372 * @return void 373 echo $this->makeNode($key, $value);
373 */ 374 }
374 private function printItems() 375 } elseif ($this->version == JSON || $this->version == JSONP) {
375 { 376 $this->json->rss['channel'] = (object)$this->json_keys($this->channels);
376 foreach ($this->items as $item) { 377 }
377 $itemElements = $item->getElements(); 378 }
378 379
379 echo $this->startItem(); 380 /**
380 381 * Prints formatted feed items
381 if ($this->version == JSON || $this->version == JSONP) { 382 *
382 $json_item = array(); 383 * @access private
383 } 384 * @return void
384 385 */
385 foreach ($itemElements as $thisElement) { 386 private function printItems()
386 foreach ($thisElement as $instance) { 387 {
387 if ($this->version == RSS2) { 388 foreach ($this->items as $item) {
388 echo $this->makeNode($instance['name'], $instance['content'], $instance['attributes']); 389 $itemElements = $item->getElements();
389 } elseif ($this->version == JSON || $this->version == JSONP) { 390
390 $_json_node = $this->makeNode($instance['name'], $instance['content'], $instance['attributes']); 391 echo $this->startItem();
391 if (count($thisElement) > 1) { 392
392 $json_item[strtr($instance['name'], ':', '_')][] = $_json_node; 393 if ($this->version == JSON || $this->version == JSONP) {
393 } else { 394 $json_item = array();
394 $json_item[strtr($instance['name'], ':', '_')] = $_json_node; 395 }
395 } 396
396 } 397 foreach ($itemElements as $thisElement) {
397 } 398 foreach ($thisElement as $instance) {
398 } 399 if ($this->version == RSS2) {
399 echo $this->endItem(); 400 echo $this->makeNode($instance['name'], $instance['content'], $instance['attributes']);
400 if ($this->version == JSON || $this->version == JSONP) { 401 } elseif ($this->version == JSON || $this->version == JSONP) {
401 if (count($this->items) > 1) { 402 $_json_node = $this->makeNode($instance['name'], $instance['content'], $instance['attributes']);
402 $this->json->rss['channel']->item[] = $json_item; 403 if (count($thisElement) > 1) {
403 } else { 404 $json_item[strtr($instance['name'], ':', '_')][] = $_json_node;
404 $this->json->rss['channel']->item = $json_item; 405 } else {
405 } 406 $json_item[strtr($instance['name'], ':', '_')] = $_json_node;
406 } 407 }
407 } 408 }
408 } 409 }
409 410 }
410 /** 411 echo $this->endItem();
411 * Make the starting tag of channels 412 if ($this->version == JSON || $this->version == JSONP) {
412 * 413 if (count($this->items) > 1) {
413 * @access private 414 $this->json->rss['channel']->item[] = $json_item;
414 * @return void 415 } else {
415 */ 416 $this->json->rss['channel']->item = $json_item;
416 private function startItem() 417 }
417 { 418 }
418 if ($this->version == RSS2) 419 }
419 { 420 }
420 echo '<item>' . PHP_EOL; 421
421 } 422 /**
422 // nothing for JSON 423 * Make the starting tag of channels
423 } 424 *
424 425 * @access private
425 /** 426 * @return void
426 * Closes feed item tag 427 */
427 * 428 private function startItem()
428 * @access private 429 {
429 * @return void 430 if ($this->version == RSS2)
430 */ 431 {
431 private function endItem() 432 echo '<item>' . PHP_EOL;
432 { 433 }
433 if ($this->version == RSS2) 434 // nothing for JSON
434 { 435 }
435 echo '</item>' . PHP_EOL; 436
436 } 437 /**
437 // nothing for JSON 438 * Closes feed item tag
438 } 439 *
439 440 * @access private
440 // End # private functions ---------------------------------------------- 441 * @return void
442 */
443 private function endItem()
444 {
445 if ($this->version == RSS2)
446 {
447 echo '</item>' . PHP_EOL;
448 }
449 // nothing for JSON
450 }
451
452 // End # private functions ----------------------------------------------
441 } \ No newline at end of file 453 } \ No newline at end of file