<?php require_once "class/controller.class.php"; require_once "controller/sysconf.control.php"; require_once "controller/except.control.php"; require_once "controller/auth.control.php"; /* * Root-level controller for Scrott app. This object will delegate the page request to the * appropriate controller or handle it with an error message page. */ class Root extends Controller { /* * Controller implementation */ function handle($argv) { /* TODO -- Authentication (login / logout / register) MVC */ $argv = $this->normalizeArgv($argv); try { /* First, make sure the system configuration file has been included */ if (!$this->scrottConfExists()) { $ctrl = new Sysconf(); $ctrl->handle($argv); } /* TODO */ /* TODO -- only auth if logged out */ else if (!$this->getCurrentUser()) { $ctrl = new Auth(); $ctrl->handle($argv); } else { echo "logged in as:!"; echo "<pre>"; var_dump($this->getCurrentUser()); echo "</pre>"; } } catch (Exception $e) { $ctrl = new Except(); $ctrl->handle($e->getMessage()); } } /* * Get a useful path string by normalizeing the $argv array received from the main function. * This will remove directory names that appear in the $this->ar() string and the initial * and trailing (if present) empty strings */ function normalizeArgv($argv) { $argv = array_values(array_filter($argv)); $ar = array_values(array_filter(explode("/", $this->ar()))); $i = 0; $trunc = true; if (count($ar) == 0) return $argv; foreach ($ar as $elem) { if ($elem != $argv[$i]) { $trunc = false; break; } $i++; } if (!$trunc) return $argv; return array_values(array_slice($argv, count($ar))); } } ?>