Verzeichnisstruktur phpBB-3.2.0
- Veröffentlicht
- 06.01.2017
So funktioniert es
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
kernel_exception_subscriber.php
001 <?php
002 /**
003 *
004 * This file is part of the phpBB Forum Software package.
005 *
006 * @copyright (c) phpBB Limited <https://www.phpbb.com>
007 * @license GNU General Public License, version 2 (GPL-2.0)
008 *
009 * For full copyright and license information, please see
010 * the docs/CREDITS.txt file.
011 *
012 */
013
014 namespace phpbb\install\event;
015
016 use phpbb\exception\exception_interface;
017 use phpbb\install\controller\helper;
018 use phpbb\language\language;
019 use phpbb\template\template;
020 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
021 use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
022 use Symfony\Component\HttpKernel\KernelEvents;
023 use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
024 use Symfony\Component\HttpFoundation\JsonResponse;
025
026 /**
027 * Exception handler for the installer
028 */
029 class kernel_exception_subscriber implements EventSubscriberInterface
030 {
031 /**
032 * @var helper
033 */
034 protected $controller_helper;
035
036 /**
037 * @var language
038 */
039 protected $language;
040
041 /**
042 * @var template
043 */
044 protected $template;
045
046 /**
047 * Constructor
048 *
049 * @param helper $controller_helper
050 * @param language $language
051 * @param template $template
052 */
053 public function __construct(helper $controller_helper, language $language, template $template)
054 {
055 $this->controller_helper = $controller_helper;
056 $this->language = $language;
057 $this->template = $template;
058 }
059
060 /**
061 * This listener is run when the KernelEvents::EXCEPTION event is triggered
062 *
063 * @param GetResponseForExceptionEvent $event
064 */
065 public function on_kernel_exception(GetResponseForExceptionEvent $event)
066 {
067 $exception = $event->getException();
068 $message = $exception->getMessage();
069
070 if ($exception instanceof exception_interface)
071 {
072 $message = $this->language->lang_array($message, $exception->get_parameters());
073 }
074
075 if (!$event->getRequest()->isXmlHttpRequest())
076 {
077 $this->template->assign_vars(array(
078 'TITLE' => $this->language->lang('INFORMATION'),
079 'BODY' => $message,
080 ));
081
082 $response = $this->controller_helper->render(
083 'installer_main.html',
084 $this->language->lang('INFORMATION'),
085 false,
086 500
087 );
088 }
089 else
090 {
091 $data = array();
092
093 if (!empty($message))
094 {
095 $data['message'] = $message;
096 }
097
098 if (defined('DEBUG'))
099 {
100 $data['trace'] = $exception->getTrace();
101 }
102
103 $response = new JsonResponse($data, 500);
104 }
105
106 if ($exception instanceof HttpExceptionInterface)
107 {
108 $response->setStatusCode($exception->getStatusCode());
109 $response->headers->add($exception->getHeaders());
110 }
111
112 $event->setResponse($response);
113 }
114
115 /**
116 * Returns an array of events the object is subscribed to
117 *
118 * @return array Array of events the object is subscribed to
119 */
120 static public function getSubscribedEvents()
121 {
122 return array(
123 KernelEvents::EXCEPTION => 'on_kernel_exception',
124 );
125 }
126 }
127