diff options
Diffstat (limited to 'examples/app/class/framework.class.php')
| -rw-r--r-- | examples/app/class/framework.class.php | 144 | 
1 files changed, 144 insertions, 0 deletions
| diff --git a/examples/app/class/framework.class.php b/examples/app/class/framework.class.php new file mode 100644 index 0000000..a3c36cb --- /dev/null +++ b/examples/app/class/framework.class.php @@ -0,0 +1,144 @@ +<?php + +/* + * SCROTT Copyright (C) 2016 Malf Furious + * + * Scrott is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published + * by the Free Software Foundation, either version 3 of the License, + * or (at your option) any later version. + * + * Scrott is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public + * License for more details. + */ + +/* Define Scrott version number */ +define("__VERSION__", "v0.0"); + +/* Include the Scrott system-level configuration file if it exists */ +is_file("scrott.conf.php") && +    require_once "scrott.conf.php"; + +/* Init PHP session */ +session_start(); + +require_once "class/mysql.class.php"; +require_once "class/user.class.php"; + +/* + * Global functions / operations and access to contextual or session-based information + */ +abstract class Framework +{ +    static $dbobj = null; + +    /* +     * Check for the existence of Scrott's system-level config +     */ +    function scrottConfExists() +    { +        global $_SCROTT; +        return isset($_SCROTT['conf']); +    } + +    /* +     * Get the absolute path on this server for the root of this app +     */ +    function ar() +    { +        return substr($_SERVER['PHP_SELF'], 0, -10); // 10 = length of "/index.php" +    } + +    /* +     * Get the absolute path to the current page +     */ +    function ap() +    { +        return $this->ar() . $_REQUEST['path']; +    } + +    /* +     * Redirect to the given URL and die +     */ +    function redirectTo($url) +    { +        header("Location: " . $url); +        exit; +    } + +    /* +     * Get a user object for the currently logged in user.  Returns false if session is logged out. +     */ +    function getCurrentUser() +    { +        if (isset($_SESSION['userguid'])) +        { +            $user = new User($_SESSION['userguid']); + +            if ($user->type == "user") +                return $user; + +            $this->setCurrentUser(); +        } + +        return false; +    } + +    /* +     * Get the IP address the client held when the current session began +     */ +    function getOriginIP() +    { +        return $_SESSION['userip']; +    } + +    /* +     * Set the current logged in user +     */ +    function setCurrentUser($user = null) +    { +        if ($user != null && isset($user->guid)) +        { +            $_SESSION['userguid'] = $user->guid; +            $_SESSION['userip'] = $_SERVER['REMOTE_ADDR']; +        } + +        else +        { +            unset($_SESSION['userguid']); +            unset($_SESSION['userip']); +        } +    } + +    /* +     * Get or create the app's database connection object (this is a singleton object and dependent on system-level config) +     */ +    static function getDbConnection() +    { +        global $_SCROTT; + +        if (self::$dbobj != null) +            return self::$dbobj; + +        switch ($_SCROTT['dbEngine']) +        { +        case "mysql": +            $host     = $_SCROTT['dbAddress']; +            $username = $_SCROTT['dbUser']; +            $password = $_SCROTT['dbPass']; +            $dbName   = $_SCROTT['dbName']; +            self::$dbobj = new Mysql($host, $username, $password, $dbName); +            break; + +        default: +            throw new Exception("Problem with Scrott Configuration. Invalid database engine specified."); +            break; +        } + +        return self::$dbobj; +    } +} + +?> | 
