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