Verzeichnisstruktur phpBB-3.1.0


Veröffentlicht
27.10.2014

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

FragmentListener.php

Zuletzt modifiziert: 09.10.2024, 12:58 - Dateigröße: 3.32 KiB


 001  <?php
 002   
 003  /*
 004   * This file is part of the Symfony package.
 005   *
 006   * (c) Fabien Potencier <fabien@symfony.com>
 007   *
 008   * For the full copyright and license information, please view the LICENSE
 009   * file that was distributed with this source code.
 010   */
 011   
 012  namespace Symfony\Component\HttpKernel\EventListener;
 013   
 014  use Symfony\Component\HttpFoundation\Request;
 015  use Symfony\Component\HttpKernel\Event\GetResponseEvent;
 016  use Symfony\Component\HttpKernel\KernelEvents;
 017  use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
 018  use Symfony\Component\HttpKernel\UriSigner;
 019  use Symfony\Component\HttpKernel\HttpKernelInterface;
 020  use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 021   
 022  /**
 023   * Handles content fragments represented by special URIs.
 024   *
 025   * All URL paths starting with /_fragment are handled as
 026   * content fragments by this listener.
 027   *
 028   * If throws an AccessDeniedHttpException exception if the request
 029   * is not signed or if it is not an internal sub-request.
 030   *
 031   * @author Fabien Potencier <fabien@symfony.com>
 032   */
 033  class FragmentListener implements EventSubscriberInterface
 034  {
 035      private $signer;
 036      private $fragmentPath;
 037   
 038      /**
 039       * Constructor.
 040       *
 041       * @param UriSigner $signer       A UriSigner instance
 042       * @param string    $fragmentPath The path that triggers this listener
 043       */
 044      public function __construct(UriSigner $signer, $fragmentPath = '/_fragment')
 045      {
 046          $this->signer = $signer;
 047          $this->fragmentPath = $fragmentPath;
 048      }
 049   
 050      /**
 051       * Fixes request attributes when the path is '/_fragment'.
 052       *
 053       * @param GetResponseEvent $event A GetResponseEvent instance
 054       *
 055       * @throws AccessDeniedHttpException if the request does not come from a trusted IP.
 056       */
 057      public function onKernelRequest(GetResponseEvent $event)
 058      {
 059          $request = $event->getRequest();
 060   
 061          if ($this->fragmentPath !== rawurldecode($request->getPathInfo())) {
 062              return;
 063          }
 064   
 065          if (HttpKernelInterface::MASTER_REQUEST === $event->getRequestType()) {
 066              $this->validateRequest($request);
 067          }
 068   
 069          parse_str($request->query->get('_path', ''), $attributes);
 070          $request->attributes->add($attributes);
 071          $request->attributes->set('_route_params', array_replace($request->attributes->get('_route_params', array()), $attributes));
 072          $request->query->remove('_path');
 073      }
 074   
 075      protected function validateRequest(Request $request)
 076      {
 077          // is the Request safe?
 078          if (!$request->isMethodSafe()) {
 079              throw new AccessDeniedHttpException();
 080          }
 081   
 082          // is the Request signed?
 083          // we cannot use $request->getUri() here as we want to work with the original URI (no query string reordering)
 084          if ($this->signer->check($request->getSchemeAndHttpHost().$request->getBaseUrl().$request->getPathInfo().(null !== ($qs = $request->server->get('QUERY_STRING')) ? '?'.$qs : ''))) {
 085              return;
 086          }
 087   
 088          throw new AccessDeniedHttpException();
 089      }
 090   
 091      /**
 092       * @deprecated Deprecated since 2.3.19, to be removed in 3.0.
 093       *
 094       * @return string[]
 095       */
 096      protected function getLocalIpAddresses()
 097      {
 098          return array('127.0.0.1', 'fe80::1', '::1');
 099      }
 100   
 101      public static function getSubscribedEvents()
 102      {
 103          return array(
 104              KernelEvents::REQUEST => array(array('onKernelRequest', 48)),
 105          );
 106      }
 107  }
 108