web/preview.php line 46

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. /*
  4.  * This file is part of Contao.
  5.  *
  6.  * (c) Leo Feyer
  7.  *
  8.  * @license LGPL-3.0-or-later
  9.  */
  10. use Composer\Autoload\ClassLoader;
  11. use Contao\ManagerBundle\HttpKernel\ContaoKernel;
  12. use FOS\HttpCache\TagHeaderFormatter\TagHeaderFormatter;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpKernel\TerminableInterface;
  15. // Suppress error messages (see #1422)
  16. @ini_set('display_errors''0');
  17. // Disable the phar stream wrapper for security reasons (see #105)
  18. if (in_array('phar'stream_get_wrappers(), true)) {
  19.     stream_wrapper_unregister('phar');
  20. }
  21. // System maintenance mode comes first as it has to work even if the vendor directory does not exist
  22. if (file_exists(__DIR__.'/../var/maintenance.html')) {
  23.     $contents file_get_contents(__DIR__.'/../var/maintenance.html');
  24.     http_response_code(503);
  25.     header('Content-Type: text/html; charset=UTF-8');
  26.     header('Content-Length: '.strlen($contents));
  27.     header('Cache-Control: no-store');
  28.     die($contents);
  29. }
  30. /** @var ClassLoader $loader */
  31. $loader = require __DIR__.'/../vendor/autoload.php';
  32. $request Request::createFromGlobals();
  33. $request->attributes->set('_preview'true);
  34. $kernel ContaoKernel::fromRequest(dirname(__DIR__), $request);
  35. $response $kernel->handle($request);
  36. // Prevent preview URLs from being indexed
  37. $response->headers->set('X-Robots-Tag''noindex');
  38. // Force no-cache on all responses in the preview front controller
  39. $response->headers->set('Cache-Control''no-store');
  40. // Strip all tag headers from the response
  41. $response->headers->remove(TagHeaderFormatter::DEFAULT_HEADER_NAME);
  42. $response->send();
  43. if ($kernel instanceof TerminableInterface) {
  44.     $kernel->terminate($request$response);
  45. }