[ Index ] |
PHP Cross Reference of phpBB-3.3.14-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * 4 * This file is part of the phpBB Forum Software package. 5 * 6 * @copyright (c) phpBB Limited <https://www.phpbb.com> 7 * @license GNU General Public License, version 2 (GPL-2.0) 8 * 9 * For full copyright and license information, please see 10 * the docs/CREDITS.txt file. 11 * 12 */ 13 14 namespace phpbb\event; 15 16 use Symfony\Component\EventDispatcher\EventSubscriberInterface; 17 use Symfony\Component\HttpFoundation\JsonResponse; 18 use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; 19 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; 20 use Symfony\Component\HttpKernel\KernelEvents; 21 use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; 22 use Symfony\Component\HttpFoundation\Response; 23 24 class kernel_exception_subscriber implements EventSubscriberInterface 25 { 26 /** 27 * Set to true to show full exception messages 28 * 29 * @var bool 30 */ 31 protected $debug; 32 33 /** 34 * Template object 35 * 36 * @var \phpbb\template\template 37 */ 38 protected $template; 39 40 /** 41 * Language object 42 * 43 * @var \phpbb\language\language 44 */ 45 protected $language; 46 47 /** 48 * User object 49 * 50 * @var \phpbb\user 51 */ 52 protected $user; 53 54 /** @var \phpbb\request\type_cast_helper */ 55 protected $type_caster; 56 57 /** 58 * Construct method 59 * 60 * @param \phpbb\template\template $template Template object 61 * @param \phpbb\language\language $language Language object 62 * @param \phpbb\user $user User object 63 * @param bool $debug Set to true to show full exception messages 64 */ 65 public function __construct(\phpbb\template\template $template, \phpbb\language\language $language, \phpbb\user $user, $debug = false) 66 { 67 $this->debug = $debug || defined('DEBUG'); 68 $this->template = $template; 69 $this->language = $language; 70 $this->user = $user; 71 $this->type_caster = new \phpbb\request\type_cast_helper(); 72 } 73 74 /** 75 * This listener is run when the KernelEvents::EXCEPTION event is triggered 76 * 77 * @param GetResponseForExceptionEvent $event 78 * @return null 79 */ 80 public function on_kernel_exception(GetResponseForExceptionEvent $event) 81 { 82 $exception = $event->getException(); 83 84 $message = $exception->getMessage(); 85 $this->type_caster->set_var($message, $message, 'string', true, false); 86 87 if ($exception instanceof \phpbb\exception\exception_interface) 88 { 89 $message = $this->language->lang_array($message, $exception->get_parameters()); 90 } 91 else if (!$this->debug && $exception instanceof NotFoundHttpException) 92 { 93 $message = $this->language->lang('PAGE_NOT_FOUND'); 94 } 95 96 // Do not update user session page if it does not exist 97 if ($exception instanceof NotFoundHttpException) 98 { 99 $this->user->update_session_page = false; 100 } 101 102 // Show <strong> text in bold 103 $message = preg_replace('#<(/?strong)>#i', '<$1>', $message); 104 105 if (!$event->getRequest()->isXmlHttpRequest()) 106 { 107 page_header($this->language->lang('INFORMATION')); 108 109 $this->template->assign_vars(array( 110 'MESSAGE_TITLE' => $this->language->lang('INFORMATION'), 111 'MESSAGE_TEXT' => $message, 112 )); 113 114 $this->template->set_filenames(array( 115 'body' => 'message_body.html', 116 )); 117 118 page_footer(true, false, false); 119 120 $response = new Response($this->template->assign_display('body'), 500); 121 } 122 else 123 { 124 $data = array(); 125 126 if (!empty($message)) 127 { 128 $data['message'] = $message; 129 } 130 131 if ($this->debug) 132 { 133 $data['trace'] = $exception->getTrace(); 134 } 135 136 $response = new JsonResponse($data, 500); 137 } 138 139 if ($exception instanceof HttpExceptionInterface) 140 { 141 $response->setStatusCode($exception->getStatusCode()); 142 $response->headers->add($exception->getHeaders()); 143 } 144 145 $event->setResponse($response); 146 } 147 148 static public function getSubscribedEvents() 149 { 150 return array( 151 KernelEvents::EXCEPTION => 'on_kernel_exception', 152 ); 153 } 154 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Mon Nov 25 19:05:08 2024 | Cross-referenced by PHPXref 0.7.1 |