diff --git a/index.php b/index.php index d808540..c81dd4a 100644 --- a/index.php +++ b/index.php @@ -4,6 +4,8 @@ require_once "./src/Data/SiteMeta.php"; require_once "./src/Data/PageMeta.php"; require_once "./lib/Parsedown/Parsedown.php"; +require_once "./src/Utils/PageParse.php"; +require_once "./src/Utils/RequestNotExistException.php"; $parser = new Parsedown(); @@ -15,29 +17,52 @@ try { SiteMeta::load(); // 格式化所给链接,并将链接转化为路径字符串数组 - $tmp = $_GET['p']; - if (strlen($tmp) > 0 && $tmp[strlen($tmp) - 1] === '/') - $tmp = substr($tmp, 0, -1); - $uri = explode("/", $tmp, 2); + $req = $_GET['p']; + if (strlen($req) > 0 && $req[strlen($req) - 1] === '/') + $tmp = substr($req, 0, -1); + $uri = explode("/", $req, 2); - if (sizeof($uri) > 0 && $uri[0] != null) { - // 非主页面,判定当前定义的 book - $tmp = SiteMeta::getBookshelf()->getBook($uri[0]); - if ($tmp == null) throw new Exception("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 Exception("Page required \"$uri[1]\" not found on book \"$uri[0]\"!"); - PageMeta::$page = $tmp; + 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; } - } 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); + } require "./template/header.php"; @@ -90,7 +115,7 @@ try {