/** * Build item * * @access public * @return DOMElement */ public function build() { $this->itemElement = $this->feedBuilder->getDocument()->createElement('item'); $this->helper = new Rss20Helper($this->feedBuilder->getDocument()); if (!empty($this->itemId)) { $guid = $this->feedBuilder->getDocument()->createElement('guid'); $guid->setAttribute('isPermaLink', 'false'); $guid->appendChild($this->feedBuilder->getDocument()->createTextNode($this->itemId)); $this->itemElement->appendChild($guid); } else { $guid = $this->feedBuilder->getDocument()->createElement('guid'); $guid->setAttribute('isPermaLink', 'true'); $guid->appendChild($this->feedBuilder->getDocument()->createTextNode($this->itemUrl)); $this->itemElement->appendChild($guid); } $this->helper->buildTitle($this->itemElement, $this->itemTitle)->buildLink($this->itemElement, $this->itemUrl)->buildDate($this->itemElement, $this->itemPublishedDate)->buildAuthor($this->itemElement, 'author', $this->authorName, $this->authorEmail); if (!empty($this->itemSummary)) { $this->helper->buildNode($this->itemElement, 'description', $this->itemSummary); } if (!empty($this->itemContent)) { $node = $this->feedBuilder->getDocument()->createElement('content:encoded'); $node->appendChild($this->feedBuilder->getDocument()->createCDATASection($this->itemContent)); $this->itemElement->appendChild($node); } return $this->itemElement; }
/** * 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/fguillot/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(); }