setMarkupEscaped(false); $parser->setSafeMode(false); try { SiteMeta::load(); // 检查是否为 ajax 请求 $rawContent = $_GET['raw']=="true"; $rawWithNav = $_GET['nav']=="true"; // 格式化所给链接,并将链接转化为路径字符串数组 $req = $_GET['p']; if (strlen($req) > 0 && $req[strlen($req) - 1] === '/') $tmp = substr($req, 0, -1); $uri = explode("/", $req, 2); try { // 寻找页面 if (sizeof($uri) > 0 && $uri[0] != null) { // 非主页面,判定当前定义的 book $tmp = SiteMeta::getBookshelf()->getBook($uri[0]); if ($tmp == null) throw new RequestNotExistException("Book required \"$uri[0]\" not found!"); PageMeta::$book = $tmp->getContentedNode(); // 判定当前页面 if (sizeof($uri) > 1 && $uri[1] != null) { $tmp = PageMeta::$book->getPage($uri[1]); if ($tmp == null) throw new RequestNotExistException("Page required \"$uri[1]\" not found on book \"$uri[0]\"!"); PageMeta::$page = $tmp; } else { PageMeta::$page = PageMeta::$book->getChilds()->getChilds()[0]; } } else { // 主页面 PageMeta::$book = SiteMeta::getBookshelf()->getRootBook(); PageMeta::$page = PageMeta::$book->getChilds()->getChilds()[0]; PageMeta::$isMainPage = true; } } catch (RequestNotExistException $e) { // 页面寻找失败,寻找资源文件 if (!is_file($resLoc = "./data/%assets/$req")) { // 全局文件夹的资源文件 // if (!is_file($resLoc = sprintf("./data/%s/%s", PageParse::genPathFromUriArray($uri), $req))) { // 以当前页面为基准位置的资源文件 // if (!is_file($resLoc = sprintf("./data/%s/%s", PageParse::genPathFromUriArray(array_slice($uri, 0, -1)), $req))) { // 以当前页面为基准位置的资源文件(fallback版) // if (!is_file($resLoc = sprintf("./data/%s/%s", PageMeta::$book->getId(), $req))) { // 以当前书籍为基准位置的资源文件 // if (!is_file($resLoc = "./data/$req")) { // 全局的资源文件 throw $e; // } // } // } // } } PageParse::outputBinaryFile($resLoc); } if ($rawContent && $rawWithNav) { echo PageMeta::$book->getSummaryHtml() . "\n"; } if (!$rawContent) : require "./template/header.php"; ?>
" . $e->getMessage() . "
"; }