<?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(['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 = sha1('ПРОЩАЙСТОЛОВАЯ'); 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'])); } //Kohana::$environment = ($_SERVER['SERVER_NAME'] !== 'localhost') ? Kohana::PRODUCTION : Kohana::DEVELOPMENT; /** * 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([ '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([ 'kotwig' => MODPATH . 'kotwig', // Twig template engine 'mpdf' => MODPATH . 'mpdf', // HTML->PDF converter 'phpexcel' => MODPATH . 'phpexcel', // HTML->MS Excel 2007 converter 'mailer' => MODPATH . 'mail', // 'codebench' => MODPATH.'codebench', // Benchmarking tool 'database' => MODPATH . 'database', // Database access ]); /** * Set the routes. Each route must have a minimum of a name, a URI and a set of * defaults for the URI. */ // dedicated routes require APPPATH . 'routes/api.php'; require APPPATH . 'routes/api/v0.php'; require APPPATH . 'routes/dean_office.php'; Route::set('main', '')->defaults(['controller' => 'index']); // --------------- Authorization ---------------- Route::set('sign', 'sign(/<type>)', ['type' => '(up|in)']) ->defaults([ 'controller' => 'Authentication', 'action' => 'sign', ]); Route::set('sign:secret_entrance', 'ssign(/<type>)', ['type' => '(up|in)']) ->defaults([ 'controller' => 'Authentication', 'action' => 'sign_anyway', ]); Route::set('sign:out', 'sign/out') ->defaults([ 'controller' => 'Authentication', 'action' => 'logout', ]); Route::set('sign:remind', 'remind') ->defaults([ 'controller' => 'Authentication', 'action' => 'remind', ]); Route::set('sign:restore', 'remind/<token>') ->defaults([ 'controller' => 'Authentication', 'action' => 'restore', ]); // --------------- Ajax features ---------------- Route::set('handler', 'handler/<controller>(/<action>(/<id>))') ->defaults([ 'directory' => 'Handler', 'action' => 'index', ]); Route::set('window', 'window/<id>') ->defaults([ 'controller' => 'Window', 'action' => 'get' ]); // --------------- Common links ---------------- Route::set('common:index', 'index') ->defaults([ 'controller' => 'Index', 'action' => 'index' ]); // --------------- Students ---------------- Route::set('student:index', 'student(/index)') ->defaults([ 'directory' => 'Student', 'controller' => 'Index', 'action' => 'index' ]); # discipline view Route::set('student:discipline', 'student/discipline/<id>', ['id' => '[0-9]+']) ->defaults([ 'directory' => 'Student', 'controller' => 'Discipline', 'action' => 'show' ]); // --------------- Teachers ---------------- # profile page Route::set('teacher:index', 'teacher(/index)') ->defaults([ 'directory' => 'Teacher', 'controller' => 'Index', 'action' => 'index' ]); Route::set('teacher:profile', 'profile(/)') ->defaults([ 'directory' => 'Teacher', 'controller' => 'Profile', 'action' => 'index', ]); # create & edit discipline Route::set('discipline:create', '<type>/create', ['type' => '(discipline|coursework)']) ->filter(function (Route $route, $params, Request $request) { $params['action'] = 'create_' . $params['type']; return $params; }) ->defaults([ 'directory' => 'Teacher/Discipline', 'controller' => 'Create', ]); # discipline rate table Route::set('teacher:rating', 'discipline/<id>/<type>', ['type' => '(rate|exam)', 'id' => '[0-9]+']) ->defaults([ 'directory' => 'Teacher/Discipline', 'controller' => 'Rating', 'action' => 'rating', ]); # discipline history Route::set('teacher:history', 'discipline/<id>/history', ['id' => '[0-9]+']) ->defaults([ 'directory' => 'Teacher/Discipline', 'controller' => 'Rating', 'action' => 'history', ]); Route::set('discipline:edit', 'discipline/<id>/<section>', ['id' => '\d+']) ->filter(function (Route $route, $params, Request $request) { $params['action'] = 'edit_' . $params['section']; return $params; }) ->defaults([ 'directory' => 'Teacher/Discipline', 'controller' => 'Edit', ]); // --------------- Support messages ---------------- Route::set('support:image', 'support/image(/<action>)/<id>', ['id' => '[0-9]+']) ->defaults([ 'directory' => 'Handler', 'controller' => 'RequestsProcessing', 'action' => 'view' ]); // --------------- Java session provider -------------- Route::set('javaSessionProvider', 'java_authentication') ->defaults([ 'controller' => 'JavaAuthentication', 'action' => 'authentication' ]);