1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- <?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();
- }
- }
|