aboutsummaryrefslogtreecommitdiff
path: root/views/global/router.php
diff options
context:
space:
mode:
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';
+}