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