summaryrefslogtreecommitdiffstats
path: root/app/controller/root.control.php
diff options
context:
space:
mode:
Diffstat (limited to 'app/controller/root.control.php')
-rw-r--r--app/controller/root.control.php67
1 files changed, 67 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)));
+ }
+}
+
+?>