/** * Base fallback action. * Will be basically used for every legacy module. * * @return \eZ\Bundle\EzPublishLegacyBundle\LegacyResponse */ public function indexAction() { $kernelClosure = $this->kernelClosure; /** @var \eZ\Publish\Core\MVC\Legacy\Kernel $kernel */ $kernel = $kernelClosure(); $legacyMode = $this->configResolver->getParameter('legacy_mode'); //Empêche le front d'aller dans de l'eZ legacy if (!$legacyMode && substr($this->request->getPathInfo(), 0, 18) != '/content/download/') { throw new NotFoundHttpException('Adresse non trouvée'); } $kernel->setUseExceptions(false); // Fix up legacy URI with current request since we can be in a sub-request here. $this->uriHelper->updateLegacyURI($this->request); // If we have a layout for legacy AND we're not in legacy mode, we ask the legacy kernel not to generate layout. if (isset($this->legacyLayout) && !$legacyMode) { $kernel->setUsePagelayout(false); } $result = $kernel->run(); $kernel->setUseExceptions(true); if ($result instanceof ezpKernelRedirect) { return $this->legacyResponseManager->generateRedirectResponse($result); } $this->legacyHelper->loadDataFromModuleResult($result->getAttribute('module_result')); $response = $this->legacyResponseManager->generateResponseFromModuleResult($result); $this->legacyResponseManager->mapHeaders(headers_list(), $response); return $response; }
/** * @dataProvider generateRedirectResponseProvider */ public function testGenerateRedirectResponse($uri, $redirectStatus, $expectedStatusCode, $content) { $kernelRedirect = new ezpKernelRedirect($uri, $redirectStatus, $content); $manager = new LegacyResponseManager($this->templateEngine, $this->configResolver); $response = $manager->generateRedirectResponse($kernelRedirect); $uriInContent = htmlspecialchars($uri); $expectedContent = <<<EOT <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="refresh" content="1;url={$uriInContent}" /> <title>Redirecting to {$uriInContent}</title> </head> <body> Redirecting to <a href="{$uriInContent}">{$uriInContent}</a>. </body> </html> EOT; $this->assertInstanceOf('Symfony\\Component\\HttpFoundation\\RedirectResponse', $response); $this->assertSame($uri, $response->getTargetUrl()); $this->assertSame($expectedStatusCode, $response->getStatusCode()); $this->assertSame($expectedContent, $response->getContent()); }