<?php



if (isset($_SERVER['SERVER_NAME']) && strtolower($_SERVER['SERVER_NAME']) == 'easyhanzi.com') {
    header("HTTP/1.1 301 Moved Permanently"); 
    header("Location: http://easyhanzi.cozic.net" . $_SERVER['REQUEST_URI']); 
    exit(); 
}



@include "env.php";
if (!defined("ENV")) define("ENV", "local");

define("APPLICATION_TITLE", "Easy Hanzi");

function t($s) {
	return App::getTranslatedString($s);	
}

function _e($s) {
	echo App::getTranslatedString($s);
}

/**
 * The directory in which your application specific resources are located.
 * The application directory must contain the bootstrap.php file.
 *
 * @see  http://kohanaframework.org/guide/about.install#application
 */
$application = 'application';

/**
 * The directory in which your modules are located.
 *
 * @see  http://kohanaframework.org/guide/about.install#modules
 */
$modules = 'modules';

/**
 * The directory in which the Kohana resources are located. The system
 * directory must contain the classes/kohana.php file.
 *
 * @see  http://kohanaframework.org/guide/about.install#system
 */
$system = 'system';

/**
 * The default extension of resource files. If you change this, all resources
 * must be renamed to use the new extension.
 *
 * @see  http://kohanaframework.org/guide/about.install#ext
 */
define('EXT', '.php');

/**
 * Set the PHP error reporting level. If you set this in php.ini, you remove this.
 * @see  http://php.net/error_reporting
 *
 * When developing your application, it is highly recommended to enable notices
 * and strict warnings. Enable them by using: E_ALL | E_STRICT
 *
 * In a production environment, it is safe to ignore notices and strict warnings.
 * Disable them by using: E_ALL ^ E_NOTICE
 *
 * When using a legacy application with PHP >= 5.3, it is recommended to disable
 * deprecated notices. Disable with: E_ALL & ~E_DEPRECATED
 */
error_reporting((E_ALL | E_STRICT) & ~E_DEPRECATED);

/**
 * End of standard configuration! Changing any of the code below should only be
 * attempted by those with a working knowledge of Kohana internals.
 *
 * @see  http://kohanaframework.org/guide/using.configuration
 */

// Set the full path to the docroot
define('DOCROOT', realpath(dirname(__FILE__)).DIRECTORY_SEPARATOR);

// Make the application relative to the docroot, for symlink'd index.php
if ( ! is_dir($application) AND is_dir(DOCROOT.$application))
	$application = DOCROOT.$application;

// Make the modules relative to the docroot, for symlink'd index.php
if ( ! is_dir($modules) AND is_dir(DOCROOT.$modules))
	$modules = DOCROOT.$modules;

// Make the system relative to the docroot, for symlink'd index.php
if ( ! is_dir($system) AND is_dir(DOCROOT.$system))
	$system = DOCROOT.$system;

// Define the absolute paths for configured directories
define('APPPATH', realpath($application).DIRECTORY_SEPARATOR);
define('MODPATH', realpath($modules).DIRECTORY_SEPARATOR);
define('SYSPATH', realpath($system).DIRECTORY_SEPARATOR);

// Clean up the configuration vars
unset($application, $modules, $system);

if (file_exists('install'.EXT))
{
	// Load the installation check
	return include 'install'.EXT;
}

/**
 * Define the start time of the application, used for profiling.
 */
if ( ! defined('KOHANA_START_TIME'))
{
	define('KOHANA_START_TIME', microtime(TRUE));
}

/**
 * Define the memory usage at the start of the application, used for profiling.
 */
if ( ! defined('KOHANA_START_MEMORY'))
{
	define('KOHANA_START_MEMORY', memory_get_usage());
}

/**
 * Permanently redirect "www." URLs to no-www URLs
 */
require_once APPPATH . "classes/utils.php";
Utils::redirectWwwToNoWww();

if (ENV == "live") {
	try {
		// Bootstrap the application
		require APPPATH.'bootstrap'.EXT;
		
		/**
		 * 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.
		 */

		echo Request::factory()
			->execute()
			->send_headers()
			->body();
	} catch(Exception $e) {
		$error = Request::current() ? AutoConvertImage::processUrl(Request::current()->url()) : '';
		
		if ($error == "ok") {
			
		} else {
		
			$template = View::factory("template");
			$template->set("baseUrl", Kohana::$base_url);
			$template->set("pageTitle", sprintf(_("Error %d"), $e->getCode()));
			$template->set("enableJQuery", false);
			
			$header = View::factory("header");
			$header->set("baseUrl", Kohana::$base_url);
			
			$footer = View::factory("footer");
			
			$view = View::factory('error');
			$view->set("error", $e);
			
			$template->set("header", $header->render());
			$template->set("content", $view->render());
			$template->set("footer", $footer->render());
				
			$a = array();
			$a["400"] = "Bad request";
			$a["401"] = "Unauthorized";
			$a["402"] = "Payment Required";
			$a["403"] = "Forbidden";
			$a["404"] = "Page Not Found";
			$a["405"] = "Method Not Allowed";
			$a["406"] = "Not Acceptable";
			$a["407"] = "Proxy Authentication Required";
			$a["408"] = "Request Timeout";
			$a["409"] = "Conflict";
			$a["410"] = "Gone";
			$a["411"] = "Length Required";
			$a["412"] = "Precondition Failed";
			$a["413"] = "Request Entity Too Large";
			$a["414"] = "Request-URL Too Long";
			$a["415"] = "Unsupported Media Type";
			$a["416"] = "Requested Range Not Satisfiable";
			$a["417"] = "Expectation Failed";
			$a["422"] = "Unprocessable entity";
			$a["423"] = "Locked";
			$a["424"] = "Failed dependency";
			
			$httpErrorMessage = isset($a[$e->getCode()]) ? $a[$e->getCode()] : "";
			
			header('HTTP/1.0 ' . $e->getCode() . " " . $httpErrorMessage);
			echo $template->render();	
			
		}
		
	}	

} else {

	// Bootstrap the application
	require APPPATH.'bootstrap'.EXT;
	
	/**
	 * 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.
	 */
	echo Request::factory()
		->execute()
		->send_headers()
		->body();
	
}

