diff options
| author | Syndamia <kamen@syndamia.com> | 2025-01-26 14:02:48 +0200 |
|---|---|---|
| committer | Syndamia <kamen@syndamia.com> | 2025-01-26 14:02:48 +0200 |
| commit | 637b86f1a221f09d1cdfb35030b7ab056add422d (patch) | |
| tree | aff6324fd0e96286aaaa2c6bc497ebec9561177e /views/global/router.php | |
| parent | 3a2176a1c6a1c367b4677a68a80df35578160c72 (diff) | |
| download | nowayforward_human-637b86f1a221f09d1cdfb35030b7ab056add422d.tar nowayforward_human-637b86f1a221f09d1cdfb35030b7ab056add422d.tar.gz nowayforward_human-637b86f1a221f09d1cdfb35030b7ab056add422d.zip | |
feat(views): Implement a proper router
Diffstat (limited to 'views/global/router.php')
| -rw-r--r-- | views/global/router.php | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/views/global/router.php b/views/global/router.php new file mode 100644 index 0000000..8986dfe --- /dev/null +++ b/views/global/router.php @@ -0,0 +1,54 @@ +<?php + +$VIEWS_DIR = __DIR__ . '/..'; +$CONTROLLERS_DIR = __DIR__ . '/../../controllers'; +$MODELS_DIR = __DIR__ . '/../../models'; + +$uri = rtrim($_SERVER['REQUEST_URI'], '/'); +$root = '/' . @explode('/', $uri, 3)[1]; + +function route_view() { + global $root; + global $uri; + + switch ($root) { + case '/archive': return '/archive'; + case '/profile': return '/profile'; + case '/register': return '/register'; + case '/login': return '/login'; + } + + switch ($uri) { + case '': case '/': case '/home': + return '/home'; + + case '/authenticate': + return '/profile/authenticate.php'; + + default: + http_response_code(404); + return '/404'; + } +} +$view = $VIEWS_DIR . route_view(); + +require_once '../../models/database.php'; +foreach (glob($MODELS_DIR . '/*.php') as $filename) { + require_once $filename; +} + +if (str_ends_with($view, '.php')) { + require_once $view; +} +else { + @include_once "$view/meta.php"; + + if (isset($controller)) { + require_once "$CONTROLLERS_DIR/$controller.php"; + require_once "$CONTROLLERS_DIR/meta.php"; + } + + require_once './header.php'; + require_once "$view/index.php"; + require_once './footer.php'; +} |
