vendor/se7enxweb/legacy-bridge/bundle/Controller/LegacyKernelController.php line 87

Open in your IDE?
  1. <?php
  2. /**
  3. * @copyright Copyright (C) eZ Systems AS. All rights reserved.
  4. * @license For full copyright and license information view LICENSE file distributed with this source code.
  5. */
  6. namespace eZ\Bundle\EzPublishLegacyBundle\Controller;
  7. use eZ\Bundle\EzPublishLegacyBundle\LegacyResponse\LegacyResponseManager;
  8. use eZ\Publish\Core\MVC\Legacy\Kernel\URIHelper;
  9. use eZ\Publish\Core\MVC\Legacy\Templating\LegacyHelper;
  10. use Symfony\Component\HttpFoundation\RedirectResponse;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use eZ\Publish\Core\MVC\ConfigResolverInterface;
  13. use ezpKernelRedirect;
  14. use Symfony\Component\Routing\RouterInterface;
  15. /**
  16. * Controller embedding legacy kernel.
  17. */
  18. class LegacyKernelController
  19. {
  20. /**
  21. * @var \Closure
  22. */
  23. private $kernelClosure;
  24. /**
  25. * @var \eZ\Publish\Core\MVC\ConfigResolverInterface
  26. */
  27. private $configResolver;
  28. /**
  29. * Template declaration to wrap legacy responses in a Twig pagelayout (optional)
  30. * Either a template declaration string or null/false to use legacy pagelayout
  31. * Default is null.
  32. *
  33. * @var mixed
  34. */
  35. private $legacyLayout;
  36. /**
  37. * @var \eZ\Publish\Core\MVC\Legacy\Kernel\URIHelper
  38. */
  39. private $uriHelper;
  40. /**
  41. * @var \eZ\Bundle\EzPublishLegacyBundle\LegacyResponse\LegacyResponseManager
  42. */
  43. private $legacyResponseManager;
  44. /**
  45. * @var \eZ\Publish\Core\MVC\Legacy\Templating\LegacyHelper
  46. */
  47. private $legacyHelper;
  48. /**
  49. * @var \Symfony\Component\Routing\RouterInterface
  50. */
  51. private $router;
  52. public function __construct(
  53. \Closure $kernelClosure,
  54. ConfigResolverInterface $configResolver,
  55. URIHelper $uriHelper,
  56. LegacyResponseManager $legacyResponseManager,
  57. LegacyHelper $legacyHelper,
  58. RouterInterface $router
  59. ) {
  60. $this->kernelClosure = $kernelClosure;
  61. $this->legacyLayout = $configResolver->getParameter('module_default_layout', 'ezpublish_legacy');
  62. $this->configResolver = $configResolver;
  63. $this->uriHelper = $uriHelper;
  64. $this->legacyResponseManager = $legacyResponseManager;
  65. $this->legacyHelper = $legacyHelper;
  66. $this->router = $router;
  67. }
  68. /**
  69. * Base fallback action.
  70. * Will be basically used for every legacy module.
  71. *
  72. * @param \Symfony\Component\HttpFoundation\Request $request
  73. *
  74. * @return \eZ\Bundle\EzPublishLegacyBundle\LegacyResponse
  75. */
  76. public function indexAction(Request $request)
  77. {
  78. $kernelClosure = $this->kernelClosure;
  79. /** @var \eZ\Publish\Core\MVC\Legacy\Kernel $kernel */
  80. $kernel = $kernelClosure();
  81. $legacyMode = $this->configResolver->getParameter('legacy_mode');
  82. $kernel->setUseExceptions(false);
  83. // Fix up legacy URI with current request since we can be in a sub-request here.
  84. $this->uriHelper->updateLegacyURI($request);
  85. // If we have a layout for legacy AND we're not in legacy mode, we ask the legacy kernel not to generate layout.
  86. if (isset($this->legacyLayout) && !$legacyMode) {
  87. $kernel->setUsePagelayout(false);
  88. }
  89. $result = $kernel->run();
  90. $kernel->setUseExceptions(true);
  91. if ($result instanceof ezpKernelRedirect) {
  92. return $this->legacyResponseManager->generateRedirectResponse($result);
  93. }
  94. $this->legacyHelper->loadDataFromModuleResult($result->getAttribute('module_result'));
  95. $response = $this->legacyResponseManager->generateResponseFromModuleResult($result);
  96. $this->legacyResponseManager->mapHeaders(headers_list(), $response);
  97. return $response;
  98. }
  99. /**
  100. * Generates a RedirectResponse to the appropriate login route.
  101. *
  102. * @return RedirectResponse
  103. */
  104. public function loginAction()
  105. {
  106. return new RedirectResponse($this->router->generate('login'));
  107. }
  108. /**
  109. * Generates a RedirectResponse to the appropriate logout route.
  110. *
  111. * @return RedirectResponse
  112. */
  113. public function logoutAction()
  114. {
  115. return new RedirectResponse($this->router->generate('logout'));
  116. }
  117. }