Bontiv-Sourceer source code viewer
Root | Help
./bontiv-cms/core/core_loader.php
<?php
if (!defined('INDEX') || INDEX == false) die ('Acc�s denied');
include_once
COREDIR . 'core_exception.php';

/**
 * Core loader
 *
 * @version 0.1
 * @copyright 2010
 */

/**
 * Core loader
 *
 */
class core_loader
{
   
/**
     * Constructor
     */
   
function __construct()
    {
        try
        {
           
set_magic_quotes_runtime(0);
            if (
get_magic_quotes_gpc())
            {
               
$_POST = $this->delete_magic_quotes($_POST);
               
$_GET = $this->delete_magic_quotes($_GET);
               
$_COOKIE = $this->delete_magic_quotes($_COOKIE);
               
$_REQUEST = array_merge($_POST, $_GET, $_COOKIE);
            }
           
           
$this->InitDatabase(DataConfig::$DBDriver, DataConfig::$DBControler);
           
$this->SetLocal();
           
core_settings::LoadStettings();
           
hash::SetKey(DataConfig::$CryptoKey);
           
core_modules::LoadModules();
           
$this->LoadTheme();
           
$this->initGz();
        }
        catch (
CoreException $e)
        {
           
$this->displayError($e);
            exit;
        }
    }
   
    private function
delete_magic_quotes($value)
    {
        if (
is_array($value)) {
            foreach (
$value as $k=>$v){
               
$value[$k] = $this->delete_magic_quotes($value[$k]);
            }
            return
$value;
        }
        else
        {
            return
stripslashes($value);
        }
    }
   
    public function
SetLocal($local = null)
    {
        if (
$local === null)
        {
           
$locate = strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"]);
           
$locate = explode(',', $locate);
           
$local = array();
           
            foreach (
$locate as $lang)
            {
               
$lang = explode(';', $lang);
                if (!isset(
$lang[1]))
                   
$lang[1] = 1;
               
$local[$lang[0]] = $lang[1];
            }
           
           
$local = array_flip($local);
           
arsort($local);
           
$local = array_values($local);
        }
       
setlocale(LC_ALL, $local);
    }
   
    public function
initGz()
    {
        if (
strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false)
        {
           
$gz = core_settings::Get('gzoutput');
            if (
$gz == 'true')
            {
               
ob_start('ob_gzhandler');
               
header('Content-Encoding: gzip');
            }
        }
    }
   
    public function
LoadTheme()
    {
       
$dir = ROOTDIR . core_settings::Get('themedir') . DIRECTORY_SEPARATOR;
       
core_modules::LoadUnregistredMod($dir . core_settings::Get('theme') . DIRECTORY_SEPARATOR . 'mod_theme.php');        
    }

    public function
InitDatabase($Driver, $Controler)
    {
       
$Driver = LIBSDIR . $Driver . DIRECTORY_SEPARATOR . 'sqld.php';
       
$Controler = LIBSDIR . $Controler . DIRECTORY_SEPARATOR . 'sqlc.php';

        if (!
file_exists($Driver)
        or !
file_exists($Controler))
        {
            throw new
Exception('Can\'t load the database driver. Check your configuration. (file ' . $Driver . ' & ' . $Controler . ')');
        }
        else
        {
            include
$Driver;
            include
$Controler;
           
sqld::connect(DataConfig::$DBUser, DataConfig::$DBPassword, DataConfig::$DBServer, DataConfig::$DBPort, DataConfig::$DBase);
           
DataConfig::$DBUser = DataConfig::$DBPassword = DataConfig::$DBServer = DataConfig::$DBPort = DataConfig::$DBase = null;

            if (!
class_exists('sql'))
            {
                throw new
Exception('We can\'t use the database driver.');
            }
        }
    }
   
    private function
UsedMod ($url)
    {
       
$mod = core_modules::IterYes(array($url));
        if (
count($mod) > 0)
        {
            return
$mod[0];
        }
        else
        {
           
$url = explode('/', $url);
            if (isset(
$url[0]))
            {
               
$mod = core_modules::FindClass(strtolower($url[0]));
                if (
$mod !== false)
                    return
$mod;
            }
            return
core_settings::Get('def_mod');
        }
    }
   
    private function
GetUrl ()
    {
        if (isset(
$_SERVER['PATH_INFO']) && $_SERVER['PATH_INFO'] != '')
        {
            return
substr($_SERVER['PATH_INFO'],1);
        }
        elseif (isset(
$_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING'] != '')
        {
            return
$_SERVER['QUERY_STRING'];
        }
        else
        {
            return
'';
        }
    }
   
    public function
start ()
    {
       
$url = $this->GetUrl();
       
$mod = $this->UsedMod($url);
       
$mod_array = explode('/', $url);
       
        try
        {
           
/* Lib Exec */
           
if ($mod_array[0] == 'libexec' && method_exists($mod_array[1], 'libexec'))
            {
               
call_user_func(array($mod_array[1],'libexec'), $url);
            }
            elseif (
$mod !== false)
            {
               
$mod = core_modules::GetInstance($mod);
               
$mod->Start($url);
            }
            else
                throw new
CoreException('Default mod is not found');
        }
        catch (
CoreException $err)
        {
           
$this->displayError ($err);
        }
    }
   
    private function
displayError ($err)
    {
       
$page = file_get_contents(COREDIR . 'error_tpl.html');
        foreach (
$err->getTplVar() as $var => $value)
           
$page = preg_replace('`{'.$var.'}`i', $value, $page);
        echo
$page;
    }
}
?>
Presented with Bontiv-Sourceer