diff options
Diffstat (limited to '')
-rw-r--r-- | app/controller/root.control.php | 67 | ||||
-rw-r--r-- | app/controller/sysconf.control.php | 43 |
2 files changed, 110 insertions, 0 deletions
diff --git a/app/controller/root.control.php b/app/controller/root.control.php new file mode 100644 index 0000000..437cae1 --- /dev/null +++ b/app/controller/root.control.php @@ -0,0 +1,67 @@ +<?php + +require_once "class/controller.class.php"; +require_once "controller/sysconf.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 -- Catch app exceptions here and display a special view to communicate them to user */ + /* TODO -- Authentication (login / logout / register) MVC */ + + $argv = $this->normalizeArgv($argv); + + /* First, make sure the system configuration file has been included */ + if (!$this->scrottConfExists()) + { + $ctrl = new Sysconf(); + $ctrl->handle($argv); + } + + /* TODO */ + else + echo "Configuration is present!"; + } + + /* + * 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))); + } +} + +?> diff --git a/app/controller/sysconf.control.php b/app/controller/sysconf.control.php new file mode 100644 index 0000000..a7db1e8 --- /dev/null +++ b/app/controller/sysconf.control.php @@ -0,0 +1,43 @@ +<?php + +require_once "class/controller.class.php"; +require_once "model/sysconf.mod.php"; + +/* + * SysConf is the interface for creating an install's "scrott.conf.php" file if it doesn't exist + */ +class Sysconf extends Controller +{ + /* + * Controller implementation + */ + function handle($argv) + { + $mod = new SysconfModel(); + + switch ($_REQUEST['input']['action']) + { + case "save": + $this->action_save($mod); + break; + + default: + $this->action_default($mod); + break; + } + } + + function action_default($mod) + { + $mod->deflt(); + include "view/sysconf/default.view.php"; + } + + function action_save($mod) + { + $mod->save($_REQUEST['input']); + $this->action_default($mod); + } +} + +?> |