diff options
Diffstat (limited to '3rdparty/ZendFeed/Writer/Extension/WellFormedWeb/Renderer/Entry.php')
-rw-r--r-- | 3rdparty/ZendFeed/Writer/Extension/WellFormedWeb/Renderer/Entry.php | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/3rdparty/ZendFeed/Writer/Extension/WellFormedWeb/Renderer/Entry.php b/3rdparty/ZendFeed/Writer/Extension/WellFormedWeb/Renderer/Entry.php new file mode 100644 index 000000000..be13b71d9 --- /dev/null +++ b/3rdparty/ZendFeed/Writer/Extension/WellFormedWeb/Renderer/Entry.php @@ -0,0 +1,80 @@ +<?php +/** + * Zend Framework (http://framework.zend.com/) + * + * @link http://github.com/zendframework/zf2 for the canonical source repository + * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +namespace Zend\Feed\Writer\Extension\WellFormedWeb\Renderer; + +use DOMDocument; +use DOMElement; +use Zend\Feed\Writer\Extension; + +/** +*/ +class Entry extends Extension\AbstractRenderer +{ + + /** + * Set to TRUE if a rendering method actually renders something. This + * is used to prevent premature appending of a XML namespace declaration + * until an element which requires it is actually appended. + * + * @var bool + */ + protected $called = false; + + /** + * Render entry + * + * @return void + */ + public function render() + { + if (strtolower($this->getType()) == 'atom') { + return; // RSS 2.0 only + } + $this->_setCommentFeedLinks($this->dom, $this->base); + if ($this->called) { + $this->_appendNamespaces(); + } + } + + /** + * Append entry namespaces + * + * @return void + */ + protected function _appendNamespaces() + { + $this->getRootElement()->setAttribute('xmlns:wfw', + 'http://wellformedweb.org/CommentAPI/'); + } + + /** + * Set entry comment feed links + * + * @param DOMDocument $dom + * @param DOMElement $root + * @return void + */ + protected function _setCommentFeedLinks(DOMDocument $dom, DOMElement $root) + { + $links = $this->getDataContainer()->getCommentFeedLinks(); + if (!$links || empty($links)) { + return; + } + foreach ($links as $link) { + if ($link['type'] == 'rss') { + $flink = $this->dom->createElement('wfw:commentRss'); + $text = $dom->createTextNode($link['uri']); + $flink->appendChild($text); + $root->appendChild($flink); + } + } + $this->called = true; + } +} |