mirror of
https://github.com/torrentpier/torrentpier-lts.git
synced 2025-03-01 15:21:02 +03:00
152 lines
6.2 KiB
PHP
152 lines
6.2 KiB
PHP
|
<?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\Mvc\View\Console;
|
||
|
|
||
|
use ArrayAccess;
|
||
|
use Zend\Mvc\MvcEvent;
|
||
|
use Zend\Mvc\View\Http\ViewManager as BaseViewManager;
|
||
|
|
||
|
/**
|
||
|
* Prepares the view layer for console applications
|
||
|
*/
|
||
|
class ViewManager extends BaseViewManager
|
||
|
{
|
||
|
/**
|
||
|
* Prepares the view layer
|
||
|
*
|
||
|
* Overriding, as several operations are omitted in the console view
|
||
|
* algorithms, as well as to ensure we pick up the Console variants
|
||
|
* of several listeners and strategies.
|
||
|
*
|
||
|
* @param $event
|
||
|
* @return void
|
||
|
*/
|
||
|
public function onBootstrap($event)
|
||
|
{
|
||
|
$application = $event->getApplication();
|
||
|
$services = $application->getServiceManager();
|
||
|
$config = $services->get('Config');
|
||
|
$events = $application->getEventManager();
|
||
|
$sharedEvents = $events->getSharedManager();
|
||
|
|
||
|
$this->config = isset($config['view_manager']) && (is_array($config['view_manager']) || $config['view_manager'] instanceof ArrayAccess)
|
||
|
? $config['view_manager']
|
||
|
: array();
|
||
|
$this->services = $services;
|
||
|
$this->event = $event;
|
||
|
|
||
|
$routeNotFoundStrategy = $this->getRouteNotFoundStrategy();
|
||
|
$exceptionStrategy = $this->getExceptionStrategy();
|
||
|
$mvcRenderingStrategy = $this->getMvcRenderingStrategy();
|
||
|
$createViewModelListener = new CreateViewModelListener();
|
||
|
$injectViewModelListener = new InjectViewModelListener();
|
||
|
$injectParamsListener = new InjectNamedConsoleParamsListener();
|
||
|
|
||
|
$this->registerMvcRenderingStrategies($events);
|
||
|
$this->registerViewStrategies();
|
||
|
|
||
|
$events->attach($routeNotFoundStrategy);
|
||
|
$events->attach($exceptionStrategy);
|
||
|
$events->attach(MvcEvent::EVENT_DISPATCH_ERROR, array($injectViewModelListener, 'injectViewModel'), -100);
|
||
|
$events->attach(MvcEvent::EVENT_RENDER_ERROR, array($injectViewModelListener, 'injectViewModel'), -100);
|
||
|
$events->attach($mvcRenderingStrategy);
|
||
|
|
||
|
$sharedEvents->attach('Zend\Stdlib\DispatchableInterface', MvcEvent::EVENT_DISPATCH, array($injectParamsListener, 'injectNamedParams'), 1000);
|
||
|
$sharedEvents->attach('Zend\Stdlib\DispatchableInterface', MvcEvent::EVENT_DISPATCH, array($createViewModelListener, 'createViewModelFromArray'), -80);
|
||
|
$sharedEvents->attach('Zend\Stdlib\DispatchableInterface', MvcEvent::EVENT_DISPATCH, array($createViewModelListener, 'createViewModelFromString'), -80);
|
||
|
$sharedEvents->attach('Zend\Stdlib\DispatchableInterface', MvcEvent::EVENT_DISPATCH, array($createViewModelListener, 'createViewModelFromNull'), -80);
|
||
|
$sharedEvents->attach('Zend\Stdlib\DispatchableInterface', MvcEvent::EVENT_DISPATCH, array($injectViewModelListener, 'injectViewModel'), -100);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Instantiates and configures the default MVC rendering strategy
|
||
|
*
|
||
|
* Overriding to ensure we pick up the MVC rendering strategy for console,
|
||
|
* as well as to ensure that the appropriate aliases are set.
|
||
|
*
|
||
|
* @return DefaultRenderingStrategy
|
||
|
*/
|
||
|
public function getMvcRenderingStrategy()
|
||
|
{
|
||
|
if ($this->mvcRenderingStrategy) {
|
||
|
return $this->mvcRenderingStrategy;
|
||
|
}
|
||
|
|
||
|
$this->mvcRenderingStrategy = new DefaultRenderingStrategy();
|
||
|
|
||
|
$this->services->setService('DefaultRenderingStrategy', $this->mvcRenderingStrategy);
|
||
|
$this->services->setAlias('Zend\Mvc\View\DefaultRenderingStrategy', 'DefaultRenderingStrategy');
|
||
|
$this->services->setAlias('Zend\Mvc\View\Console\DefaultRenderingStrategy', 'DefaultRenderingStrategy');
|
||
|
|
||
|
return $this->mvcRenderingStrategy;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Instantiates and configures the exception strategy
|
||
|
*
|
||
|
* Overriding to ensure we pick up the exception strategy for console, as
|
||
|
* well as to ensure that the appropriate aliases are set.
|
||
|
*
|
||
|
* @return ExceptionStrategy
|
||
|
*/
|
||
|
public function getExceptionStrategy()
|
||
|
{
|
||
|
if ($this->exceptionStrategy) {
|
||
|
return $this->exceptionStrategy;
|
||
|
}
|
||
|
|
||
|
$this->exceptionStrategy = new ExceptionStrategy();
|
||
|
|
||
|
if (isset($this->config['display_exceptions'])) {
|
||
|
$this->exceptionStrategy->setDisplayExceptions($this->config['display_exceptions']);
|
||
|
}
|
||
|
if (isset($this->config['exception_message'])) {
|
||
|
$this->exceptionStrategy->setMessage($this->config['exception_message']);
|
||
|
}
|
||
|
|
||
|
$this->services->setService('ExceptionStrategy', $this->exceptionStrategy);
|
||
|
$this->services->setAlias('Zend\Mvc\View\ExceptionStrategy', 'ExceptionStrategy');
|
||
|
$this->services->setAlias('Zend\Mvc\View\Console\ExceptionStrategy', 'ExceptionStrategy');
|
||
|
|
||
|
return $this->exceptionStrategy;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Instantiates and configures the "route not found", or 404, strategy
|
||
|
*
|
||
|
* Overriding to ensure we pick up the route not found strategy for console,
|
||
|
* as well as to ensure that the appropriate aliases are set.
|
||
|
*
|
||
|
* @return RouteNotFoundStrategy
|
||
|
*/
|
||
|
public function getRouteNotFoundStrategy()
|
||
|
{
|
||
|
if ($this->routeNotFoundStrategy) {
|
||
|
return $this->routeNotFoundStrategy;
|
||
|
}
|
||
|
|
||
|
$this->routeNotFoundStrategy = new RouteNotFoundStrategy();
|
||
|
|
||
|
$displayNotFoundReason = true;
|
||
|
|
||
|
if (array_key_exists('display_not_found_reason', $this->config)) {
|
||
|
$displayNotFoundReason = $this->config['display_not_found_reason'];
|
||
|
}
|
||
|
$this->routeNotFoundStrategy->setDisplayNotFoundReason($displayNotFoundReason);
|
||
|
|
||
|
$this->services->setService('RouteNotFoundStrategy', $this->routeNotFoundStrategy);
|
||
|
$this->services->setAlias('Zend\Mvc\View\RouteNotFoundStrategy', 'RouteNotFoundStrategy');
|
||
|
$this->services->setAlias('Zend\Mvc\View\Console\RouteNotFoundStrategy', 'RouteNotFoundStrategy');
|
||
|
$this->services->setAlias('404Strategy', 'RouteNotFoundStrategy');
|
||
|
|
||
|
return $this->routeNotFoundStrategy;
|
||
|
}
|
||
|
}
|