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

RequestDataCollector.php

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