[ Index ] |
PHP Cross Reference of phpBB-3.1.12-deutsch |
[Summary view] [Print] [Text view]
1 <?php 2 3 /* 4 * This file is part of the Symfony package. 5 * 6 * (c) Fabien Potencier <fabien@symfony.com> 7 * 8 * For the full copyright and license information, please view the LICENSE 9 * file that was distributed with this source code. 10 */ 11 12 namespace Symfony\Component\HttpKernel\DataCollector; 13 14 use Symfony\Component\HttpFoundation\ParameterBag; 15 use Symfony\Component\HttpFoundation\HeaderBag; 16 use Symfony\Component\HttpFoundation\Request; 17 use Symfony\Component\HttpFoundation\Response; 18 use Symfony\Component\HttpFoundation\ResponseHeaderBag; 19 use Symfony\Component\HttpKernel\KernelEvents; 20 use Symfony\Component\HttpKernel\Event\FilterControllerEvent; 21 use Symfony\Component\EventDispatcher\EventSubscriberInterface; 22 23 /** 24 * RequestDataCollector. 25 * 26 * @author Fabien Potencier <fabien@symfony.com> 27 */ 28 class RequestDataCollector extends DataCollector implements EventSubscriberInterface 29 { 30 protected $controllers; 31 32 public function __construct() 33 { 34 $this->controllers = new \SplObjectStorage(); 35 } 36 37 /** 38 * {@inheritdoc} 39 */ 40 public function collect(Request $request, Response $response, \Exception $exception = null) 41 { 42 $responseHeaders = $response->headers->all(); 43 $cookies = array(); 44 foreach ($response->headers->getCookies() as $cookie) { 45 $cookies[] = $this->getCookieHeader($cookie->getName(), $cookie->getValue(), $cookie->getExpiresTime(), $cookie->getPath(), $cookie->getDomain(), $cookie->isSecure(), $cookie->isHttpOnly()); 46 } 47 if (count($cookies) > 0) { 48 $responseHeaders['Set-Cookie'] = $cookies; 49 } 50 51 $attributes = array(); 52 foreach ($request->attributes->all() as $key => $value) { 53 if ('_route' === $key && is_object($value)) { 54 $attributes['_route'] = $this->varToString($value->getPath()); 55 } elseif ('_route_params' === $key) { 56 foreach ($value as $key => $v) { 57 $attributes['_route_params'][$key] = $this->varToString($v); 58 } 59 } else { 60 $attributes[$key] = $this->varToString($value); 61 } 62 } 63 64 $content = null; 65 try { 66 $content = $request->getContent(); 67 } catch (\LogicException $e) { 68 // the user already got the request content as a resource 69 $content = false; 70 } 71 72 $sessionMetadata = array(); 73 $sessionAttributes = array(); 74 $flashes = array(); 75 if ($request->hasSession()) { 76 $session = $request->getSession(); 77 if ($session->isStarted()) { 78 $sessionMetadata['Created'] = date(DATE_RFC822, $session->getMetadataBag()->getCreated()); 79 $sessionMetadata['Last used'] = date(DATE_RFC822, $session->getMetadataBag()->getLastUsed()); 80 $sessionMetadata['Lifetime'] = $session->getMetadataBag()->getLifetime(); 81 $sessionAttributes = $session->all(); 82 $flashes = $session->getFlashBag()->peekAll(); 83 } 84 } 85 86 $statusCode = $response->getStatusCode(); 87 88 $this->data = array( 89 'format' => $request->getRequestFormat(), 90 'content' => $content, 91 'content_type' => $response->headers->get('Content-Type', 'text/html'), 92 'status_text' => isset(Response::$statusTexts[$statusCode]) ? Response::$statusTexts[$statusCode] : '', 93 'status_code' => $statusCode, 94 'request_query' => $request->query->all(), 95 'request_request' => $request->request->all(), 96 'request_headers' => $request->headers->all(), 97 'request_server' => $request->server->all(), 98 'request_cookies' => $request->cookies->all(), 99 '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 $e) { 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 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Jan 11 00:25:41 2018 | Cross-referenced by PHPXref 0.7.1 |