. */ namespace SP\Modules\Web\Controllers; use DI\Container; use DI\DependencyException; use DI\NotFoundException; use Klein\Klein; use SP\Core\Exceptions\FileNotFoundException; use SP\Core\Exceptions\SPException; use SP\Modules\Web\Controllers\Helpers\LayoutHelper; use SP\Mvc\View\Template; /** * Class ErrorController * * @package SP\Modules\Web\Controllers */ final class ErrorController { /** * @var Template */ protected $view; /** * @var Klein */ protected $router; /** * @var LayoutHelper */ protected $layoutHelper; /** * ErrorController constructor. * * @param Container $container * @param string $actionName * * @throws DependencyException * @throws NotFoundException */ public function __construct(Container $container, $actionName) { $this->router = $container->get(Klein::class); $this->view = $container->get(Template::class); $this->view->setBase('error'); $this->layoutHelper = $container->get(LayoutHelper::class); } /** * indexAction */ public function indexAction() { $this->layoutHelper->getPublicLayout('error'); $this->view(); } /** * Mostrar los datos de la plantilla */ protected function view() { try { echo $this->view->render(); } catch (FileNotFoundException $e) { processException($e); echo __($e->getMessage()); } die(); } /** * databaseErrorAction */ public function maintenanceErrorAction() { $this->layoutHelper->getPublicLayout('error-maintenance'); $this->view->append('errors', [ 'type' => SPException::WARNING, 'description' => __('Application on maintenance'), 'hint' => __('It will be running shortly') ]); $this->view(); } /** * databaseErrorAction */ public function databaseErrorAction() { $this->layoutHelper->getPublicLayout('error-database'); $this->view->append('errors', [ 'type' => SPException::CRITICAL, 'description' => __('Error while checking the database'), 'hint' => __('Please contact to the administrator') ]); $this->view(); } /** * databaseErrorAction */ public function databaseConnectionAction() { $this->layoutHelper->getPublicLayout('error-database'); $this->view->append('errors', [ 'type' => SPException::CRITICAL, 'description' => __('Unable to connect to DB'), 'hint' => __('Please contact to the administrator') ]); $this->view(); } }