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

RequestDataCollector.php

Zuletzt modifiziert: 09.10.2024, 12:58 - Dateigröße: 10.25 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\DataCollector;
 013   
 014  use Symfony\Component\HttpFoundation\ParameterBag;
 015  use Symfony\Component\HttpFoundation\HeaderBag;
 016  use Symfony\Component\HttpFoundation\Request;
 017  use Symfony\Component\HttpFoundation\Response;
 018  use Symfony\Component\HttpFoundation\ResponseHeaderBag;
 019  use Symfony\Component\HttpKernel\KernelEvents;
 020  use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
 021  use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 022   
 023  /**
 024   * RequestDataCollector.
 025   *
 026   * @author Fabien Potencier <fabien@symfony.com>
 027   */
 028  class RequestDataCollector extends DataCollector implements EventSubscriberInterface
 029  {
 030      protected $controllers;
 031   
 032      public function __construct()
 033      {
 034          $this->controllers = new \SplObjectStorage();
 035      }
 036   
 037      /**
 038       * {@inheritdoc}
 039       */
 040      public function collect(Request $request, Response $response, \Exception $exception = null)
 041      {
 042          $responseHeaders = $response->headers->all();
 043          $cookies = array();
 044          foreach ($response->headers->getCookies() as $cookie) {
 045              $cookies[] = $this->getCookieHeader($cookie->getName(), $cookie->getValue(), $cookie->getExpiresTime(), $cookie->getPath(), $cookie->getDomain(), $cookie->isSecure(), $cookie->isHttpOnly());
 046          }
 047          if (count($cookies) > 0) {
 048              $responseHeaders['Set-Cookie'] = $cookies;
 049          }
 050   
 051          $attributes = array();
 052          foreach ($request->attributes->all() as $key => $value) {
 053              if ('_route' === $key && is_object($value)) {
 054                  $attributes['_route'] = $this->varToString($value->getPath());
 055              } elseif ('_route_params' === $key) {
 056                  foreach ($value as $key => $v) {
 057                      $attributes['_route_params'][$key] = $this->varToString($v);
 058                  }
 059              } else {
 060                  $attributes[$key] = $this->varToString($value);
 061              }
 062          }
 063   
 064          $content = null;
 065          try {
 066              $content = $request->getContent();
 067          } catch (\LogicException $e) {
 068              // the user already got the request content as a resource
 069              $content = false;
 070          }
 071   
 072          $sessionMetadata = array();
 073          $sessionAttributes = array();
 074          $flashes = array();
 075          if ($request->hasSession()) {
 076              $session = $request->getSession();
 077              if ($session->isStarted()) {
 078                  $sessionMetadata['Created'] = date(DATE_RFC822, $session->getMetadataBag()->getCreated());
 079                  $sessionMetadata['Last used'] = date(DATE_RFC822, $session->getMetadataBag()->getLastUsed());
 080                  $sessionMetadata['Lifetime'] = $session->getMetadataBag()->getLifetime();
 081                  $sessionAttributes = $session->all();
 082                  $flashes = $session->getFlashBag()->peekAll();
 083              }
 084          }
 085   
 086          $statusCode = $response->getStatusCode();
 087   
 088          $this->data = array(
 089              'format'             => $request->getRequestFormat(),
 090              'content'            => $content,
 091              'content_type'       => $response->headers->get('Content-Type') ? $response->headers->get('Content-Type') : 'text/html',
 092              'status_text'        => isset(Response::$statusTexts[$statusCode]) ? Response::$statusTexts[$statusCode] : '',
 093              'status_code'        => $statusCode,
 094              'request_query'      => $request->query->all(),
 095              'request_request'    => $request->request->all(),
 096              'request_headers'    => $request->headers->all(),
 097              'request_server'     => $request->server->all(),
 098              'request_cookies'    => $request->cookies->all(),
 099              'request_attributes' => $attributes,
 100              'response_headers'   => $responseHeaders,
 101              'session_metadata'   => $sessionMetadata,
 102              'session_attributes' => $sessionAttributes,
 103              'flashes'            => $flashes,
 104              'path_info'          => $request->getPathInfo(),
 105              'controller'         => 'n/a',
 106              'locale'             => $request->getLocale(),
 107          );
 108   
 109          if (isset($this->data['request_headers']['php-auth-pw'])) {
 110              $this->data['request_headers']['php-auth-pw'] = '******';
 111          }
 112   
 113          if (isset($this->data['request_server']['PHP_AUTH_PW'])) {
 114              $this->data['request_server']['PHP_AUTH_PW'] = '******';
 115          }
 116   
 117          if (isset($this->controllers[$request])) {
 118              $controller = $this->controllers[$request];
 119              if (is_array($controller)) {
 120                  try {
 121                      $r = new \ReflectionMethod($controller[0], $controller[1]);
 122                      $this->data['controller'] = array(
 123                          'class'  => is_object($controller[0]) ? get_class($controller[0]) : $controller[0],
 124                          'method' => $controller[1],
 125                          'file'   => $r->getFilename(),
 126                          'line'   => $r->getStartLine(),
 127                      );
 128                  } catch (\ReflectionException $re) {
 129                      if (is_callable($controller)) {
 130                          // using __call or  __callStatic
 131                          $this->data['controller'] = array(
 132                              'class'  => is_object($controller[0]) ? get_class($controller[0]) : $controller[0],
 133                              'method' => $controller[1],
 134                              'file'   => 'n/a',
 135                              'line'   => 'n/a',
 136                          );
 137                      }
 138                  }
 139              } elseif ($controller instanceof \Closure) {
 140                  $r = new \ReflectionFunction($controller);
 141                  $this->data['controller'] = array(
 142                      'class'  => $r->getName(),
 143                      'method' => null,
 144                      'file'   => $r->getFilename(),
 145                      'line'   => $r->getStartLine(),
 146                  );
 147              } else {
 148                  $this->data['controller'] = (string) $controller ?: 'n/a';
 149              }
 150              unset($this->controllers[$request]);
 151          }
 152      }
 153   
 154      public function getPathInfo()
 155      {
 156          return $this->data['path_info'];
 157      }
 158   
 159      public function getRequestRequest()
 160      {
 161          return new ParameterBag($this->data['request_request']);
 162      }
 163   
 164      public function getRequestQuery()
 165      {
 166          return new ParameterBag($this->data['request_query']);
 167      }
 168   
 169      public function getRequestHeaders()
 170      {
 171          return new HeaderBag($this->data['request_headers']);
 172      }
 173   
 174      public function getRequestServer()
 175      {
 176          return new ParameterBag($this->data['request_server']);
 177      }
 178   
 179      public function getRequestCookies()
 180      {
 181          return new ParameterBag($this->data['request_cookies']);
 182      }
 183   
 184      public function getRequestAttributes()
 185      {
 186          return new ParameterBag($this->data['request_attributes']);
 187      }
 188   
 189      public function getResponseHeaders()
 190      {
 191          return new ResponseHeaderBag($this->data['response_headers']);
 192      }
 193   
 194      public function getSessionMetadata()
 195      {
 196          return $this->data['session_metadata'];
 197      }
 198   
 199      public function getSessionAttributes()
 200      {
 201          return $this->data['session_attributes'];
 202      }
 203   
 204      public function getFlashes()
 205      {
 206          return $this->data['flashes'];
 207      }
 208   
 209      public function getContent()
 210      {
 211          return $this->data['content'];
 212      }
 213   
 214      public function getContentType()
 215      {
 216          return $this->data['content_type'];
 217      }
 218   
 219      public function getStatusText()
 220      {
 221          return $this->data['status_text'];
 222      }
 223   
 224      public function getStatusCode()
 225      {
 226          return $this->data['status_code'];
 227      }
 228   
 229      public function getFormat()
 230      {
 231          return $this->data['format'];
 232      }
 233   
 234      public function getLocale()
 235      {
 236          return $this->data['locale'];
 237      }
 238   
 239      /**
 240       * Gets the route name.
 241       *
 242       * The _route request attributes is automatically set by the Router Matcher.
 243       *
 244       * @return string The route
 245       */
 246      public function getRoute()
 247      {
 248          return isset($this->data['request_attributes']['_route']) ? $this->data['request_attributes']['_route'] : '';
 249      }
 250   
 251      /**
 252       * Gets the route parameters.
 253       *
 254       * The _route_params request attributes is automatically set by the RouterListener.
 255       *
 256       * @return array The parameters
 257       */
 258      public function getRouteParams()
 259      {
 260          return isset($this->data['request_attributes']['_route_params']) ? $this->data['request_attributes']['_route_params'] : array();
 261      }
 262   
 263      /**
 264       * Gets the controller.
 265       *
 266       * @return string The controller as a string
 267       */
 268      public function getController()
 269      {
 270          return $this->data['controller'];
 271      }
 272   
 273      public function onKernelController(FilterControllerEvent $event)
 274      {
 275          $this->controllers[$event->getRequest()] = $event->getController();
 276      }
 277   
 278      public static function getSubscribedEvents()
 279      {
 280          return array(KernelEvents::CONTROLLER => 'onKernelController');
 281      }
 282   
 283      /**
 284       * {@inheritdoc}
 285       */
 286      public function getName()
 287      {
 288          return 'request';
 289      }
 290   
 291      private function getCookieHeader($name, $value, $expires, $path, $domain, $secure, $httponly)
 292      {
 293          $cookie = sprintf('%s=%s', $name, urlencode($value));
 294   
 295          if (0 !== $expires) {
 296              if (is_numeric($expires)) {
 297                  $expires = (int) $expires;
 298              } elseif ($expires instanceof \DateTime) {
 299                  $expires = $expires->getTimestamp();
 300              } else {
 301                  $tmp = strtotime($expires);
 302                  if (false === $tmp || -1 == $tmp) {
 303                      throw new \InvalidArgumentException(sprintf('The "expires" cookie parameter is not valid (%s).', $expires));
 304                  }
 305                  $expires = $tmp;
 306              }
 307   
 308              $cookie .= '; expires='.str_replace('+0000', '', \DateTime::createFromFormat('U', $expires, new \DateTimeZone('GMT'))->format('D, d-M-Y H:i:s T'));
 309          }
 310   
 311          if ($domain) {
 312              $cookie .= '; domain='.$domain;
 313          }
 314   
 315          $cookie .= '; path='.$path;
 316   
 317          if ($secure) {
 318              $cookie .= '; secure';
 319          }
 320   
 321          if ($httponly) {
 322              $cookie .= '; httponly';
 323          }
 324   
 325          return $cookie;
 326      }
 327  }
 328