| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179 |
- <?php
- namespace ThurData\Servers\KerioEmail\Core\App\Controllers\Instances;
- use \ThurData\Servers\KerioEmail\Core\App\Controllers\Interfaces\AdminArea;
- use \ThurData\Servers\KerioEmail\Core\App\Controllers\Interfaces\ClientArea;
- use \ThurData\Servers\KerioEmail\Core\App\Controllers\Interfaces\DefaultController;
- use ThurData\Servers\KerioEmail\Core\App\Controllers\ResponseResolver;
- use ThurData\Servers\KerioEmail\Core\App\Controllers\Router;
- use \ThurData\Servers\KerioEmail\Core\DependencyInjection;
- use ThurData\Servers\KerioEmail\Core\ModuleConstants;
- abstract class HttpController implements DefaultController
- {
- use \ThurData\Servers\KerioEmail\Core\Traits\Lang;
- use \ThurData\Servers\KerioEmail\Core\Traits\Smarty;
- use \ThurData\Servers\KerioEmail\Core\Traits\OutputBuffer;
- use \ThurData\Servers\KerioEmail\Core\Traits\IsAdmin;
- use \ThurData\Servers\KerioEmail\Core\UI\Traits\RequestObjectHandler;
- use \ThurData\Servers\KerioEmail\Core\Traits\ErrorCodesLibrary;
- use \ThurData\Servers\KerioEmail\Core\Traits\Params;
- use \ThurData\Servers\KerioEmail\Core\Traits\AppParams;
- const ADMIN = 'admin';
- const CLIENT = 'client';
- protected $templateName = 'main';
- protected $templateContext = 'default';
- protected $templateDir = null;
- protected $controllerResult = null;
- /**
- * @var Router|null
- *
- */
- protected $router = null;
- protected $responseResolver = null;
- public function __construct()
- {
- $this->loadSmarty();
- $this->isAdmin();
- $this->router = new Router();
- $this->responseResolver = new ResponseResolver();
- }
- public function execute($params = null)
- {
- $this->setParams($params);
- if (!$this->router->isControllerCallable() || !$this->isAdminContextValid())
- {
- return $this->controllerResult = $this->getPageNotFound();
- }
- else
- {
- $this->setAppParam('HttpControlerName', $this->router->getControllerClass());
- $this->setAppParam('HttpControlerMethod', $this->router->getControllerMethod());
- $this->controllerResult = $this->getControllerResponse();
- }
- return $this->resolveResponse();
- }
- public function resolveResponse()
- {
- return $this->responseResolver->setResponse($this->controllerResult)
- ->setTemplateName($this->getTemplateName())
- ->setTemplateDir($this->getTemplateDir())
- ->setPageController($this)
- ->resolve();
- }
- public function isAdminContextValid()
- {
- if ($this->isAdmin() && !($this instanceof AdminArea))
- {
- return false;
- }
- if (!$this->isAdmin() && !($this instanceof ClientArea))
- {
- return false;
- }
- return true;
- }
- public function getPageNotFound()
- {
- $notFound = new Http\PageNotFound();
- return $notFound->execute();
- }
- protected function getControllerResponse()
- {
- $this->loadLang();
- $this->lang->setContext(($this->getType() . ($this->isAdmin() ? 'AA' : 'CA')), lcfirst($this->getControllerClass(true)));
- $result = DependencyInjection::create(
- $this->router->getControllerClass(),
- $this->router->getControllerMethod()
- );
- return $result;
- }
- public function getTemplateName()
- {
- return $this->templateName;
- }
- public function getTemplateDir()
- {
- if ($this->templateDir === null)
- {
- $this->templateDir = ModuleConstants::getTemplateDir() . DIRECTORY_SEPARATOR .
- ($this->isAdmin() ? self::ADMIN : (self::CLIENT . DIRECTORY_SEPARATOR . $this->getTemplateContext()))
- . DIRECTORY_SEPARATOR . 'controlers';
- }
- return $this->templateDir;
- }
- public function getTemplateContext()
- {
- return $this->templateContext;
- }
- public function getControllerClass($raw = false)
- {
- if ($raw)
- {
- $namespaceParts = explode('\\', $this->getControllerClass());
- return end($namespaceParts);
- }
- return $this->router->getControllerClass();
- }
- public function getControllerMethod()
- {
- return $this->router->getControllerMethod();
- }
- /**
- * @param null $controllerResult
- */
- public function setControllerResult ($controllerResult)
- {
- $this->controllerResult = $controllerResult;
- }
- /**
- * @return null
- */
- public function getControllerResult ()
- {
- return $this->controllerResult;
- }
- /**
- * @return string
- */
- protected function getType()
- {
- return 'addon';
- }
- public function runExecuteProcess($params = null)
- {
- return $this->execute($params);
- }
- }
|