diff options
Diffstat (limited to 'vendor/miniflux/picofeed/lib/PicoFeed/Syndication/AtomFeedBuilder.php')
-rw-r--r-- | vendor/miniflux/picofeed/lib/PicoFeed/Syndication/AtomFeedBuilder.php | 65 |
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(); + } +} |