<?php defined('SYSPATH') or die('No direct script access.');

//-- Environment setup --------------------------------------------------------

/**
 * Set the default time zone.
 *
 * @see  http://docs.kohanaphp.com/features/localization#time
 * @see  http://php.net/timezones
 */
date_default_timezone_set('America/Chicago');

/**
 * Enable the Kohana auto-loader.
 *
 * @see  http://docs.kohanaphp.com/features/autoloading
 * @see  http://php.net/spl_autoload_register
 */
spl_autoload_register(array('Kohana', 'auto_load'));

/**
 * Enable the Kohana auto-loader for unserialization.
 *
 * @see  http://php.net/spl_autoload_call
 * @see  http://php.net/manual/var.configuration.php#unserialize-callback-func
 */
ini_set('unserialize_callback_func', 'spl_autoload_call');

/**
 * Set the production status
 */
define('IN_PRODUCTION',FALSE);

//-- Configuration and initialization -----------------------------------------

/**
 * Initialize Kohana, setting the default options.
 *
 * The following options are available:
 *
 * - string   base_url	path, and optionally domain, of your application   NULL
 * - string   index_file  name of your index file, usually "index.php"	   index.php
 * - string   charset	 internal character set used for input and output   utf-8
 * - string   cache_dir   set the internal cache directory				   APPPATH/cache
 * - boolean  errors	  enable or disable error handling				   TRUE
 * - boolean  profile	 enable or disable internal profiling			   TRUE
 * - boolean  caching	 enable or disable internal caching				 FALSE
 */
Kohana::init(array(
	'base_url'   => '/',
	'index_file' => FALSE,
	'profiling'  => ! IN_PRODUCTION,
	'caching'    => IN_PRODUCTION,
));

/**
 * Attach the file write to logging. Multiple writers are supported.
 */
Kohana::$log->attach(new Kohana_Log_File(APPPATH.'logs'));

/**
 * Attach a file reader to config. Multiple readers are supported.
 */
Kohana::$config->attach(new Kohana_Config_File);

/**
 * Enable modules. Modules are referenced by a relative or absolute path.
 */
Kohana::modules(array(
	'database'    => MODPATH.'database',
	'sprig'       => MODPATH.'sprig',
	'sprig-mptt'  => MODPATH.'sprig-mptt',
	'kohanut'     => MODPATH.'kohanut',
	'userguide'   => MODPATH.'userguide',
));

/**
 * Set the routes. Each route must have a minimum of a name, a URI and a set of
 * defaults for the URI.
 */


Route::set('default', '(<controller>(/<action>(/<id>)))')
	->defaults(array(
		'controller' => 'welcome',
		'action'     => 'index',
	));

/**
 * Execute the main request. A source of the URI can be passed, eg: $_SERVER['PATH_INFO'].
 * If no source is specified, the URI will be automatically detected.
 */
try
{
	echo Request::instance()
		->execute()
		->send_headers()
		->response;
}
catch (ReflectionException $e)
{	
	// Call Kohanut
	$path = 'kohanut/view';
	$request = Request::factory($path)->execute();
	
	// Send the headers from the Request singleton
	Request::instance()->send_headers();
	
	// Echo the response
	echo $request->response;

}