/** * Finds the 404 page for a site * @param Site $site The site whise 404 page is searched for * @return Page The 404 page */ static function Page404(Site $site) { $sql = Access::SqlBuilder(); $tblPage = Page::Schema()->Table(); $where = $sql->Equals($tblPage->Field('Type'), $sql->Value((string) PageType::NotFound()))->And_($sql->Equals($tblPage->Field('Site'), $sql->Value($site->GetID()))); return Page::Schema()->First($where); }
private function SaveType() { $type = PageType::ByValue($this->Value('Type')); $this->page->SetType((string) $type); $target = $this->page->GetRedirectTarget(); switch ($type) { case PageType::Normal(): case PageType::NotFound(): if ($target) { $this->page->SetRedirectTarget(null); $target->Delete(); } break; case PageType::RedirectPermanent(): case PageType::RedirectTemporary(): $this->page->SetRedirectTarget($this->selector->Save($target)); } }
private function PageAllowed(Page $page) { if ($page->GetType() != (string) PageType::Normal() || $page->GetSitemapRelevance() == 0) { return false; } return $this->guard->Allow(Action::Read(), $page); }
/** * Renders the complete page by requiring the page layout * @return string Returns the page contents */ function Render() { self::$currentPage = $this->page; self::$Title = self::$currentPage->GetTitle(); self::$Description = self::$currentPage->GetDescription(); self::$Keywords = self::$currentPage->GetKeywords(); if ($this->page->GetType() == (string) PageType::NotFound()) { header('HTTP/1.0 404 Not Found'); } else { if ($this->page->GetType() !== (string) PageType::Normal()) { throw new \Exception('Internal phine error: not normal page called'); } } ob_start(); require PathUtil::LayoutTemplate($this->layout); $result = ob_get_clean(); $replacer = new Replacer(); return $replacer->RealizeVariables($result); }