aboutsummaryrefslogtreecommitdiff
path: root/views/global/router.php
diff options
context:
space:
mode:
authorSyndamia <kamen@syndamia.com>2025-01-26 14:02:48 +0200
committerSyndamia <kamen@syndamia.com>2025-01-26 14:02:48 +0200
commit637b86f1a221f09d1cdfb35030b7ab056add422d (patch)
treeaff6324fd0e96286aaaa2c6bc497ebec9561177e /views/global/router.php
parent3a2176a1c6a1c367b4677a68a80df35578160c72 (diff)
downloadnowayforward_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.php54
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';
+}