HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/SBogers59/ferrumbv.nl/wwwroot/kms/lib/bootstrap.class.php
<?php

/**
 * bootstrap.class.php
 * Created by Komma Mediadesign.
 * Author: mike
 * Date: 3/19/13
 */

class Bootstrap extends Controller{

    public function __construct()
    {
        // Start the session
        Session::init();

        // Convert URL_PAGE & URL_SUB to a controller and a method within a controller
        $LanguageHandler = new LanguageHandler();
        $LanguageHandler->set(URL_LANG);

        // Define controller & method
        defined('URL_PAGE') ?  $controller = $LanguageHandler->convert(URL_PAGE) : $controller = 'Login';
        defined('URL_SUB') ? $method = $LanguageHandler->convert(URL_SUB) : $method = '';
        $controller = str_replace('-','_',$controller);

        //Check whether a user is logged in
        $Login = new Login();
        $Login->loadModel('login');

        if($Login->Model->isLoggedIn())
        {
            // If URL_PAGE is not defined, call the homepage controller.
            if( ! defined('URL_PAGE'))
            {
                require_once DOCUMENT_ROOT.'app/controllers/c_home.class.php';
                $Controller = new Home();
                $Controller->init();
                $Controller->index();
                return false;
            }
        }
        else
        {
            $limitAllowed = array('login','forgot_pass','pass_activation','pass_updater');
            if( ! in_array($controller,$limitAllowed))
            {
                $controller = 'Login';
                $method = 'index';
            }
        }

        // Load the page
        $this->loadPage($controller,$method);
        return false;
    }


    private function loadPage($name,$method)
    {

        $file = DOCUMENT_ROOT . 'app/controllers/c_' . strtolower($name) . '.class.php';

        //Check if the controller file exists. If so, require the file and create a new Controller object
        $basicPage = $this->isBasicPage($name);
        if($basicPage)
        {
            require_once DOCUMENT_ROOT . 'app/controllers/c_basic_page.class.php';
        }
        else if(is_file($file))
        {
            if( ! class_exists($name))
            {
                require_once $file;
            }
        }
        else
        {
            header("HTTP/1.0 404 Not Found");
            header('location:'.SITE_ROOT.'404/');
            exit;
        }

        // Catch 404
        if($name == '404') $name = 'Page_Not_Found';
        //  PAGE -> Create a controller object and load the model
        if($basicPage)
        {
            $Controller = new Basic_Page($name);
            $Controller->loadModel('basic_page');
        }
        else
        {
            $Controller = new $name;
            $Controller->loadModel($name);
        }

        $Controller->init();

        // SUB -> If SUB exists as a method, call that method. If no sub,
        if( ! empty($method))
        {
            if(method_exists($Controller, $method))
            {
                $Controller->{$method}();
                return true;
            }
        }
        else
        {
            if(method_exists($Controller, 'index'))
            {
                $Controller->index();
                return true;
            }
        }
        $Controller->Functions->notFound();
        return false;
    }


    /*
     * This functions checks whether the constructor should load a specific controller for a page,
     * or whether he should load the Basic_Page controller.
     */
    private function isBasicPage($name)
    {
        $Dbh = new DatabaseHandler();
        $Dbh->setTableName('kms_basic_pages');
        $Dbh->addRule('name',$name);
        $result = $Dbh->select();
        return ( ! empty($result));
    }
}