first import
[projectpier.git] / library / feed / renderer / Angie_Feed_Renderer_RSS2.class.php
blob4a1f28d9597a721f7fb2db91a30fc2b5f54306ef
1 <?php
3 /**
4 * RSS 2.0 feed renderer
5 *
6 * This renderer will use input feed object to render valid RSS 2.0 feed
8 * @package Angie.toys
9 * @subpackage feed.renderers
10 * @http://www.projectpier.org/
12 class Angie_Feed_Renderer_RSS2 extends Angie_Feed_Renderer {
14 /**
15 * Render feed
17 * Render RSS 2.0 feed (spec: http://blogs.law.harvard.edu/tech/rss)
19 * @param Angie_Feed $feed
20 * @return string
22 function render(Angie_Feed $feed) {
23 $result = "<rss version=\"2.0\">\n<channel>\n";
24 $result .= '<title>' . clean($feed->getTitle()) . "</title>\n";
25 $result .= '<link>' . clean($feed->getLink()) . "</link>\n";
26 if($description = trim($feed->getDescription())) {
27 $result .= '<description>' . clean($description) . "</description>\n";
28 } // if
29 if($language = trim($feed->getLanguage())) {
30 $result .= '<language>' . clean($language) . "</language>\n";
31 } // if
33 foreach($feed->getItems() as $feed_item) {
34 $result .= $this->renderItem($feed_item) . "\n";
35 } // foreach
37 $result .= "</channel>\n</rss>";
38 return $result;
39 } // render
41 /**
42 * Render single feed item
44 * @param Angie_Feed_Item $item
45 * @return string
47 private function renderItem(Angie_Feed_Item $item) {
48 $result = "<item>\n";
49 $result .= '<title>' . clean($item->getTitle()) . "</title>\n";
50 $result .= '<link>' . clean($item->getLink()) . "</link>\n";
51 if($description = trim($item->getDescription())) {
52 $result .= '<description>' . clean($description) . "</description>\n";
53 } // if
55 $author = $item->getAuthor();
56 if($author instanceof Angie_Feed_Author) {
57 $result .= '<author>' . clean($author->getEmail()) . ' (' . clean($author->getName()) . ")</author>\n";
58 } // if
60 $pubdate = $item->getPublicationDate();
61 if($pubdate instanceof DateTimeValue) {
62 $result .= '<pubdate>' . $pubdate->toRSS() . "</pubdate>\n";
63 } // if
65 $result .= '</item>';
66 return $result;
67 } // renderItem
69 } // Angie_Feed_Renderer_RSS2