diff --git a/libs/Daux.php b/libs/Daux.php index cc2a02c..f6c8a1a 100644 --- a/libs/Daux.php +++ b/libs/Daux.php @@ -152,10 +152,10 @@ class Daux } $params['theme'] = DauxHelper::getTheme( - $this->local_base . DS . 'resources' . DS . 'themes' . DS . $this->options['theme-name'], + $this->options['theme-name'], $params['base_url'], $this->local_base, - $params['base_url'] . "resources/themes/" . $this->options['theme-name'] . '/' + $params['base_url'] ); return $params; diff --git a/libs/DauxHelper.php b/libs/DauxHelper.php index aeedb30..e4dc87e 100644 --- a/libs/DauxHelper.php +++ b/libs/DauxHelper.php @@ -26,9 +26,10 @@ class DauxHelper return $request; } - public static function getTheme($theme_folder, $base_url, $local_base, $theme_url) + public static function getTheme($theme_name, $base_url, $local_base, $current_url) { - $name = static::pathinfo($theme_folder); + $theme_folder = $local_base . DS . 'resources' . DS . 'themes' . DS . $theme_name; + $theme_url = $base_url . "resources/themes/" . $theme_name . '/'; $theme = array(); if (is_file($theme_folder . DS . "config.json")) { @@ -37,10 +38,10 @@ class DauxHelper $theme = array(); } } - $theme['name'] = $name['filename']; //Default parameters for theme $theme += [ + 'name' => $theme_name, 'css' => [], 'js' => [], 'fonts' => [], @@ -50,7 +51,7 @@ class DauxHelper 'templates' => $theme_folder . DS . 'templates', ]; - $substitutions = ['' => $local_base, '' => $base_url, '' => $theme_url]; + $substitutions = ['' => $local_base, '' => $current_url, '' => $theme_url]; // Substitute some placeholders $theme['templates'] = strtr($theme['templates'], $substitutions); diff --git a/libs/Generator/Generator.php b/libs/Generator/Generator.php index 1b3d390..0952dd0 100644 --- a/libs/Generator/Generator.php +++ b/libs/Generator/Generator.php @@ -32,10 +32,10 @@ class Generator // Rebase Theme $params['theme'] = DauxHelper::getTheme( - $params['local_base'] . DS . 'resources' . DS . 'themes' . DS . $params['theme-name'], - $base_url, + $params['theme-name'], + $params['base_url'], $params['local_base'], - $params['base_url'] . "resources/themes/" . $params['theme-name'] . '/' + $base_url ); $params['image'] = str_replace('', $base_url, $params['image']); diff --git a/libs/Server/Helper.php b/libs/Server/Helper.php deleted file mode 100644 index 711689d..0000000 --- a/libs/Server/Helper.php +++ /dev/null @@ -1,38 +0,0 @@ -params = $this->daux->getParams(); - $request = Helper::getRequest(); + $request = $this->getRequest(); $request = urldecode($request); $request_type = isset($query['method']) ? $query['method'] : ''; if ($request == 'first_page') { @@ -128,4 +128,38 @@ class Server } return MarkdownPage::fromFile($file, $params); } + + public function getRequest() + { + if (isset($_SERVER['PATH_INFO'])) { + $uri = $_SERVER['PATH_INFO']; + } elseif (isset($_SERVER['REQUEST_URI'])) { + $uri = $_SERVER['REQUEST_URI']; + if (strpos($uri, $_SERVER['SCRIPT_NAME']) === 0) { + $uri = substr($uri, strlen($_SERVER['SCRIPT_NAME'])); + } elseif (strpos($uri, dirname($_SERVER['SCRIPT_NAME'])) === 0) { + $uri = substr($uri, strlen(dirname($_SERVER['SCRIPT_NAME']))); + } + if (strncmp($uri, '?/', 2) === 0) { + $uri = substr($uri, 2); + } + $parts = preg_split('#\?#i', $uri, 2); + $uri = $parts[0]; + if (isset($parts[1])) { + $_SERVER['QUERY_STRING'] = $parts[1]; + parse_str($_SERVER['QUERY_STRING'], $_GET); + } else { + $_SERVER['QUERY_STRING'] = ''; + $_GET = array(); + } + $uri = parse_url($uri, PHP_URL_PATH); + } else { + return false; + } + $uri = str_replace(array('//', '../'), '/', trim($uri, '/')); + if ($uri == "") { + $uri = "first_page"; + } + return $uri; + } } diff --git a/libs/Tree/Builder.php b/libs/Tree/Builder.php index c5258c4..b538846 100644 --- a/libs/Tree/Builder.php +++ b/libs/Tree/Builder.php @@ -34,12 +34,10 @@ class Builder continue; } - $file_details = DauxHelper::pathinfo($path); - $entry = null; if (is_dir($path)) { $entry = static::build($path, $ignore, $params, $new_parents); - } elseif (in_array($file_details['extension'], Daux::$VALID_MARKDOWN_EXTENSIONS)) { + } elseif (in_array(pathinfo($path, PATHINFO_EXTENSION), Daux::$VALID_MARKDOWN_EXTENSIONS)) { $entry = new Content($path, $new_parents); if ($params['mode'] === Daux::STATIC_MODE) { diff --git a/libs/Tree/Content.php b/libs/Tree/Content.php index 7941e3b..466adf9 100644 --- a/libs/Tree/Content.php +++ b/libs/Tree/Content.php @@ -15,7 +15,6 @@ class Content extends Entry protected function getFilename($file) { - $file = DauxHelper::pathinfo($file); - return $file['filename']; + return DauxHelper::pathinfo($file)['filename']; } }