<?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://kohanaframework.org/guide/using.configuration * @link http://www.php.net/manual/timezones */ date_default_timezone_set('Europe/Moscow'); /** * Set the default locale. * * @link http://kohanaframework.org/guide/using.configuration * @link http://www.php.net/manual/function.setlocale */ setlocale(LC_ALL, 'ru-RU.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'); /** * Set the mb_substitute_character to "none" * * @link http://www.php.net/manual/function.mb-substitute-character.php */ mb_substitute_character('none'); // -- Configuration and initialization ----------------------------------------- /** * Set the default language */ I18n::lang('ru-ru'); Cookie::$salt = 'q98fbef23'; if (isset($_SERVER['SERVER_PROTOCOL'])) { // Replace the default protocol. HTTP::$protocol = $_SERVER['SERVER_PROTOCOL']; } /** * 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'])) { 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' => '/~dev_rating/', '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); /** * Информация о системе: название, версия. */ define('ASSEMBLY_SYSTEM_NAME', 'Сервис БРС'); define('ASSEMBLY_VERSION', '0.9'); /** * Enable modules. Modules are referenced by a relative or absolute path. */ Kohana::modules(array( 'kotwig' => MODPATH.'kotwig', // TWIG!!! // 'auth' => MODPATH.'auth', // Basic authentication // 'exauth' => MODPATH.'exauth', // 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 )); /** * Set the routes. Each route must have a minimum of a name, a URI and a set of * defaults for the URI. */ /* --------------- Авторизация ---------------- */ Route::set('sign', '(sign(/<type>))', array('type' => '(up|in)')) ->defaults(array( 'controller' => 'authentication', 'action' => 'sign', )); Route::set('remind', 'remind') ->defaults(array( 'controller' => 'authentication', 'action' => 'remind', )); Route::set('sign:out', 'sign/out') ->defaults(array( 'controller' => 'authentication', 'action' => 'logout', )); /* --------------- Служебные ссылки ---------------- */ Route::set('handler', 'handler/<controller>/<action>(/<id>)') ->defaults(array( 'action' => 'index', 'directory' => 'handler')) ->filter(function($route, $params, $request) { if ($request->method() !== HTTP_Request::POST) { // Данный маршрут выполним только для POST-запросов изнутри фреймворка return FALSE; } }); Route::set('twig:show', 'twig(/<id>)') ->defaults(array( 'controller' => 'twig', 'action' => 'show' )); /* --------------- Общие ссылки ---------------- */ Route::set('index', 'index') ->defaults(array( 'controller' => 'UserEnvi', 'action' => 'index' )); Route::set('settings', 'settings') ->defaults(array( 'controller' => 'UserEnvi', 'action' => 'settings' )); Route::set('profile', 'profile(/<type>(/<id>))', array('type' => '(teacher|student)')) ->defaults(array( 'controller' => 'UserEnvi', 'action' => 'profile' )); /* --------------- Студенты ---------------- */ Route::set('subject', 'subject/<id>', array('id' => '[0-9]+')) ->defaults(array( 'directory' => 'student', 'controller' => 'subject', 'action' => 'show' )); // Внутренние вызовы! Route::set('stdnt:index', 'student/index') ->filter(function($route, $params, $request){ if($request->is_initial()) return FALSE; }) ->defaults(array( 'directory' => 'student', 'controller' => 'index', 'action' => 'index' )); Route::set('stdnt:settings', 'student/settings') ->filter(function($route, $params, $request){ if($request->is_initial()) return FALSE; }) ->defaults(array( 'directory' => 'student', 'controller' => 'index', 'action' => 'settings' )); Route::set('stdnt:profile', 'student/profile') ->filter(function($route, $params, $request){ if($request->is_initial()) return FALSE; }) ->defaults(array( 'directory' => 'student', 'controller' => 'profile', 'action' => 'show' )); /* --------------- Преподаватели ---------------- */ Route::set('map:show', 'map/<id>', array('id' => '[0-9]+')) ->defaults(array( 'directory' => 'teacher', 'controller' => 'map', 'action' => 'show' )); Route::set('map:act', 'map/<action>/<id>', array('action' => '(create|edit)', 'id' => '[0-9]+')) ->defaults(array( 'directory' => 'teacher', 'controller' => 'map' )); Route::set('rating', 'rating/<id>', array('id' => '[0-9]+')) ->defaults(array( 'directory' => 'teacher', 'controller' => 'rating', 'action' => 'edit' )); // Внутренние вызовы! Route::set('tchr:index', 'teacher/index') ->filter(function($route, $params, $request){ if($request->is_initial()) return FALSE; }) ->defaults(array( 'directory' => 'teacher', 'controller' => 'index', 'action' => 'index' )); Route::set('tchr:settings', 'teacher/settings') ->filter(function($route, $params, $request){ if($request->is_initial()) return FALSE; }) ->defaults(array( 'directory' => 'teacher', 'controller' => 'index', 'action' => 'settings' )); Route::set('tchr:profile', 'teacher/profile(/<action>(/<id>))', array('action' => '(student)', 'id' => '[0-9]+')) ->filter(function($route, $params, $request){ if($request->is_initial()) return FALSE; }) ->defaults(array( 'directory' => 'teacher', 'controller' => 'profile', 'action' => 'show' )); /* --------------- Администрирование ---------------- */ Route::set('admin:log', 'admin/log(/<action>(/<id>))', array('action' => '(user|kohana)', 'id' => '[0-9]+')) ->defaults(array( 'directory' => 'admin', 'controller' => 'log', 'action' => 'all' )); Route::set('admin:requests', 'admin/requests(/<action>(/<id>))', array('action' => '(errors|remark|restore)', 'id' => '[0-9]+')) ->defaults(array( 'directory' => 'admin', 'controller' => 'request', 'action' => 'all' )); Route::set('admin:process', 'admin/<controller>(/<action>(/<id>))', array( 'controller' => '(students|teachers|disciplines|semestr)', 'id' => '[0-9]+' )) ->defaults(array( 'directory' => 'admin', 'action' => 'index' ));