summaryrefslogtreecommitdiff
path: root/vendor/miniflux/picofeed/lib/PicoFeed/Syndication/AtomFeedBuilder.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/miniflux/picofeed/lib/PicoFeed/Syndication/AtomFeedBuilder.php')
-rw-r--r--vendor/miniflux/picofeed/lib/PicoFeed/Syndication/AtomFeedBuilder.php65
1 files changed, 65 insertions, 0 deletions
diff --git a/vendor/miniflux/picofeed/lib/PicoFeed/Syndication/AtomFeedBuilder.php b/vendor/miniflux/picofeed/lib/PicoFeed/Syndication/AtomFeedBuilder.php
new file mode 100644
index 00000000..34f37800
--- /dev/null
+++ b/vendor/miniflux/picofeed/lib/PicoFeed/Syndication/AtomFeedBuilder.php
@@ -0,0 +1,65 @@
+<?php
+
+namespace PicoFeed\Syndication;
+
+use DOMAttr;
+use DOMElement;
+
+/**
+ * Atom Feed Builder
+ *
+ * @package PicoFeed\Syndication
+ * @author Frederic Guillot
+ */
+class AtomFeedBuilder extends FeedBuilder
+{
+ /**
+ * @var DOMElement
+ */
+ protected $feedElement;
+
+ /**
+ * @var AtomHelper
+ */
+ protected $helper;
+
+ /**
+ * Build feed
+ *
+ * @access public
+ * @param string $filename
+ * @return string
+ */
+ public function build($filename = '')
+ {
+ $this->helper = new AtomHelper($this->getDocument());
+
+ $this->feedElement = $this->getDocument()->createElement('feed');
+ $this->feedElement->setAttributeNodeNS(new DomAttr('xmlns', 'http://www.w3.org/2005/Atom'));
+
+ $generator = $this->getDocument()->createElement('generator', 'PicoFeed');
+ $generator->setAttribute('uri', 'https://github.com/miniflux/picoFeed');
+ $this->feedElement->appendChild($generator);
+
+ $this->helper
+ ->buildTitle($this->feedElement, $this->feedTitle)
+ ->buildId($this->feedElement, $this->feedUrl)
+ ->buildDate($this->feedElement, $this->feedDate)
+ ->buildLink($this->feedElement, $this->siteUrl)
+ ->buildLink($this->feedElement, $this->feedUrl, 'self', 'application/atom+xml')
+ ->buildAuthor($this->feedElement, $this->authorName, $this->authorEmail, $this->authorUrl)
+ ;
+
+ foreach ($this->items as $item) {
+ $this->feedElement->appendChild($item->build());
+ }
+
+ $this->getDocument()->appendChild($this->feedElement);
+
+ if ($filename !== '') {
+ $this->getDocument()->save($filename);
+ }
+
+ return $this->getDocument()->saveXML();
+ }
+}