<?php
/*
|--------------------------------------------------------------------------
| utf-8
|--------------------------------------------------------------------------
*/
header('Content-Type: text/html; charset=utf-8');

if(!defined('DEVER_PROJECT'))
{
	define('DEVER_PROJECT', 'default');
}

/*
|--------------------------------------------------------------------------
| date rpc
|--------------------------------------------------------------------------
*/
date_default_timezone_set("PRC");

/*
|--------------------------------------------------------------------------
| start time
|--------------------------------------------------------------------------
*/
define('DEVER_START', microtime());

/*
|--------------------------------------------------------------------------
| DEVER time
|--------------------------------------------------------------------------
*/
define('DEVER_TIME', $_SERVER['REQUEST_TIME']);

/*
|--------------------------------------------------------------------------
| DEVER path
|--------------------------------------------------------------------------
*/
define('DEVER_PATH', dirname(__FILE__) . DIRECTORY_SEPARATOR);

//require DEVER_PATH . 'include.php';

/*
|--------------------------------------------------------------------------
| DEVER project host
|--------------------------------------------------------------------------
*/
if(isset($_SERVER['HTTP_HOST']))
{
	define('DEVER_APP_HOST', 'http://' . $_SERVER['HTTP_HOST'] . ($_SERVER['SCRIPT_NAME'] ? substr($_SERVER['SCRIPT_NAME'], 0, strpos($_SERVER['SCRIPT_NAME'], 'index.php')) : DIRECTORY_SEPARATOR));
}
else
{
	define('DEVER_APP_HOST', '');
}

/*
|--------------------------------------------------------------------------
| autoload
|--------------------------------------------------------------------------
*/
if(is_file(DEVER_PATH . 'build/dever.phar1'))
{
	require DEVER_PATH . 'build/dever.phar';

	if(is_file(DEVER_PATH . 'composer.json'))
	{
		require DEVER_PATH . 'vendor/autoload.php';
	}
}
else
{
	require DEVER_PATH . 'vendor/autoload.php';
}

/*
|--------------------------------------------------------------------------
| init input
|--------------------------------------------------------------------------
*/
Dever\Http\Input::init();

/*
|--------------------------------------------------------------------------
| load base config
|--------------------------------------------------------------------------
*/
Dever\Config\Load::get('base');

/*
|--------------------------------------------------------------------------
| load debug config
|--------------------------------------------------------------------------
*/
Dever\Config\Load::get('debug');

if(Dever\Config\Load::$global['debug']['error'])
{
    /*
    |----------------------------------------------------------------------
    | error
    |----------------------------------------------------------------------
    */
  	Dever\Debug\Process::report();
}

/*
|--------------------------------------------------------------------------
| DEVER app name
|--------------------------------------------------------------------------
*/
if(!defined('DEVER_APP_NAME'))
{
	$temp = explode(Dever\Config\Load::$global['base']['path'], DEVER_APP_PATH);
	define('DEVER_APP_NAME', chop(str_replace(DIRECTORY_SEPARATOR, '_', end($temp)), '_'));
}

/*
|--------------------------------------------------------------------------
| DEVER header cache
|--------------------------------------------------------------------------
*/
if(isset(Dever\Config\Load::$global['base']['header-cache']) && Dever\Config\Load::$global['base']['header-cache'] == true)
{
	header("Expires: -1");
	header("Cache-Control: no-store, private, post-check=0, pre-check=0, max-age=0", FALSE);
	header("Pragma: no-cache");
}

/*
|--------------------------------------------------------------------------
| load host config
|--------------------------------------------------------------------------
*/
Dever\Config\Load::get('host');

/*
|--------------------------------------------------------------------------
| project register
|--------------------------------------------------------------------------
*/
Dever\Config\Project::register();

/*
|--------------------------------------------------------------------------
| route
|--------------------------------------------------------------------------
*/
$route = new Dever\Routing\Route;

/*
|--------------------------------------------------------------------------
| route run and out
|--------------------------------------------------------------------------
*/
if(!defined('DEVER_DAEMON'))
{
	$route->runing()->output();
}