summaryrefslogtreecommitdiff
path: root/vendor/miniflux/picofeed/lib/PicoFeed/Syndication/Rss20FeedBuilder.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/miniflux/picofeed/lib/PicoFeed/Syndication/Rss20FeedBuilder.php')
-rw-r--r--vendor/miniflux/picofeed/lib/PicoFeed/Syndication/Rss20FeedBuilder.php76
1 files changed, 76 insertions, 0 deletions
diff --git a/vendor/miniflux/picofeed/lib/PicoFeed/Syndication/Rss20FeedBuilder.php b/vendor/miniflux/picofeed/lib/PicoFeed/Syndication/Rss20FeedBuilder.php
new file mode 100644
index 00000000..bc3f5135
--- /dev/null
+++ b/vendor/miniflux/picofeed/lib/PicoFeed/Syndication/Rss20FeedBuilder.php
@@ -0,0 +1,76 @@
+<?php
+
+namespace PicoFeed\Syndication;
+
+use DOMAttr;
+use DOMElement;
+
+/**
+ * Rss20 Feed Builder
+ *
+ * @package PicoFeed\Syndication
+ * @author Frederic Guillot
+ */
+class Rss20FeedBuilder extends FeedBuilder
+{
+ /**
+ * @var DOMElement
+ */
+ protected $rssElement;
+
+ /**
+ * @var Rss20Helper
+ */
+ protected $helper;
+
+ /**
+ * @var DOMElement
+ */
+ protected $channelElement;
+
+ /**
+ * Build feed
+ *
+ * @access public
+ * @param string $filename
+ * @return string
+ */
+ public function build($filename = '')
+ {
+ $this->helper = new Rss20Helper($this->getDocument());
+
+ $this->rssElement = $this->getDocument()->createElement('rss');
+ $this->rssElement->setAttribute('version', '2.0');
+ $this->rssElement->setAttributeNodeNS(new DomAttr('xmlns:content', 'http://purl.org/rss/1.0/modules/content/'));
+ $this->rssElement->setAttributeNodeNS(new DomAttr('xmlns:atom', 'http://www.w3.org/2005/Atom'));
+
+ $this->channelElement = $this->getDocument()->createElement('channel');
+ $this->helper
+ ->buildNode($this->channelElement, 'generator', 'PicoFeed (https://github.com/miniflux/picoFeed)')
+ ->buildTitle($this->channelElement, $this->feedTitle)
+ ->buildNode($this->channelElement, 'description', $this->feedTitle)
+ ->buildDate($this->channelElement, $this->feedDate)
+ ->buildAuthor($this->channelElement, 'webMaster', $this->authorName, $this->authorEmail)
+ ->buildLink($this->channelElement, $this->siteUrl)
+ ;
+
+ $link = $this->getDocument()->createElement('atom:link');
+ $link->setAttribute('href', $this->feedUrl);
+ $link->setAttribute('rel', 'self');
+ $link->setAttribute('type', 'application/rss+xml');
+ $this->channelElement->appendChild($link);
+
+ foreach ($this->items as $item) {
+ $this->channelElement->appendChild($item->build());
+ }
+
+ $this->rssElement->appendChild($this->channelElement);
+ $this->getDocument()->appendChild($this->rssElement);
+
+ if ($filename !== '') {
+ $this->getDocument()->save($filename);
+ }
+
+ return $this->getDocument()->saveXML();
+ }
+}