getRootBook(); self::$bookId = "%root"; } else { $tmp = SiteMeta::getBookshelf()->getBook($uri[0]); if ($tmp == null) throw new RequestNotExistException("Book required \"$uri[0]\" not found!"); self::$bookId = $uri[0]; self::$book = $tmp->getContentedNode(); } if (!isset($uri[1]) && !empty($uri[0])) { PageParse::output302($uri[0]."/"); } else if (empty($uri[1])) { $tmp = self::$book->getChildren()->getChildren()[0]; if ($tmp instanceof Page) self::$page_id = $tmp->getId(); else throw new RequestNotExistException("No main page in required book \"$uri[0]\""); self::$isMainPage = true; } else { self::$page_id = $uri[1]; } if ($content = @file_get_contents(self::getPagePath("md"))) { self::$page_data = (new Markdown())->parse($content); } else { return false; } return true; } public static function getHtmlTitle (): string { return self::getPageTitle() . " - " . self::$book->getName(); } public static function getPageTitle (): string { if (self::$page_data->title === null) { $page_def = self::$book->getPage(self::$page_id); if ($page_def === null) { return "..."; } return $page_def->getName(); } return self::$page_data->title; } public static function getDescription (): string { return ""; // todo wip description } public static function getConfigurationLevelBook (string $key): ?string { $value = SiteMeta::getConfigurationLevelShelf($key); $valueAttr = self::$book->getConfiguration($key); if ($valueAttr != null) $value = $valueAttr; return $value; } public static function getConfigurationLevelPage (string $key): ?string { $value = self::getConfigurationLevelBook($key); $valueAttr = self::$page_data->getConfiguration($key); if ($valueAttr != null) $value = $valueAttr; return $value; } public static function prismTheme (): string { $theme = trim(self::getConfigurationLevelPage(ConfigName::prism_theme)); if (empty($theme)) return "prism-material-light"; return $theme; } public static function getPagePath (?string $extension = null): string { return "./data/" . self::$bookId . "/" . self::$page_id . ($extension == null ? "" : ".".$extension); } }