root = $root; } public function getUser() { return $this->req->user; } private function getPage() { if(!$this->page) { $user = $this->getUser(); if(!$user) { $this->page = new Forbidden(); } else { $page = $this->root; if($this->req->path) { $segments = explode('/', $this->req->path); foreach($segments as $segment) { $page = $page->child($segment); } if($page->addSlash && $segments[count($segments)-1] != '') { return new Redirector($segments[count($segments)-1] . '/', 301); } } $this->page = $page; } } return $this->page; } public function render($req) { $this->req = $req; $response = parent::render($req); $response->status = $this->_status; $response->headers = $this->_headers; $this->req = null; $this->page = null; $this->_status = null; $this->_headers = null; return $response; } public function title($req) { $title = "FlaxServ"; $subtitle = $this->getPage()->title($req); if($subtitle) { $title = sprintf("%s » %s", $title, $subtitle); } return $title; } public function pageTitle() { return $this->title($this->req); } public function content() { $pageResponse = $this->getPage()->render($this->req); $this->_status = $pageResponse->status; $this->_headers = $pageResponse->headers; return $pageResponse->data; } }