X-Git-Url: http://git.shiar.net/minimedit.git/blobdiff_plain/42d01534123ab54ae8d2ceee5fe9357605b5e637..effb5f39f873af6e83f65ec3bce4c6d6b3a0fac3:/page.php?ds=sidebyside diff --git a/page.php b/page.php index 4944467..35a810a 100644 --- a/page.php +++ b/page.php @@ -2,80 +2,86 @@ error_reporting(E_ALL); ini_set('display_errors', TRUE); -function fail($error) -{ - http_response_code(500); - include_once 'page.inc.php'; - ob_start(); - require_once './500.html'; - print str_replace('[[debug]]', $error, ob_get_clean()); -} -set_exception_handler('fail'); -register_shutdown_function(function () { - # display failure page for fatal exceptions - $error = error_get_last(); - if (!($error['type'] & (E_ERROR | E_CORE_ERROR | E_COMPILE_ERROR | E_USER_ERROR))) return; - fail("Fatal: $error[message] in $error[file]:$error[line]"); -}); - -include_once 'auth.inc.php'; -$Edit = isset($_GET['edit']); - -# distinguish subpage Args from topmost Page script - -$Args = ''; -$Page = preg_replace('/\?.*/', '', $_SERVER['REQUEST_URI']); -$Page = urldecode(trim($Page, '/')) ?: 'index'; -while (TRUE) { - if (file_exists("$Page.php")) { - break; - } +define('DOCROOT', getcwd()); +set_include_path(implode(PATH_SEPARATOR, [ DOCROOT, __DIR__ ])); + +include_once 'error.inc.php'; + +# setup requested page + +$request = preg_replace('/\?.*/', '', @$_SERVER['PATH_INFO'] ?: $_SERVER['REQUEST_URI']); +$request = urldecode(trim($request, '/')) ?: 'index'; - $up = strrpos($Page, '/'); - $Args = substr($Page, $up) . $Args; - $Page = substr($Page, 0, $up); - if ($up === FALSE) { - break; +$staticpage = "$request.html"; +if (file_exists($staticpage)) { + if (is_link($staticpage)) { + $target = preg_replace('/\.html$/', '', readlink($staticpage)); + header("HTTP/1.1 302 Shorthand"); + header("Location: $target"); + exit; } } +elseif (file_exists("$request/index.html")) { + $staticpage = "$request/index.html"; +} -# load static contents +require_once('article.inc.php'); +$Page = new ArchiveArticle($staticpage); -ob_start(); # page body -ob_start(); # inner html -print '