<?php defined('SYSPATH') or die('No direct script access.');
/**
* Kohana class.
*
* Kohana core file with some modifications.
*
* @extends Kohana_Core
* @package Kohana Core
*/
class Kohana extends Kohana_Core {
/**
* Mod of Kohana_Core for work with the new bootstrap.php file.
*
* @since 2.0.0
* @access public
* @static
* @param array $settings (default: NULL)
* @return void
*/
public static function init(array $settings = NULL) {
if (Kohana::$_init) {
// Do not allow execution twice
return;
}
// Kohana is now initialized
Kohana::$_init = TRUE;
if (isset($settings['profile'])) {
// Enable profiling
Kohana::$profiling = (bool) $settings['profile'];
}
// Start an output buffer
ob_start();
if (isset($settings['errors'])) {
// Enable error handling
Kohana::$errors = (bool) $settings['errors'];
}
if (Kohana::$errors === TRUE) {
// Enable Kohana exception handling, adds stack traces and error source.
set_exception_handler(array('Kohana_Exception', 'handler'));
// Enable Kohana error handling, converts all PHP errors to exceptions.
set_error_handler(array('Kohana', 'error_handler'));
}
// Enable the Kohana shutdown handler, which catches E_FATAL errors.
register_shutdown_function(array('Kohana', 'shutdown_handler'));
if (ini_get('register_globals')) {
// Reverse the effects of register_globals
Kohana::globals();
}
if (isset($settings['expose'])) {
Kohana::$expose = (bool) $settings['expose'];
}
// Determine if we are running in a command line environment
Kohana::$is_cli = (PHP_SAPI === 'cli');
// Determine if we are running in a Windows environment
Kohana::$is_windows = (DIRECTORY_SEPARATOR === '\\');
// Determine if we are running in safe mode
Kohana::$safe_mode = (bool) ini_get('safe_mode');
if (isset($settings['cache_dir'])) {
if ( ! is_dir($settings['cache_dir'])) {
try {
// Create the cache directory
mkdir($settings['cache_dir'], 0755, TRUE);
// Set permissions (must be manually set to fix umask issues)
chmod($settings['cache_dir'], 0755);
}
catch (Exception $e) {
throw new Kohana_Exception('Could not create cache directory :dir',
array(':dir' => Debug::path($settings['cache_dir'])));
}
}
// Set the cache directory path
Kohana::$cache_dir = realpath($settings['cache_dir']);
}
else {
// Use the default cache directory
Kohana::$cache_dir = APPPATH.'cache';
}
if ( ! is_writable(Kohana::$cache_dir)) {
throw new Kohana_Exception('Directory :dir must be writable',
array(':dir' => Debug::path(Kohana::$cache_dir)));
}
if (isset($settings['cache_life'])) {
// Set the default cache lifetime
Kohana::$cache_life = (int) $settings['cache_life'];
}
if (isset($settings['caching'])) {
// Enable or disable internal caching
Kohana::$caching = (bool) $settings['caching'];
}
if (Kohana::$caching === TRUE) {
// Load the file path cache
Kohana::$_files = Kohana::cache('Kohana::find_file()');
}
if (isset($settings['charset'])) {
// Set the system character set
Kohana::$charset = strtolower($settings['charset']);
}
if (function_exists('mb_internal_encoding')) {
// Set the MB extension encoding to the same character set
mb_internal_encoding(Kohana::$charset);
}
if (isset($settings['base_url'])) {
// Set the base URL
Kohana::$base_url = rtrim($settings['base_url'], '/').'/';
}
if (isset($settings['index_file'])) {
// Set the index file
Kohana::$index_file = trim($settings['index_file'], '/');
}
// Determine if the extremely evil magic quotes are enabled
Kohana::$magic_quotes = (bool) get_magic_quotes_gpc();
// Sanitize all request variables
$_GET = Kohana::sanitize($_GET);
$_POST = Kohana::sanitize($_POST);
$_COOKIE = Kohana::sanitize($_COOKIE);
// Load the logger
if (!Kohana::$log) {
Kohana::$log = Log::instance();
}
// Load the config
if (!Kohana::$config) {
Kohana::$config = new Kohana_Config;
}
}
}
<?php defined('SYSPATH') or die('No direct script access.');
// -- Environment setup --------------------------------------------------------
// 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.
*
* @see http://kohanaframework.org/guide/using.configuration
* @see http://php.net/timezones
*/
date_default_timezone_set('America/Argentina/Jujuy');
/**
* Set the default locale.
*
* @see http://kohanaframework.org/guide/using.configuration
* @see http://php.net/setlocale
*/
$locales = setlocale(LC_ALL, 'es_AR.utf-8', 'es_LA.utf-8', 'es_ES.utf-8');
/**
* Enable the Kohana auto-loader.
*
* @see http://kohanaframework.org/guide/using.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');
// -- Configuration and initialization -----------------------------------------
/**
* Set the default language
*/
I18n::lang('es-ar');
/**
* 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>"
*/
if (isset($_SERVER['KOHANA_ENV'])) {
$env = strtolower($_SERVER['KOHANA_ENV']);
Kohana::$environment = constant('Kohana::' . $env);
} else {
$env = 'development';
}
/**
* Attach a file reader to config. Multiple readers are supported.
*/
Kohana::$config = new Config;
Kohana::$config->attach(new Config_File);
if (Kohana::$environment !== Kohana::PRODUCTION) {
Kohana::$config->attach(new Config_File('config/environments/' . $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
* - 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(Kohana::$config->load('init')->as_array());
/**
* Attach the file write to logging. Multiple writers are supported.
*/
Kohana::$log->attach(new Log_File(APPPATH.'logs'));
/**
* Enable modules. Modules are referenced by a relative or absolute path.
*/
Kohana::modules(Kohana::$config->load('modules')->as_array());
/**
* Cookie salt is used to make sure cookies haven't been modified by the client
*
* @TODO: Change this for each project
*/
Cookie::$salt = '27* l|Jfi^gDP{a)S3}<^_Etl4l?fyj}wQ9-#^NZ`=j90&)9|_Z(2W!QRR}vY1DP';
/**
* Include default routes.
*
* Default routes are located in application/routes/default.php
*/
include Kohana::find_file('routes', 'default');
/**
* Include the routes for the current environment.
*/
if ($routes = Kohana::find_file('routes', $env)) {
include $routes;
}