From 93b37b24c2d546a2bc80830508d64338a24f9afa Mon Sep 17 00:00:00 2001 From: Mate Bartus Date: Wed, 4 Nov 2015 14:00:59 +0100 Subject: [ticket/14269] Use http_exceptions in the installer instead of die() PHPBB3-14269 --- .../install/event/kernel_exception_subscriber.php | 125 +++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 phpBB/phpbb/install/event/kernel_exception_subscriber.php (limited to 'phpBB/phpbb/install/event/kernel_exception_subscriber.php') diff --git a/phpBB/phpbb/install/event/kernel_exception_subscriber.php b/phpBB/phpbb/install/event/kernel_exception_subscriber.php new file mode 100644 index 0000000000..2e6f9ca74d --- /dev/null +++ b/phpBB/phpbb/install/event/kernel_exception_subscriber.php @@ -0,0 +1,125 @@ + + * @license GNU General Public License, version 2 (GPL-2.0) + * + * For full copyright and license information, please see + * the docs/CREDITS.txt file. + * + */ + +namespace phpbb\install\event; + +use phpbb\exception\exception_interface; +use phpbb\install\controller\helper; +use phpbb\language\language; +use phpbb\template\template; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; +use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; +use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; + +/** + * Exception handler for the installer + */ +class kernel_exception_subscriber implements EventSubscriberInterface +{ + /** + * @var helper + */ + protected $controller_helper; + + /** + * @var language + */ + protected $language; + + /** + * @var template + */ + protected $template; + + /** + * Constructor + * + * @param helper $controller_helper + * @param language $language + * @param template $template + */ + public function __construct(helper $controller_helper, language $language, template $template) + { + $this->controller_helper = $controller_helper; + $this->language = $language; + $this->template = $template; + } + + /** + * This listener is run when the KernelEvents::EXCEPTION event is triggered + * + * @param GetResponseForExceptionEvent $event + */ + public function on_kernel_exception(GetResponseForExceptionEvent $event) + { + $exception = $event->getException(); + $message = $exception->getMessage(); + + if ($exception instanceof exception_interface) + { + $message = $this->language->lang_array($message, $exception->get_parameters()); + } + + if (!$event->getRequest()->isXmlHttpRequest()) + { + $this->template->assign_vars(array( + 'TITLE' => $this->language->lang('INFORMATION'), + 'BODY' => $message, + )); + + $response = $this->controller_helper->render( + 'installer_main.html', + $this->language->lang('INFORMATION'), + false, + 500 + ); + } + else + { + $data = array(); + + if (!empty($message)) + { + $data['message'] = $message; + } + + if (defined('DEBUG')) + { + $data['trace'] = $exception->getTrace(); + } + + $response = new JsonResponse($data, 500); + } + + if ($exception instanceof HttpExceptionInterface) + { + $response->setStatusCode($exception->getStatusCode()); + $response->headers->add($exception->getHeaders()); + } + + $event->setResponse($response); + } + + /** + * Returns an array of the events the object is subscribed to + * + * @return array Array of the events the object is subscribed to + */ + static public function getSubscribedEvents() + { + return array( + KernelEvents::EXCEPTION => 'on_kernel_exception', + ); + } +} -- cgit v1.2.1 From 02a9264780f3896cf88b9d793dbf8831aa54e029 Mon Sep 17 00:00:00 2001 From: Mate Bartus Date: Thu, 3 Dec 2015 20:31:49 +0100 Subject: [ticket/14269] Fix comments and language var names PHPBB3-14269 --- phpBB/phpbb/install/event/kernel_exception_subscriber.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'phpBB/phpbb/install/event/kernel_exception_subscriber.php') diff --git a/phpBB/phpbb/install/event/kernel_exception_subscriber.php b/phpBB/phpbb/install/event/kernel_exception_subscriber.php index 2e6f9ca74d..c2960cb13c 100644 --- a/phpBB/phpbb/install/event/kernel_exception_subscriber.php +++ b/phpBB/phpbb/install/event/kernel_exception_subscriber.php @@ -112,9 +112,9 @@ class kernel_exception_subscriber implements EventSubscriberInterface } /** - * Returns an array of the events the object is subscribed to + * Returns an array of events the object is subscribed to * - * @return array Array of the events the object is subscribed to + * @return array Array of events the object is subscribed to */ static public function getSubscribedEvents() { -- cgit v1.2.1 From b1a136e7bd8cc06ee320655a4ee7cf72dcd7c611 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Bartus?= Date: Mon, 29 Feb 2016 23:23:31 +0100 Subject: [ticket/14487] Add missing use statement PHPBB3-14487 --- phpBB/phpbb/install/event/kernel_exception_subscriber.php | 1 + 1 file changed, 1 insertion(+) (limited to 'phpBB/phpbb/install/event/kernel_exception_subscriber.php') diff --git a/phpBB/phpbb/install/event/kernel_exception_subscriber.php b/phpBB/phpbb/install/event/kernel_exception_subscriber.php index c2960cb13c..60b7d9a400 100644 --- a/phpBB/phpbb/install/event/kernel_exception_subscriber.php +++ b/phpBB/phpbb/install/event/kernel_exception_subscriber.php @@ -21,6 +21,7 @@ use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; +use Symfony\Component\HttpFoundation\JsonResponse; /** * Exception handler for the installer -- cgit v1.2.1