<?php
<?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.
*
* @link http://k...content-available-to-author-only...k.org/guide/using.configuration
* @link http://w...content-available-to-author-only...p.net/manual/timezones
*/
#date_default_timezone_set('America/Chicago');
date_default_timezone_set('Asia/Yekaterinburg');
/**
* Set the default locale.
*
* @link http://k...content-available-to-author-only...k.org/guide/using.configuration
* @link http://w...content-available-to-author-only...p.net/manual/function.setlocale
*/
setlocale(LC_ALL, 'en_US.utf-8');
/**
* Enable the Kohana auto-loader.
*
* @link http://k...content-available-to-author-only...k.org/guide/using.autoloading
* @link http://w...content-available-to-author-only...p.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://w...content-available-to-author-only...p.net/manual/function.spl-autoload-call
* @link http://w...content-available-to-author-only...p.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');
#I18n::lang('ru-ru');
/**
* 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>"
*/
# PRODUCTION готовый проект
# STAGING подготовка
# TESTING тестирование
# DEVELOPMENT разработка
Kohana::$environment=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/',
'index_file' => false,
'errors' => TRUE
));
/**
* 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(
// 'auth' => MODPATH.'auth', // Basic authentication
// 'cache' => MODPATH.'cache', // Caching with multiple backends
// 'codebench' => MODPATH.'codebench', // Benchmarking tool
// 'database' => MODPATH.'database', // Database access
// 'image' => MODPATH.'image', // Image manipulation
// 'minion' => MODPATH.'minion', // CLI Tasks
// 'orm' => MODPATH.'orm', // Object Relationship Mapping
// 'unittest' => MODPATH.'unittest', // Unit testing
// 'userguide' => MODPATH.'userguide', // User guide and API documentation
'twig' => MODPATH.'twig', // Twig templating engine
'pagination' => MODPATH.'pagination', // Pagination
'menu' => MODPATH.'menu', // Navigation1
//'navigation' => MODPATH.'navigation', // Navigation
));
/**
* Set the routes. Each route must have a minimum of a name, a URI and a set of
* defaults for the URI.
*/
// Route::set('about', 'about')
// ->defaults(array(
// 'controller' => 'static',
// 'action' => 'about',
// ));
// Route::set('contacts', 'contacts')
// ->defaults(array(
// 'controller' => 'static',
// 'action' => 'contacts',
// ));
Route::set('static','<action>(/<id>)',array('action'=>'about|contacts'))
->defaults(array(
'controller' => 'static',
));
Route::set('comments', 'comments/<id>',array('id'=>'.+'))
->defaults(array(
'controller' => 'comments',
'action' => 'index',
));
/*Route::set('articles', 'articles(/<id>)',array('id'=>'.+'))
->defaults(array(
'controller' => 'articles',
'action' => 'index',
));*/
Route::set('category', 'category(/<name>(/<page>))',array('name' => '[a-zA-Z_-]+','page'=>'[0-9]+')) // проблемное место
->defaults(array(
'controller' => 'category',
'action' => 'index',
));
Route::set('articles', 'articles(/page/<num>)',array('num' => '[0-9]+'))
->defaults(array(
'controller' => 'articles',
'action' => 'index',
));
Route::set('default', '(<controller>(/<action>(/<id>)))')
->defaults(array(
'controller' => 'index',
'action' => 'index',
));
Cookie::$salt = 'foobar';
// your code goes here
PD9waHAKPD9waHAgZGVmaW5lZCgnU1lTUEFUSCcpIG9yIGRpZSgnTm8gZGlyZWN0IHNjcmlwdCBhY2Nlc3MuJyk7CgovLyAtLSBFbnZpcm9ubWVudCBzZXR1cCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLy8gTG9hZCB0aGUgY29yZSBLb2hhbmEgY2xhc3MKcmVxdWlyZSBTWVNQQVRILidjbGFzc2VzL0tvaGFuYS9Db3JlJy5FWFQ7CgppZiAoaXNfZmlsZShBUFBQQVRILidjbGFzc2VzL0tvaGFuYScuRVhUKSkKewoJLy8gQXBwbGljYXRpb24gZXh0ZW5kcyB0aGUgY29yZQoJcmVxdWlyZSBBUFBQQVRILidjbGFzc2VzL0tvaGFuYScuRVhUOwp9CmVsc2UKewoJLy8gTG9hZCBlbXB0eSBjb3JlIGV4dGVuc2lvbgoJcmVxdWlyZSBTWVNQQVRILidjbGFzc2VzL0tvaGFuYScuRVhUOwp9CgovKioKICogU2V0IHRoZSBkZWZhdWx0IHRpbWUgem9uZS4KICoKICogQGxpbmsgaHR0cDovL2suLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmsub3JnL2d1aWRlL3VzaW5nLmNvbmZpZ3VyYXRpb24KICogQGxpbmsgaHR0cDovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnAubmV0L21hbnVhbC90aW1lem9uZXMKICovCiNkYXRlX2RlZmF1bHRfdGltZXpvbmVfc2V0KCdBbWVyaWNhL0NoaWNhZ28nKTsKZGF0ZV9kZWZhdWx0X3RpbWV6b25lX3NldCgnQXNpYS9ZZWthdGVyaW5idXJnJyk7CgovKioKICogU2V0IHRoZSBkZWZhdWx0IGxvY2FsZS4KICoKICogQGxpbmsgaHR0cDovL2suLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmsub3JnL2d1aWRlL3VzaW5nLmNvbmZpZ3VyYXRpb24KICogQGxpbmsgaHR0cDovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnAubmV0L21hbnVhbC9mdW5jdGlvbi5zZXRsb2NhbGUKICovCnNldGxvY2FsZShMQ19BTEwsICdlbl9VUy51dGYtOCcpOwoKLyoqCiAqIEVuYWJsZSB0aGUgS29oYW5hIGF1dG8tbG9hZGVyLgogKgogKiBAbGluayBodHRwOi8vay4uLmNvbnRlbnQtYXZhaWxhYmxlLXRvLWF1dGhvci1vbmx5Li4uay5vcmcvZ3VpZGUvdXNpbmcuYXV0b2xvYWRpbmcKICogQGxpbmsgaHR0cDovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnAubmV0L21hbnVhbC9mdW5jdGlvbi5zcGwtYXV0b2xvYWQtcmVnaXN0ZXIKICovCnNwbF9hdXRvbG9hZF9yZWdpc3RlcihhcnJheSgnS29oYW5hJywgJ2F1dG9fbG9hZCcpKTsKCi8qKgogKiBPcHRpb25hbGx5LCB5b3UgY2FuIGVuYWJsZSBhIGNvbXBhdGliaWxpdHkgYXV0by1sb2FkZXIgZm9yIHVzZSB3aXRoCiAqIG9sZGVyIG1vZHVsZXMgdGhhdCBoYXZlIG5vdCBiZWVuIHVwZGF0ZWQgZm9yIFBTUi0wLgogKgogKiBJdCBpcyByZWNvbW1lbmRlZCB0byBub3QgZW5hYmxlIHRoaXMgdW5sZXNzIGFic29sdXRlbHkgbmVjZXNzYXJ5LgogKi8KLy9zcGxfYXV0b2xvYWRfcmVnaXN0ZXIoYXJyYXkoJ0tvaGFuYScsICdhdXRvX2xvYWRfbG93ZXJjYXNlJykpOwoKLyoqCiAqIEVuYWJsZSB0aGUgS29oYW5hIGF1dG8tbG9hZGVyIGZvciB1bnNlcmlhbGl6YXRpb24uCiAqCiAqIEBsaW5rIGh0dHA6Ly93Li4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5wLm5ldC9tYW51YWwvZnVuY3Rpb24uc3BsLWF1dG9sb2FkLWNhbGwKICogQGxpbmsgaHR0cDovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnAubmV0L21hbnVhbC92YXIuY29uZmlndXJhdGlvbiN1bnNlcmlhbGl6ZS1jYWxsYmFjay1mdW5jCiAqLwppbmlfc2V0KCd1bnNlcmlhbGl6ZV9jYWxsYmFja19mdW5jJywgJ3NwbF9hdXRvbG9hZF9jYWxsJyk7CgovLyAtLSBDb25maWd1cmF0aW9uIGFuZCBpbml0aWFsaXphdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKLyoqCiAqIFNldCB0aGUgZGVmYXVsdCBsYW5ndWFnZQogKi8KSTE4bjo6bGFuZygnZW4tdXMnKTsKI0kxOG46OmxhbmcoJ3J1LXJ1Jyk7Ci8qKgogKiBTZXQgS29oYW5hOjokZW52aXJvbm1lbnQgaWYgYSAnS09IQU5BX0VOVicgZW52aXJvbm1lbnQgdmFyaWFibGUgaGFzIGJlZW4gc3VwcGxpZWQuCiAqCiAqIE5vdGU6IElmIHlvdSBzdXBwbHkgYW4gaW52YWxpZCBlbnZpcm9ubWVudCBuYW1lLCBhIFBIUCB3YXJuaW5nIHdpbGwgYmUgdGhyb3duCiAqIHNheWluZyAiQ291bGRuJ3QgZmluZCBjb25zdGFudCBLb2hhbmE6OjxJTlZBTElEX0VOVl9OQU1FPiIKICovCiMgUFJPRFVDVElPTiDQs9C+0YLQvtCy0YvQuSDQv9GA0L7QtdC60YIKIyBTVEFHSU5HINC/0L7QtNCz0L7RgtC+0LLQutCwCiMgVEVTVElORyDRgtC10YHRgtC40YDQvtCy0LDQvdC40LUKIyBERVZFTE9QTUVOVCDRgNCw0LfRgNCw0LHQvtGC0LrQsAoKS29oYW5hOjokZW52aXJvbm1lbnQ9S29oYW5hOjpERVZFTE9QTUVOVDsKaWYgKGlzc2V0KCRfU0VSVkVSWydLT0hBTkFfRU5WJ10pKQp7CglLb2hhbmE6OiRlbnZpcm9ubWVudCA9IGNvbnN0YW50KCdLb2hhbmE6Oicuc3RydG91cHBlcigkX1NFUlZFUlsnS09IQU5BX0VOViddKSk7Cn0KCi8qKgogKiBJbml0aWFsaXplIEtvaGFuYSwgc2V0dGluZyB0aGUgZGVmYXVsdCBvcHRpb25zLgogKgogKiBUaGUgZm9sbG93aW5nIG9wdGlvbnMgYXJlIGF2YWlsYWJsZToKICoKICogLSBzdHJpbmcgICBiYXNlX3VybCAgICBwYXRoLCBhbmQgb3B0aW9uYWxseSBkb21haW4sIG9mIHlvdXIgYXBwbGljYXRpb24gICBOVUxMCiAqIC0gc3RyaW5nICAgaW5kZXhfZmlsZSAgbmFtZSBvZiB5b3VyIGluZGV4IGZpbGUsIHVzdWFsbHkgImluZGV4LnBocCIgICAgICAgaW5kZXgucGhwCiAqIC0gc3RyaW5nICAgY2hhcnNldCAgICAgaW50ZXJuYWwgY2hhcmFjdGVyIHNldCB1c2VkIGZvciBpbnB1dCBhbmQgb3V0cHV0ICAgdXRmLTgKICogLSBzdHJpbmcgICBjYWNoZV9kaXIgICBzZXQgdGhlIGludGVybmFsIGNhY2hlIGRpcmVjdG9yeSAgICAgICAgICAgICAgICAgICBBUFBQQVRIL2NhY2hlCiAqIC0gaW50ZWdlciAgY2FjaGVfbGlmZSAgbGlmZXRpbWUsIGluIHNlY29uZHMsIG9mIGl0ZW1zIGNhY2hlZCAgICAgICAgICAgICAgNjAKICogLSBib29sZWFuICBlcnJvcnMgICAgICBlbmFibGUgb3IgZGlzYWJsZSBlcnJvciBoYW5kbGluZyAgICAgICAgICAgICAgICAgICBUUlVFCiAqIC0gYm9vbGVhbiAgcHJvZmlsZSAgICAgZW5hYmxlIG9yIGRpc2FibGUgaW50ZXJuYWwgcHJvZmlsaW5nICAgICAgICAgICAgICAgVFJVRQogKiAtIGJvb2xlYW4gIGNhY2hpbmcgICAgIGVuYWJsZSBvciBkaXNhYmxlIGludGVybmFsIGNhY2hpbmcgICAgICAgICAgICAgICAgIEZBTFNFCiAqIC0gYm9vbGVhbiAgZXhwb3NlICAgICAgc2V0IHRoZSBYLVBvd2VyZWQtQnkgaGVhZGVyICAgICAgICAgICAgICAgICAgICAgICAgRkFMU0UKICovCktvaGFuYTo6aW5pdChhcnJheSgKCSdiYXNlX3VybCcgICA9PiAnL2tvaGFuYS8nLAoJJ2luZGV4X2ZpbGUnID0+IGZhbHNlLAoJJ2Vycm9ycycgPT4gVFJVRQopKTsKCi8qKgogKiBBdHRhY2ggdGhlIGZpbGUgd3JpdGUgdG8gbG9nZ2luZy4gTXVsdGlwbGUgd3JpdGVycyBhcmUgc3VwcG9ydGVkLgogKi8KS29oYW5hOjokbG9nLT5hdHRhY2gobmV3IExvZ19GaWxlKEFQUFBBVEguJ2xvZ3MnKSk7CgovKioKICogQXR0YWNoIGEgZmlsZSByZWFkZXIgdG8gY29uZmlnLiBNdWx0aXBsZSByZWFkZXJzIGFyZSBzdXBwb3J0ZWQuCiAqLwpLb2hhbmE6OiRjb25maWctPmF0dGFjaChuZXcgQ29uZmlnX0ZpbGUpOwoKLyoqCiAqIEVuYWJsZSBtb2R1bGVzLiBNb2R1bGVzIGFyZSByZWZlcmVuY2VkIGJ5IGEgcmVsYXRpdmUgb3IgYWJzb2x1dGUgcGF0aC4KICovCktvaGFuYTo6bW9kdWxlcyhhcnJheSgKCS8vICdhdXRoJyAgICAgICA9PiBNT0RQQVRILidhdXRoJywgICAgICAgLy8gQmFzaWMgYXV0aGVudGljYXRpb24KCS8vICdjYWNoZScgICAgICA9PiBNT0RQQVRILidjYWNoZScsICAgICAgLy8gQ2FjaGluZyB3aXRoIG11bHRpcGxlIGJhY2tlbmRzCgkvLyAnY29kZWJlbmNoJyAgPT4gTU9EUEFUSC4nY29kZWJlbmNoJywgIC8vIEJlbmNobWFya2luZyB0b29sCgkvLyAnZGF0YWJhc2UnICAgPT4gTU9EUEFUSC4nZGF0YWJhc2UnLCAgIC8vIERhdGFiYXNlIGFjY2VzcwoJLy8gJ2ltYWdlJyAgICAgID0+IE1PRFBBVEguJ2ltYWdlJywgICAgICAvLyBJbWFnZSBtYW5pcHVsYXRpb24KCS8vICdtaW5pb24nICAgICA9PiBNT0RQQVRILidtaW5pb24nLCAgICAgLy8gQ0xJIFRhc2tzCgkvLyAnb3JtJyAgICAgICAgPT4gTU9EUEFUSC4nb3JtJywgICAgICAgIC8vIE9iamVjdCBSZWxhdGlvbnNoaXAgTWFwcGluZwoJLy8gJ3VuaXR0ZXN0JyAgID0+IE1PRFBBVEguJ3VuaXR0ZXN0JywgICAvLyBVbml0IHRlc3RpbmcKCS8vICd1c2VyZ3VpZGUnICA9PiBNT0RQQVRILid1c2VyZ3VpZGUnLCAgLy8gVXNlciBndWlkZSBhbmQgQVBJIGRvY3VtZW50YXRpb24KCSAndHdpZycgICAgICAgPT4gTU9EUEFUSC4ndHdpZycsICAgICAgIC8vIFR3aWcgdGVtcGxhdGluZyBlbmdpbmUKCSAncGFnaW5hdGlvbicgPT4gTU9EUEFUSC4ncGFnaW5hdGlvbicsIC8vIFBhZ2luYXRpb24KCSAnbWVudScgPT4gTU9EUEFUSC4nbWVudScsIC8vIE5hdmlnYXRpb24xCgkgLy8nbmF2aWdhdGlvbicgPT4gTU9EUEFUSC4nbmF2aWdhdGlvbicsIC8vIE5hdmlnYXRpb24KCSkpOwoKLyoqCiAqIFNldCB0aGUgcm91dGVzLiBFYWNoIHJvdXRlIG11c3QgaGF2ZSBhIG1pbmltdW0gb2YgYSBuYW1lLCBhIFVSSSBhbmQgYSBzZXQgb2YKICogZGVmYXVsdHMgZm9yIHRoZSBVUkkuCiAqLwovLyBSb3V0ZTo6c2V0KCdhYm91dCcsICdhYm91dCcpCi8vIAktPmRlZmF1bHRzKGFycmF5KAovLyAJCSdjb250cm9sbGVyJyA9PiAnc3RhdGljJywKLy8gCQknYWN0aW9uJyAgICAgPT4gJ2Fib3V0JywKLy8gCSkpOwovLyBSb3V0ZTo6c2V0KCdjb250YWN0cycsICdjb250YWN0cycpCi8vIAktPmRlZmF1bHRzKGFycmF5KAovLyAJCSdjb250cm9sbGVyJyA9PiAnc3RhdGljJywKLy8gCQknYWN0aW9uJyAgICAgPT4gJ2NvbnRhY3RzJywKLy8gCSkpOwpSb3V0ZTo6c2V0KCdzdGF0aWMnLCc8YWN0aW9uPigvPGlkPiknLGFycmF5KCdhY3Rpb24nPT4nYWJvdXR8Y29udGFjdHMnKSkKCS0+ZGVmYXVsdHMoYXJyYXkoCgkJJ2NvbnRyb2xsZXInID0+ICdzdGF0aWMnLAoJKSk7ClJvdXRlOjpzZXQoJ2NvbW1lbnRzJywgJ2NvbW1lbnRzLzxpZD4nLGFycmF5KCdpZCc9PicuKycpKQoJLT5kZWZhdWx0cyhhcnJheSgKCQknY29udHJvbGxlcicgPT4gJ2NvbW1lbnRzJywKCQknYWN0aW9uJyAgICAgPT4gJ2luZGV4JywKCSkpOwovKlJvdXRlOjpzZXQoJ2FydGljbGVzJywgJ2FydGljbGVzKC88aWQ+KScsYXJyYXkoJ2lkJz0+Jy4rJykpCgktPmRlZmF1bHRzKGFycmF5KAoJCSdjb250cm9sbGVyJyA9PiAnYXJ0aWNsZXMnLAoJCSdhY3Rpb24nICAgICA9PiAnaW5kZXgnLAoJKSk7Ki8KUm91dGU6OnNldCgnY2F0ZWdvcnknLCAnY2F0ZWdvcnkoLzxuYW1lPigvPHBhZ2U+KSknLGFycmF5KCduYW1lJyA9PiAnW2EtekEtWl8tXSsnLCdwYWdlJz0+J1swLTldKycpKSAvLyDQv9GA0L7QsdC70LXQvNC90L7QtSDQvNC10YHRgtC+CgktPmRlZmF1bHRzKGFycmF5KAoJCSdjb250cm9sbGVyJyA9PiAnY2F0ZWdvcnknLAoJCSdhY3Rpb24nICAgICA9PiAnaW5kZXgnLAoJKSk7ClJvdXRlOjpzZXQoJ2FydGljbGVzJywgJ2FydGljbGVzKC9wYWdlLzxudW0+KScsYXJyYXkoJ251bScgPT4gJ1swLTldKycpKQoJLT5kZWZhdWx0cyhhcnJheSgKCQknY29udHJvbGxlcicgPT4gJ2FydGljbGVzJywKCQknYWN0aW9uJyAgICAgPT4gJ2luZGV4JywKCSkpOwkKUm91dGU6OnNldCgnZGVmYXVsdCcsICcoPGNvbnRyb2xsZXI+KC88YWN0aW9uPigvPGlkPikpKScpCgktPmRlZmF1bHRzKGFycmF5KAoJCSdjb250cm9sbGVyJyA9PiAnaW5kZXgnLAoJCSdhY3Rpb24nICAgICA9PiAnaW5kZXgnLAoJKSk7CkNvb2tpZTo6JHNhbHQgPSAnZm9vYmFyJzsKLy8geW91ciBjb2RlIGdvZXMgaGVyZQ==