diff options
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'; +} |
