<?php
/**
 * @copyright ProCoding.pl
 */

	// Wyświetlanie błędów
	error_reporting( E_ALL ^ E_NOTICE && E_DEPRECATED );

    
    
    // Podstawowe definicje i konfiguracja
    define( '_SEP_' , ( stristr( dirname(__FILE__) ,"\\" ) ? "\\" : "/" ) );
    define( 'DIR_CORE' , dirname(__FILE__) . _SEP_ );
    
    require_once DIR_CORE . 'define.php';
    require_once DIR_CORE . 'config.php';

	
    // Strefa czasowa
    date_default_timezone_set( $_cfg->core->time_zone );

    // Podstawowe rozszerzenia
    
    require_once DIR_CORE . 'functions.php';
    require_once DIR_CORE . 'autoload.php';
    
        
    // Autoload Libs
    switch( $_cfg->core->autoload->mode ){
        
        // Dynamic Auto
        case 1:

            $libs_dir = @opendir( DIR_LIBS );
            while( $lib_dir = readdir( $libs_dir ) ){
                if( !in_array( $lib_dir , array('index.php','.','..') ) ){
                    
                    $autoload_file_path = false;
                    
                    $autoload_file = DIR_LIBS . $lib_dir . _SEP_ . 'autoload.php';
                    $autoload_file_v2 = DIR_LIBS . $lib_dir . _SEP_ . 'Autoloader.php';
                    $autoload_file_v3 = DIR_LIBS . $lib_dir . _SEP_ . 'autoloader.php';
                    
                    foreach( $_cfg->core->autoload->dynamic as $dynamic_rule_name ){
                        
                        $autoload_file = DIR_LIBS . $lib_dir . _SEP_ . $dynamic_rule_name;
                        
                        if( file_exists( $autoload_file ) ){
                            
                            $autoload_file_path = $autoload_file;
                            break;
                            
                        }
                    }
                    
                    if( $autoload_file_path ) include $autoload_file_path;
                    
                }
            }
            @closedir( $libs_dir );
    
        break;
        
        // Static
        case 2:
        default:
            
            if( count( $_cfg->core->autoload->static ) ){
                
                foreach( $_cfg->core->autoload->static as $autoload_file ){
                    
                    $autoload_file_path = DIR_LIBS . $autoload_file;
                    if( file_exists( $autoload_file_path ) ) require_once $autoload_file_path;
                    
                }
                
            }
            
        break;
        
    }



    
    $c = new core;
    
    $db = new db;
    
	// Wersje Jezykowe
    $l = new l;
    include 'c/l/'.strtolower($l->symbol).'.php';
    
    $query = new query;
    
    $pagination = new str;
    $statement = new statement;


    // Load default config etc.
    core::LoadStd();
        
    $user = new user;
    
	// Zmienne systemowe
    $c->setValue( 'mode' ,     array( 'type' => 'core-string', 'default' => 'home' /*, 'function' => 'strtolower'*/ ));
    $c->setValue( 'm' ,     array( 'type' => 'core-string', 'default' => 'default' /*, 'function' => 'strtolower'*/ ));
    $c->setValue( 'function' , array( 'type' => 'core-string', 'default' => 'default' /*, 'function' => 'strtolower'*/ ));
    $c->setValue( 'f' , array( 'type' => 'core-string', 'default' => 'default'/*, 'function' => 'strtolower'*/ ));
    $c->setValue( 'method' ,   array( 'type' => 'core-string', 'default' => '' ));
    $c->setValue( 'module' ,   array( 'type' => 'core-string', 'default' => '' ));
    $c->setValue( 'where' ,    array( 'type' => 'core-string', 'default' => '' ));
    $c->setValue( 'id' ,       array( 'type' => 'int',         'default' => false,     'minimal' => 1 ));
    $c->setValue( 'global_id' ,array( 'type' => 'int' ,        'default' => false,     'minimal' => 1 ));
    $c->setValue( 'subid' ,    array( 'type' => 'int',         'default' => false,     'minimal' => 1 ));
    $c->setValue( 'modname' ,  array( 'type' => 'core-string', 'default' => '' , 'function' => 'esc' ) );
    $c->setValue( 's' ,        array( 'type' => 'int',         'default' => 1 ,     'minimal' => 1 ));
    $c->setValue( 'order' ,    array( 'type' => 'core-string', 'default' => '' , 'function' => 'esc' ) );
    $c->setValue( 'dir' ,      array( 'type' => 'core-string', 'default' => 'desc' , 'function' => 'esc' ) );
    
    
    require_once DIR_CORE . 'route.php';
    
	// Moduły
	$module = new module;
    $error = new error;
    
    // Widok
    $page = new page;
    $html = new html;
    $js = new js;
    $css = new css;
    $path = new path;
    
 	$tpl = new Smarty;


    
    global $tpl;
    
?>