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.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

kernel_exception_subscriber.php

Zuletzt modifiziert: 09.10.2024, 12:54 - Dateigröße: 2.78 KiB


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