public static function getPageResponse(Website $website, Request $request, Page $page, ResponseInterface $response) { try { $page->init($website, $request); } catch (NotFoundException $e) { $page = new Error404Page(); $page->init($website, $request); } $pageRenderer = new PageRenderer($website, $request, $page); $body = $response->getBody(); $pageRenderer->render($body); $body->rewind(); return $page->modifyResponse($response); }
public function __invoke(ServerRequestInterface $requestInterface, ResponseInterface $response, callable $next = null) { $request = new Request($requestInterface); // Load page try { $pageName = $request->getPageName(); // Switch to install page if website is not installed yet if (!$this->website->getConfig()->isDatabaseUpToDate()) { $pageName = "install"; } $page = $this->loadPage($pageName); } catch (NotFoundException $e) { $page = new Error404Page(); } // Login check $minimumRank = $page->getMinimumRank(); if ($minimumRank != Authentication::RANK_LOGGED_OUT && !$this->website->getAuth()->check($minimumRank, false)) { // Login failure $page = new ErrorLoginRequiredPage($minimumRank); } // Get response $updatedResponse = $next ? $next($requestInterface, $response) : $response; return Responses::getPageResponse($this->website, $request, $page, $updatedResponse); }