diff options
Diffstat (limited to 'library/vendor/Zend/View/Helper/Partial.php')
-rw-r--r-- | library/vendor/Zend/View/Helper/Partial.php | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/library/vendor/Zend/View/Helper/Partial.php b/library/vendor/Zend/View/Helper/Partial.php new file mode 100644 index 0000000..787db9c --- /dev/null +++ b/library/vendor/Zend/View/Helper/Partial.php @@ -0,0 +1,150 @@ +<?php +/** + * Zend Framework + * + * LICENSE + * + * This source file is subject to the new BSD license that is bundled + * with this package in the file LICENSE.txt. + * It is also available through the world-wide-web at this URL: + * http://framework.zend.com/license/new-bsd + * If you did not receive a copy of the license and are unable to + * obtain it through the world-wide-web, please send an email + * to license@zend.com so we can send you a copy immediately. + * + * @category Zend + * @package Zend_View + * @subpackage Helper + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @version $Id$ + * @license http://framework.zend.com/license/new-bsd New BSD License + */ + +/** Zend_View_Helper_Abstract.php */ + +/** + * Helper for rendering a template fragment in its own variable scope. + * + * @package Zend_View + * @subpackage Helper + * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +class Zend_View_Helper_Partial extends Zend_View_Helper_Abstract +{ + /** + * Variable to which object will be assigned + * @var string + */ + protected $_objectKey; + + /** + * Renders a template fragment within a variable scope distinct from the + * calling View object. + * + * If no arguments are passed, returns the helper instance. + * + * If the $model is an array, it is passed to the view object's assign() + * method. + * + * If the $model is an object, it first checks to see if the object + * implements a 'toArray' method; if so, it passes the result of that + * method to to the view object's assign() method. Otherwise, the result of + * get_object_vars() is passed. + * + * @param string $name Name of view script + * @param string|array $module If $model is empty, and $module is an array, + * these are the variables to populate in the + * view. Otherwise, the module in which the + * partial resides + * @param array $model Variables to populate in the view + * @return string|Zend_View_Helper_Partial + */ + public function partial($name = null, $module = null, $model = null) + { + if (0 == func_num_args()) { + return $this; + } + + $view = $this->cloneView(); + if (isset($this->partialCounter)) { + $view->partialCounter = $this->partialCounter; + } + if (isset($this->partialTotalCount)) { + $view->partialTotalCount = $this->partialTotalCount; + } + + if ((null !== $module) && is_string($module)) { + $moduleDir = Zend_Controller_Front::getInstance()->getControllerDirectory($module); + if (null === $moduleDir) { + $e = new Zend_View_Helper_Partial_Exception('Cannot render partial; module does not exist'); + $e->setView($this->view); + throw $e; + } + $viewsDir = dirname($moduleDir) . '/views'; + $view->addBasePath($viewsDir); + } elseif ((null == $model) && (null !== $module) + && (is_array($module) || is_object($module))) + { + $model = $module; + } + + if (!empty($model)) { + if (is_array($model)) { + $view->assign($model); + } elseif (is_object($model)) { + if (null !== ($objectKey = $this->getObjectKey())) { + $view->assign($objectKey, $model); + } elseif (method_exists($model, 'toArray')) { + $view->assign($model->toArray()); + } else { + $view->assign(get_object_vars($model)); + } + } + } + + return $view->render($name); + } + + /** + * Clone the current View + * + * @return Zend_View_Interface + */ + public function cloneView() + { + $view = clone $this->view; + $view->clearVars(); + return $view; + } + + /** + * Set object key + * + * @param string $key + * @return Zend_View_Helper_Partial + */ + public function setObjectKey($key) + { + if (null === $key) { + $this->_objectKey = null; + } else { + $this->_objectKey = (string) $key; + } + + return $this; + } + + /** + * Retrieve object key + * + * The objectKey is the variable to which an object in the iterator will be + * assigned. + * + * @return null|string + */ + public function getObjectKey() + { + return $this->_objectKey; + } +} |