Source of file FeedRenderer.php
Size: 4,231 Bytes - Last Modified: 2014-03-12T23:21:18+01:00
/home/theseer/Downloads/ZendFramework-2.3.0/library/Zend/View/Renderer/FeedRenderer.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 | <?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\View\Renderer; use Zend\View\Exception; use Zend\View\Model\FeedModel; use Zend\View\Model\ModelInterface as Model; use Zend\View\Resolver\ResolverInterface as Resolver; /** * Class for Zend\View\Strategy\FeedStrategy compatible template engine implementations */ class FeedRenderer implements RendererInterface { /** * @var Resolver */ protected $resolver; /** * @var string 'rss' or 'atom'; defaults to 'rss' */ protected $feedType = 'rss'; /** * Return the template engine object, if any * * If using a third-party template engine, such as Smarty, patTemplate, * phplib, etc, return the template engine object. Useful for calling * methods on these objects, such as for setting filters, modifiers, etc. * * @return mixed */ public function getEngine() { return $this; } /** * Set the resolver used to map a template name to a resource the renderer may consume. * * @todo Determine use case for resolvers for feeds * @param Resolver $resolver * @return FeedRenderer */ public function setResolver(Resolver $resolver) { $this->resolver = $resolver; } /** * Renders values as JSON * * @todo Determine what use case exists for accepting only $nameOrModel * @param string|Model $nameOrModel The script/resource process, or a view model * @param null|array|\ArrayAccess $values Values to use during rendering * @throws Exception\InvalidArgumentException * @return string The script output. */ public function render($nameOrModel, $values = null) { if ($nameOrModel instanceof Model) { // Use case 1: View Model provided // Non-FeedModel: cast to FeedModel if (!$nameOrModel instanceof FeedModel) { $vars = $nameOrModel->getVariables(); $options = $nameOrModel->getOptions(); $type = $this->getFeedType(); if (isset($options['feed_type'])) { $type = $options['feed_type']; } else { $this->setFeedType($type); } $nameOrModel = new FeedModel($vars, array('feed_type' => $type)); } } elseif (is_string($nameOrModel)) { // Use case 2: string $nameOrModel + array|Traversable|Feed $values $nameOrModel = new FeedModel($values, (array) $nameOrModel); } else { // Use case 3: failure throw new Exception\InvalidArgumentException(sprintf( '%s expects a ViewModel or a string feed type as the first argument; received "%s"', __METHOD__, (is_object($nameOrModel) ? get_class($nameOrModel) : gettype($nameOrModel)) )); } // Get feed and type $feed = $nameOrModel->getFeed(); $type = $nameOrModel->getFeedType(); if (!$type) { $type = $this->getFeedType(); } else { $this->setFeedType($type); } // Render feed return $feed->export($type); } /** * Set feed type ('rss' or 'atom') * * @param string $feedType * @throws Exception\InvalidArgumentException * @return FeedRenderer */ public function setFeedType($feedType) { $feedType = strtolower($feedType); if (!in_array($feedType, array('rss', 'atom'))) { throw new Exception\InvalidArgumentException(sprintf( '%s expects a string of either "rss" or "atom"', __METHOD__ )); } $this->feedType = $feedType; return $this; } /** * Get feed type * * @return string */ public function getFeedType() { return $this->feedType; } } |