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

// -- Environment setup --------------------------------------------------------
$SERVER_NAMES = array(
	'xphoto.leenooks.vpn',
);

// Load the core Kohana class
require SYSPATH.'classes/Kohana/Core'.EXT;

if (is_file(APPPATH.'classes/Kohana'.EXT))
{
	// Application extends the core
	require APPPATH.'classes/Kohana'.EXT;
}
else
{
	// Load empty core extension
	require SYSPATH.'classes/Kohana'.EXT;
}

/**
 * Set the default time zone.
 *
 * @link http://kohanaframework.org/guide/using.configuration
 * @link http://www.php.net/manual/timezones
 */
date_default_timezone_set('Australia/Melbourne');

/**
 * Set the default locale.
 *
 * @link http://kohanaframework.org/guide/using.configuration
 * @link http://www.php.net/manual/function.setlocale
 */
setlocale(LC_ALL, 'en_US.utf-8');

/**
 * Enable the Kohana auto-loader.
 *
 * @link http://kohanaframework.org/guide/using.autoloading
 * @link http://www.php.net/manual/function.spl-autoload-register
 */
spl_autoload_register(array('Kohana', 'auto_load'));

/**
 * Optionally, you can enable a compatibility auto-loader for use with
 * older modules that have not been updated for PSR-0.
 *
 * It is recommended to not enable this unless absolutely necessary.
 */
//spl_autoload_register(array('Kohana', 'auto_load_lowercase'));

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

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

/**
 * Set the default language
 */
I18n::lang('en-us');

/**
 * Set Kohana::$environment if a 'KOHANA_ENV' environment variable has been supplied.
 *
 * Note: If you supply an invalid environment name, a PHP warning will be thrown
 * saying "Couldn't find constant Kohana::<INVALID_ENV_NAME>"
 */

/**
 * Set the environment status by the domain.
 */
Kohana::$environment = (! isset($_SERVER['SERVER_NAME']) OR in_array($_SERVER['SERVER_NAME'],$SERVER_NAMES)) ? Kohana::PRODUCTION : Kohana::DEVELOPMENT;

if (isset($_SERVER['KOHANA_ENV']))
{
	Kohana::$environment = constant('Kohana::'.strtoupper($_SERVER['KOHANA_ENV']));
}

/**
 * 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
 * - integer  cache_life  lifetime, in seconds, of items cached              60
 * - boolean  errors      enable or disable error handling                   TRUE
 * - boolean  profile     enable or disable internal profiling               TRUE
 * - boolean  caching     enable or disable internal caching                 FALSE
 * - boolean  expose      set the X-Powered-By header                        FALSE
 */
Kohana::init(array(
	'base_url'   => Kohana::$environment === Kohana::PRODUCTION ? '/' : '/',
	'caching'    => Kohana::$environment === Kohana::PRODUCTION,
	'profile'    => Kohana::$environment !== Kohana::PRODUCTION,
	'index_file' => FALSE,
));

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

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

/**
 * Enable modules. Modules are referenced by a relative or absolute path.
 */
Kohana::modules(array(
	'lnapp'      => MODPATH.'lnapp',      // lnApp Base Application Tools
	// 'oauth'      => MODPATH.'oauth',      // OAuth Module for External Authentication
	// 'auth'       => SMDPATH.'auth',       // Basic authentication
	// 'cache'      => SMDPATH.'cache',      // Caching with multiple backends
	// 'cron'       => SMDPATH.'cron',       // Kohana Cron Module
	// 'codebench'  => SMDPATH.'codebench',  // Benchmarking tool
	'database'   => SMDPATH.'database',   // Database access
	// 'gchart'     => MODPATH.'gchart',     // Google Chart Module
	// 'highchart'  => MODPATH.'highchart',  // Highcharts Chart Module
	// 'image'      => SMDPATH.'image',      // Image manipulation
	// 'khemail'    => SMDPATH.'khemail',    // Email module for Kohana 3 PHP Framework
	'minion'     => SMDPATH.'minion',     // CLI Tasks
	'orm'        => SMDPATH.'orm',        // Object Relationship Mapping
	// 'pagination' => SMDPATH.'pagination', // Kohana Pagination module for Kohana 3 PHP Framework
	// 'unittest'   => SMDPATH.'unittest',   // Unit testing
	// 'userguide'  => SMDPATH.'userguide',  // User guide and API documentation
	// 'xml'        => SMDPATH.'xml',        // XML module for Kohana 3 PHP Framework
	));

/**
 * Enable specalised interfaces
 */
Route::set('sections', '<directory>/<controller>(/<action>(/<id>(/<sid>)))',
	array(
		'directory' => '('.implode('|',array_values(URL::$method_directory)).')'
	))
	->defaults(array(
		'action'     => 'index',
	));

// Static file serving (CSS, JS, images)
Route::set('default/media', 'media(/<file>)', array('file' => '.+'))
	->defaults(array(
		'controller' => 'media',
		'action'     => 'get',
	));

/**
 * 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>)))', array('id'=>'[a-zA-Z0-9_.-]+'))
	->defaults(array(
		'controller' => 'welcome',
		'action'     => 'index',
	));

/**
 * If APC is enabled, and we need to clear the cache
 */
if (file_exists(APPPATH.'cache/CLEAR_APC_CACHE') AND function_exists('apc_clear_cache') AND (PHP_SAPI !== 'cli')) {
	if (! apc_clear_cache() OR ! unlink(APPPATH.'cache/CLEAR_APC_CACHE'))
		throw new Kohana_Exception('Unable to clear the APC cache.');
}

// If we are a CLI, set our session dir
if (PHP_SAPI === 'cli')
	session_save_path('tmp/');
?>