/** * getCmsResponse * * @param Site $site * @param $pageName * @param string $pageType * @param null $revisionId * * @return \Rcm\Http\Response|ViewModel */ public function getCmsResponse(Site $site, $pageName, $pageType = 'n', $revisionId = null) { /** * @todo This should be handled better * This is for client, so it can tell if this is an error page */ $requestedPageData = ['name' => strtolower($pageName), 'type' => strtolower($pageType), 'revision' => $revisionId]; /* Get the Page for display */ $page = $this->pageRepo->getPageByName($site, $pageName, $pageType); $viewModel = new ViewModel(); if (!$page) { $page = $this->renderNotFoundPage($site); } $allowed = $this->rcmIsPageAllowed($page); if (!$allowed) { return $this->getUnauthorizedResponse(); } $this->prepPageRevisionForDisplay($page, $revisionId); // if we have no revision, page is not found if (!$page->getCurrentRevision()) { $page = $this->renderNotFoundPage($site); $this->prepPageRevisionForDisplay($page); } $this->prepLayoutView($site, $page, $requestedPageData, $page->getSiteLayoutOverride()); $viewModel->setVariable('page', $page); $viewModel->setTemplate('pages/' . $this->layoutManager->getSitePageTemplate($site, $page->getPageLayout())); return $viewModel; }