<?php
header('Content-Type: text/html; charset=utf-8');
if (session_id() == '' || !isset($_SESSION)) {
    session_cache_limiter('private');
    //session_cache_expire(480);

    session_start();
}

/*$message = '<br><br><br><br><br><br><br><br><br><br><center>';
$message .= '<img src="https://estoquenow.com.br/assets/img/undraw_maintenance_cn7j.svg" style="width:220px;">';
$message .= '<h2>Olá! Estamos realizando uma manutenção em nossos servidores.</h2><br>';
$message .= 'Em breve nosso site estará novamente no ar!<br>';
$message .= 'Lamentamos qualquer transtorno causado por essa operação e contamos com a sua compreensão.';
$message .= '</center>';
echo $message;
die();*/


require './vendor/autoload.php';
require_once 'config/settings.php';
require_once 'config/static.params.php';
require_once 'lib/framework/Math.php';
require_once 'lib/framework/entity.php';
require_once 'lib/framework/request.php';
require_once 'lib/framework/util_number.php';
require_once 'lib/framework/util_message.php';
require_once 'lib/framework/Route.php';
require_once 'lib/framework/Link.php';
require_once 'lib/framework/Page.php';
require_once 'lib/framework/navigation.php';
require_once 'lib/framework/model.php';
require_once 'lib/framework/modelApi.php';
require_once 'lib/framework/controller.php';
require_once 'lib/framework/view.php';
require_once 'lib/framework/database.php';
require_once 'lib/framework/util_cep.php';
require_once 'lib/framework/util_format.php';
require_once 'lib/framework/util_functions.php';
require_once 'lib/framework/util_file.php';
require_once 'lib/framework/util_date.php';
require_once 'lib/framework/util_virtualstore_template.php';
require_once 'lib/framework/key_simetric.php';
require_once 'lib/framework/Sanitize.php';
require_once 'lib/framework/send_email.php';
require_once 'lib/framework/webanalytics.php';
require_once 'lib/params.php';
require_once 'lib/Psr/Log/LogLevel.php';
require_once 'lib/Psr/Log/LoggerInterface.php';
require_once 'lib/Psr/Log/AbstractLogger.php';
require_once 'lib/Klogger/Logger.php';

#error_reporting(E_ALL);
#ini_set('display_errors', 1);
// logging
$log = new Katzgrau\KLogger\Logger ("logs" , Psr\Log\LogLevel::INFO);
try{    
    date_default_timezone_set('America/Recife');    
    $route = new Route();
    $array_uri = $route->match($_SERVER["REQUEST_URI"]);    
    #print_r($array_uri);        
    #die();
    $controller = $array_uri["controller"];
    $action = $array_uri["action"];
    
    # verifica se o arquivo de controle existe na pasta controle        
    if (!file_exists("controllers/{$controller}Controller.php")){
        if (file_exists("views/Home/Contentpages/".strtolower($controller).".php")) {    
            //require_once "views/Website/$controller.php";
            $array_uri["params"] = strtolower($controller);
            $controller = 'Home';
            $action = 'page';
        }else{
            UtilFunctions::redirect(Config::$url_base.'/Shop/pagenotfound');    
            exit;
        }
    }
    $params = (isset($array_uri["params"]) ? $array_uri["params"] :  null);
    # inclui o controle na página
    require_once "controllers/{$controller}Controller.php";
    # adiciona a terminação Controller
    # ao nome do controller
    $controller .= 'Controller';

    # instancia o controle
    $controller = new $controller();

    try{                
        # verifica se o método existe no objeto controle
        if (method_exists($controller, $action)) {
            # se existir, executa o método        
            $controller->$action($params);
        }
        else {                
            UtilFunctions::redirect(Config::$url_base.'/Shop/pagenotfound');                
        }
    }catch(Exception $e){
        throw $e;
    }    
} catch (Exception $ex) {    
    $message = preg_replace('/dbname=([^;]+)/i', 'dbname=***', $ex->getMessage());
    $message = preg_replace('/host=([^;]+)/i', 'host=***', $message);
    $message = preg_replace('/port=([^;]+)/i', 'port=***', $message);
    $message = preg_replace('/user(name)?=([^; ]+)/i', 'user=***', $message);
    $log->error('[pdo] connection error ' . json_encode($message));
    UtilFunctions::redirect(Config::$url_base.'/Home/error');  
}
