<?php /* * SCROTT IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * * For more information, please refer to UNLICENSE */ require_once "class/database.class.php"; require_once "class/settings.class.php"; require_once "class/user.class.php"; /* * This file is the entry-point to the Scrott application. main() will * make a few assertions and figure out which content is being requested. */ function main(array $argv) : void { try { /* assert the database configuration is present */ if (!database::checkConfig()) { require "view/dbconfig.php"; return; } /* assert we are running over HTTPS (if enabled) */ if (settings::sslOnly()) require_https(); /* assert that a user is logged in */ if (!($user = user::getCurrent())) { require "view/login.php"; return; } setPageObj($user); /* no arguments? display dashboard */ if (count($argv) == 0) { setPageName("<i>Dashboard</i>"); require "view/dashboard.php"; return; } switch ($argv[0]) { case "logout": /* logout user */ user::setCurrent(); location("/"); break; case "groups": setPageName("<i>Groups</i>"); require "view/groups.php"; break; case "pads": setPageName("<i>Pads</i>"); require "view/pads.php"; break; default: /* view object */ if (table::isGUID($argv[0])) { switch (obj::typeOf($argv[0])) { case "pad": $obj = new pad($argv[0]); setPageObj($obj); setPageName($obj->name); require "view/pad.php"; break; } } } } catch (Exception $e) { require "view/except.php"; } } $tokens = explode("/", $_SERVER['PATH_INFO']); main(array_values(array_filter($tokens))); ?>