blob: 2c60faf2967d009cdf833f7b0d089ddbd5f72a5d (
plain) (
tree)
|
|
<?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)));
}
}
?>
|