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\event;
015
016 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
017 use Symfony\Component\HttpFoundation\JsonResponse;
018 use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
019 use Symfony\Component\HttpKernel\KernelEvents;
020 use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent;
021 use Symfony\Component\HttpFoundation\Response;
022
023 class kernel_exception_subscriber implements EventSubscriberInterface
024 {
025 /**
026 * Template object
027 *
028 * @var \phpbb\template\template
029 */
030 protected $template;
031
032 /**
033 * Language object
034 *
035 * @var \phpbb\language\language
036 */
037 protected $language;
038
039 /** @var \phpbb\request\type_cast_helper */
040 protected $type_caster;
041
042 /**
043 * Construct method
044 *
045 * @param \phpbb\template\template $template Template object
046 * @param \phpbb\language\language $language Language object
047 */
048 public function __construct(\phpbb\template\template $template, \phpbb\language\language $language)
049 {
050 $this->template = $template;
051 $this->language = $language;
052 $this->type_caster = new \phpbb\request\type_cast_helper();
053 }
054
055 /**
056 * This listener is run when the KernelEvents::EXCEPTION event is triggered
057 *
058 * @param GetResponseForExceptionEvent $event
059 * @return null
060 */
061 public function on_kernel_exception(GetResponseForExceptionEvent $event)
062 {
063 $exception = $event->getException();
064
065 $message = $exception->getMessage();
066 $this->type_caster->set_var($message, $message, 'string', true, false);
067
068 if ($exception instanceof \phpbb\exception\exception_interface)
069 {
070 $message = $this->language->lang_array($message, $exception->get_parameters());
071 }
072
073 // Show <strong> text in bold
074 $message = preg_replace('#<(/?strong)>#i', '<$1>', $message);
075
076 if (!$event->getRequest()->isXmlHttpRequest())
077 {
078 page_header($this->language->lang('INFORMATION'));
079
080 $this->template->assign_vars(array(
081 'MESSAGE_TITLE' => $this->language->lang('INFORMATION'),
082 'MESSAGE_TEXT' => $message,
083 ));
084
085 $this->template->set_filenames(array(
086 'body' => 'message_body.html',
087 ));
088
089 page_footer(true, false, false);
090
091 $response = new Response($this->template->assign_display('body'), 500);
092 }
093 else
094 {
095 $data = array();
096
097 if (!empty($message))
098 {
099 $data['message'] = $message;
100 }
101
102 if (defined('DEBUG'))
103 {
104 $data['trace'] = $exception->getTrace();
105 }
106
107 $response = new JsonResponse($data, 500);
108 }
109
110 if ($exception instanceof HttpExceptionInterface)
111 {
112 $response->setStatusCode($exception->getStatusCode());
113 $response->headers->add($exception->getHeaders());
114 }
115
116 $event->setResponse($response);
117 }
118
119 static public function getSubscribedEvents()
120 {
121 return array(
122 KernelEvents::EXCEPTION => 'on_kernel_exception',
123 );
124 }
125 }
126