/** * 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/fguillot/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(); }
/** * Build item * * @access public * @return DOMElement */ public function build() { $this->itemElement = $this->feedBuilder->getDocument()->createElement('entry'); $this->helper = new AtomHelper($this->feedBuilder->getDocument()); if (!empty($this->itemId)) { $this->helper->buildId($this->itemElement, $this->itemId); } else { $this->helper->buildId($this->itemElement, $this->itemUrl); } $this->helper->buildTitle($this->itemElement, $this->itemTitle)->buildLink($this->itemElement, $this->itemUrl)->buildDate($this->itemElement, $this->itemUpdatedDate, 'updated')->buildDate($this->itemElement, $this->itemPublishedDate, 'published')->buildAuthor($this->itemElement, $this->authorName, $this->authorEmail, $this->authorUrl); if (!empty($this->itemSummary)) { $this->helper->buildNode($this->itemElement, 'summary', $this->itemSummary); } if (!empty($this->itemContent)) { $node = $this->feedBuilder->getDocument()->createElement('content'); $node->setAttribute('type', 'html'); $node->appendChild($this->feedBuilder->getDocument()->createCDATASection($this->itemContent)); $this->itemElement->appendChild($node); } return $this->itemElement; }