/application/libraries/Engine/Controller/Action/Helper/ViewRenderer.php
https://github.com/grandison/budo16 · PHP · 361 lines · 90 code · 17 blank · 254 comment · 11 complexity · 093c07bee2d2878708c7f03c33fa5ce7 MD5 · raw file
- <?php
- /**
- * SocialEngine
- *
- * @category Engine
- * @package Engine_Controller
- * @copyright Copyright 2006-2010 Webligo Developments
- * @license http://www.socialengine.net/license/
- * @version $Id: ViewRenderer.php 7244 2010-09-01 01:49:53Z john $
- * @todo documentation
- */
- /**
- * @category Engine
- * @package Engine_Controller
- * @copyright Copyright 2006-2010 Webligo Developments
- * @license http://www.socialengine.net/license/
- */
- class Engine_Controller_Action_Helper_ViewRenderer extends Zend_Controller_Action_Helper_ViewRenderer
- {
- protected $_viewScriptPathSpec = 'application/modules/{module}/views/scripts/{controller}/{action}.{suffix}';
- public function getInflector()
- {
- throw new Exception('Removed');
- }
- public function setInflector(Zend_Filter_Inflector $inflector, $reference = false)
- {
- throw new Exception('Removed');
- }
- public function getViewScript($action = null, array $vars = array())
- {
- if ((null === $action) && (!isset($vars['action']))) {
- $action = $this->getScriptAction();
- if (null === $action) {
- $action = $this->getRequest()->getActionName();
- }
- $vars['action'] = $action;
- } elseif (null !== $action) {
- $vars['action'] = $action;
- }
- $vars['module'] = ucfirst($this->getModule());
- $vars['controller'] = $this->getRequest()->getControllerName();
- $vars['suffix'] = $this->getViewSuffix();
- $newVars = array();
- foreach( $vars as $key => $value )
- {
- $newVars['{'.$key.'}'] = $value;
- }
- $path = $this->getViewScriptPathSpec();
- $path = str_replace(array_keys($newVars), array_values($newVars), $path);
- return $path;
- }
- public function setBasePath($path)
- {
- $this->_basePath = $path;
- return $this;
- }
- protected function _getBasePath()
- {
- if( null === $this->_basePath ) {
- $this->setBasePath(APPLICATION_PATH);
- }
- return $this->_basePath;
- }
- public function initView($path = null, $prefix = null, array $options = array())
- {
- if( null === $this->view )
- {
- throw new Engine_Exception('No view set in ViewRenderer');
- }
- // Reset some flags every time
- $options['noController'] = (isset($options['noController'])) ? $options['noController'] : false;
- $options['noRender'] = (isset($options['noRender'])) ? $options['noRender'] : false;
- $this->_scriptAction = null;
- $this->_responseSegment = null;
- // Set options first; may be used to determine other initializations
- $this->_setOptions($options);
- // Get base view path
- $path = $this->_getBasePath();
- // Get class path
- $request = $this->getRequest();
- $module = $request->getModuleName();
- if (null === $module) {
- $module = $this->getFrontController()->getDispatcher()->getDefaultModule();
- }
- $classPath = APPLICATION_PATH.DS.'application'.DS.'modules'.DS.$module.DS.'View'.DS;
- // Get class prefix
- if( null === $prefix )
- {
- $prefix = ucfirst($module).'_View_';
- }
- // Determine if this path has already been registered
- $currentPaths = $this->view->getScriptPaths();
- $path = str_replace(array('/', '\\'), '/', $path);
- $pathExists = false;
- foreach ($currentPaths as $tmpPath) {
- $tmpPath = str_replace(array('/', '\\'), '/', $tmpPath);
- if (strstr($tmpPath, $path)) {
- $pathExists = true;
- break;
- }
- }
- if (!$pathExists) {
- $this->view->addScriptPath($path);
- }
- $this->view->addHelperPath($classPath . 'Helper', $prefix . 'Helper');
- $this->view->addFilterPath($classPath . 'Filter', $prefix . 'Filter');
- // Register view with action controller (unless already registered)
- if ((null !== $this->_actionController) && (null === $this->_actionController->view)) {
- $this->_actionController->view = $this->view;
- $this->_actionController->viewSuffix = $this->_viewSuffix;
- }
- }
- /*
- public $view;
- protected $_frontController;
- protected $_neverController = false;
- protected $_neverRender = false;
- protected $_noController = false;
- protected $_noRender = false;
- protected $_responseSegment = null;
- protected $_scriptAction = null;
- protected $_viewSuffix = 'tpl';
- protected $_viewBasePathSpec = '{globalDir}';
- protected $_viewScriptPathSpec = '{moduleDir}/views/scripts/{controller}/{action}.{suffix}';
- // Main
-
- public function __construct(Zend_View_Interface $view = null)
- {
- if( null !== $view )
- {
- $this->setView($view);
- }
- }
- public function init()
- {
- if( $this->getFrontController()->getParam('noViewRenderer') )
- {
- return;
- }
-
- $this->initView();
- }
- public function initView($path = null, $prefix = null, array $options = array())
- {
- if( null === $this->view )
- {
- throw new Engine_Exception('No view set in ViewRenderer');
- }
- // Reset some flags every time
- $options['noController'] = (isset($options['noController'])) ? $options['noController'] : false;
- $options['noRender'] = (isset($options['noRender'])) ? $options['noRender'] : false;
- $this->_scriptAction = null;
- $this->_responseSegment = null;
- // Set options first; may be used to determine other initializations
- $this->_setOptions($options);
- // Get base view path
- $path = APPLICATION_PATH.DS.'application'.DS.'modules';
-
- // Get class path
- $request = $this->getRequest();
- $module = $request->getModuleName();
- if (null === $module) {
- $module = $this->getFrontController()->getDispatcher()->getDefaultModule();
- }
- $classPath = APPLICATION_PATH.DS.'application'.DS.'modules'.DS.$module.DS.'View'.DS;
- // Get class prefix
- if( null === $prefix )
- {
- $prefix = ucfirst($module).'_View_';
- }
- // Determine if this path has already been registered
- $currentPaths = $this->view->getScriptPaths();
- $path = str_replace(array('/', '\\'), '/', $path);
- $pathExists = false;
- foreach ($currentPaths as $tmpPath) {
- $tmpPath = str_replace(array('/', '\\'), '/', $tmpPath);
- if (strstr($tmpPath, $path)) {
- $pathExists = true;
- break;
- }
- }
- if (!$pathExists) {
- $this->view->addScriptPath($path);
- }
- $this->view->addHelperPath($classPath . 'Helper', $classPrefix . 'Helper');
- $this->view->addFilterPath($classPath . 'Filter', $classPrefix . 'Filter');
- // Register view with action controller (unless already registered)
- if ((null !== $this->_actionController) && (null === $this->_actionController->view)) {
- $this->_actionController->view = $this->view;
- $this->_actionController->viewSuffix = $this->_viewSuffix;
- }
- }
-
- public function postDispatch()
- {
- if( $this->_shouldRender() )
- {
- $this->render();
- }
- }
- // Options
- public function setView(Zend_View_Interface $view)
- {
- $this->view = $view;
- return $this;
- }
-
- public function setRender($action = null, $name = null, $noController = null)
- {
- if (null !== $action) {
- $this->setScriptAction($action);
- }
- if (null !== $name) {
- $this->setResponseSegment($name);
- }
- if (null !== $noController) {
- $this->setNoController($noController);
- }
- return $this;
- }
- public function setScriptAction($name)
- {
- $this->_scriptAction = (string) $name;
- return $this;
- }
- public function setResponseSegment($name)
- {
- if (null === $name) {
- $this->_responseSegment = null;
- } else {
- $this->_responseSegment = (string) $name;
- }
- return $this;
- }
- public function setNoController($flag = true)
- {
- $this->_noController = ($flag) ? true : false;
- return $this;
- }
- public function getViewScript($action = null, array $vars = array())
- {
- $request = $this->getRequest();
- if ((null === $action) && (!isset($vars['action']))) {
- $action = $this->getScriptAction();
- if (null === $action) {
- $action = $request->getActionName();
- }
- $vars['action'] = $action;
- } elseif (null !== $action) {
- $vars['action'] = $action;
- }
- $script =
- $inflector = $this->getInflector();
- if ($this->getNoController() || $this->getNeverController()) {
- $this->_setInflectorTarget($this->getViewScriptPathNoControllerSpec());
- } else {
- $this->_setInflectorTarget($this->getViewScriptPathSpec());
- }
- return $this->_translateSpec($vars);
- }
- public function getScriptAction()
- {
- return $this->_scriptAction;
- }
- // Rendering
- public function render($action = null, $name = null, $noController = null)
- {
- $this->setRender($action, $name, $noController);
- $path = $this->getViewScript();
- $this->renderScript($path, $name);
- }
-
- // Utility
-
- protected function _setOptions(array $options)
- {
- foreach ($options as $key => $value)
- {
- switch ($key) {
- case 'neverRender':
- case 'neverController':
- case 'noController':
- case 'noRender':
- $property = '_' . $key;
- $this->{$property} = ($value) ? true : false;
- break;
- case 'responseSegment':
- case 'scriptAction':
- case 'viewBasePathSpec':
- case 'viewScriptPathSpec':
- //case 'viewScriptPathNoControllerSpec':
- case 'viewSuffix':
- $property = '_' . $key;
- $this->{$property} = (string) $value;
- break;
- default:
- break;
- }
- }
- return $this;
- }
-
- protected function _shouldRender()
- {
- return (!$this->getFrontController()->getParam('noViewRenderer')
- && !$this->_neverRender
- && !$this->_noRender
- && (null !== $this->_actionController)
- && $this->getRequest()->isDispatched()
- && !$this->getResponse()->isRedirect()
- );
- }
- *
- */
- }