<?php
/*
 * Necessario desativar eaccelerator no php pois nao e compativel com Closures
 * https://github.com/eaccelerator/eaccelerator/issues/12
 * A lib Unserscore.php depende de Closures para funcionar
 */
ini_set('eaccelerator.enable', 0);


/**
 * Desabilita emissão de erro e warnings
 */
error_reporting(0);


/**
 * Inclui arquivo de constantes
 */
include './deploy.php';

/**
 * Defrine o ambiente da aplicação
 */
defined('APPLICATION_ENV') || define('APPLICATION_ENV', APPLICATION_ENV_PRODUCTION);

require_once APPLICATION_PATH . '/config.php';

if (APPLICATION_ENV == APPLICATION_ENV_PRODUCTION) {
    /**
     * No navegador Chrome esta sendo perdida a session de login na loja por ter redirects de múltiplos dominios 
     * dentro do iframe na finalização de pagamento da E-REDE 
     * 
     * @see https://stackoverflow.com/questions/63539472/chrome-not-keeping-my-session-vars-when-coming-from-3rd-party-iframe-but-works
     */
    ini_set('session.cookie_samesite', 'None');
    ini_set('session.cookie_secure', 'true');
} else if (APPLICATION_ENV == APPLICATION_ENV_DEVELOPMENT) {
    error_reporting(E_ALL);
}


/**
 * Redirecionamento para https
*/
if (isset($_SERVER['REQUEST_SCHEME'])) {
    $protocolo = $_SERVER['REQUEST_SCHEME'];
} elseif (isset($_SERVER['HTTPS']) and $_SERVER['HTTPS'] == 'on') {
    $protocolo = 'https';
} else {
     $protocolo = 'http';
}

if ($protocolo != 'https' && APPLICATION_ENV == APPLICATION_ENV_PRODUCTION) {
    $dominioRequisitado = preg_replace('#:.*#', '', $_SERVER['HTTP_HOST']);
    $url = "https://" . $dominioRequisitado . $_SERVER['REQUEST_URI'];
    header("location:$url");
    exit;
}

/** Zend_Application */
require_once PATH_ZEND . '/Zend/Application.php';

// Create application, bootstrap, and run
$application = new Zend_Application(
        APPLICATION_ENV, APPLICATION_PATH . '/configs/application.ini'
);

try{
    $app = $application->bootstrap();
    $urlRedirect = $protocolo . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
    $url = Model_UrlRedirect::findFrom($urlRedirect);
    
    if(!empty($url)) {
        Model_UrlRedirect::addNrRedirecionamento($url['cdUrlRedirect']);
        header("location:{$url['stUrlTo']}", true, $url['inTipo']);
        exit;
    }
    
    $app->run();
} catch (Throwable $th) {
    http_response_code(500);
    throw $th;
}