Skip to content
Snippets Groups Projects
bootstrap.php 11.6 KiB
Newer Older
<?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');
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(array(
	'base_url'   => '/~dev_rating/',
/**
 * 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);

/**
 * Информация о системе: название, версия.
 */
Антон Шалимов's avatar
Антон Шалимов committed
define('ASSEMBLY_SYSTEM_NAME', 'Сервис БРС [Beta]');
define('ASSEMBLY_VERSION', '0.9');

/**
 * Enable modules. Modules are referenced by a relative or absolute path.
 */
Kohana::modules(array(
         'account'     => MODPATH.'account', // Authentication and account manager
         'kotwig'     => MODPATH.'kotwig', // Twig template engine
Andrew Rudenets's avatar
Andrew Rudenets committed
         'mpdf'     => MODPATH.'mpdf', // HTML->PDF converter
         'phpexcel' => MODPATH.'phpexcel', // HTML->MS Excel 2007 converter
		// '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.
 */

RomanSteinberg's avatar
RomanSteinberg committed
/* --------------- Авторизация ---------------- */

Route::set('sign', '(sign(/<type>))', array('type' => '(up|in)'))
RomanSteinberg's avatar
RomanSteinberg committed
    ->defaults(array(
        'controller' => 'authentication',
        'action'     => 'enter_frontdoor',
    ));

Route::set('secret_entrance', '(ssign(/<type>))', array('type' => '(up|in)'))
    ->defaults(array(
        'controller' => 'authentication',
        'action'     => 'enter_backdoor',
    ));


Route::set('remind', 'remind')
	->defaults(array(
		'controller' => 'authentication',
		'action'     => 'remind',
	));

	->defaults(array(
		'controller' => 'authentication',
		'action'     => 'endremind',
	));

	->defaults(array(
		'controller' => 'authentication',
		'action'     => 'logout',
	));

xamgore's avatar
xamgore committed
/* --------------- Служебные ссылки ---------------- */
Route::set('handler', 'handler/<controller>/<action>(/<id>)')
xamgore's avatar
xamgore committed
	->defaults(array(
		'action'    => 'index',
        'directory' => 'handler'
        ));
Andrew Rudenets's avatar
Andrew Rudenets committed

Route::set('window', 'window/<id>')
	->defaults(array(
        'controller' => 'Window',
		'action'    => 'get'
        ));
                
/* --------------- Общие ссылки ---------------- */

        ->defaults(array(
            'controller' => 'UserEnvi',
            'action' => 'index'
        ));

Route::set('common:settings', 'settings')
        ->defaults(array(
            'controller' => 'UserEnvi',
            'action' => 'settings'
        ));
		
Route::set('common:profile', 'profile(/<type>(/<id>))', array('type' => '(teacher|student)'))
        ->defaults(array(
            'controller' => 'UserEnvi',
            'action' => 'profile'
        ));

/* --------------- Студенты ---------------- */

Route::set('student:subject', 'subject/<id>', array('id' => '[0-9]+'))
        ->defaults(array(
            'directory' => 'student',
            'controller' => 'subject',
            'action' => 'show'
        ));

        // Внутренние вызовы!
Route::set('student:index', 'student/index')
        ->filter(function($route, $params, Request $request){
            if($request->is_initial())
                return FALSE;
        })
        ->defaults(array(
            'directory' => 'student',
            'controller' => 'index',
            'action' => 'index'
        ));

Route::set('student:settings', 'student/settings')
        ->filter(function($route, $params, Request $request){
            if($request->is_initial())
                return FALSE;
        })
        ->defaults(array(
            'directory' => 'student',
            'controller' => 'index',
            'action' => 'settings'
        ));
		
Route::set('student:profile', 'student/profile')
        ->filter(function($route, $params, Request $request){
            if($request->is_initial())
                return FALSE;
        })
        ->defaults(array(
            'directory' => 'student',
            'controller' => 'profile',
            'action' => 'show'
        ));
        
/* --------------- Преподаватели ---------------- */

xamgore's avatar
xamgore committed
Route::set('teacher:map:create', 'teacher/create/<type>', ['type' => '(discipline|coursework)'])
    ->filter(function(Route $route, $params, Request $request){
        $params['action'] = 'create_' . $params['type'];
        return $params;
    })
    ->defaults(array(
        'directory' => 'teacher',
        'controller' => 'discipline',
        'action' => 'create_discipline'
    ));
Route::set('teacher:map:discipline', 'discipline/settings/<id>', array('id' => '[0-9]+'))
        ->defaults(array(
            'directory' => 'teacher',
            'controller' => 'discipline',
			'action' => 'EditSettings'
Route::set('teacher:map:structure', 'discipline/structure/<id>', array('id' => '[0-9]+'))
        ->defaults(array(
            'directory' => 'teacher',
            'controller' => 'Discipline',
			'action' => 'EditStructure'
        ));
Route::set('teacher:map:groups', 'discipline/groups/<id>', array('id' => '[0-9]+'))
        ->defaults(array(
            'directory' => 'teacher',
            'controller' => 'Discipline',
			'action' => 'EditGroups'
        ));
Route::set('teacher:map:students', 'discipline/students/<id>', array('id' => '[0-9]+'))
        ->defaults(array(
            'directory' => 'teacher',
            'controller' => 'discipline',
			'action' => 'EditStudents'
Route::set('teacher:map:teachers', 'discipline/teachers/<id>', array('id' => '[0-9]+'))
            'controller' => 'discipline',
Route::set('teacher:rating', 'rate/<id>', array('id' => '[0-9]+'))
        ->defaults(array(
            'directory' => 'teacher',
            'controller' => 'rating',
            'action' => 'edit'
        ));
Антон Шалимов's avatar
Антон Шалимов committed
Route::set('teacher:exam', 'exam/<id>', array('id' => '[0-9]+'))
        ->defaults(array(
            'directory' => 'teacher',
            'controller' => 'rating',
            'action' => 'exam'
        ));

        // Внутренние вызовы!
Route::set('teacher:index', 'teacher/index')
        ->filter(function($route, $params, Request $request){
            if($request->is_initial())
                return FALSE;
        })
        ->defaults(array(
            'directory' => 'teacher',
            'controller' => 'index',
            'action' => 'index'
        ));
Route::set('teacher:settings', 'teacher/settings')
        ->filter(function($route, $params, Request $request){
            if($request->is_initial())
                return FALSE;
        })
        ->defaults(array(
            'directory' => 'teacher',
            'controller' => 'index',
            'action' => 'settings'
        ));

Route::set('teacher:profile', 'teacher/profile(/<action>(/<id>))', array('action' => '(student)', 'id' => '[0-9]+'))
        ->filter(function($route, $params, Request $request){
            if($request->is_initial())
                return FALSE;
        })
        ->defaults(array(
            'directory' => 'teacher',
            'controller' => 'profile',
            'action' => 'edit'

/* --------------- Администрирование ---------------- */
Route::set('admin:common', 'admin(/<controller>(/<action>(/<param1>(:<param2>))))')
/* --------------- Деканат  ---------------- */
Route::set('dean_office:index', 'dean_office(/<controller>(/<action>(/<param1>(:<param2>))))')
            'directory' => 'DeanOffice',
            'controller' => 'sheets',
xamgore's avatar
xamgore committed
        ));

# http://grade.mmcs.sfedu.ru/students/list
Route::set('dean_office:academic_leaves', 'students/list')
    ->defaults([
        'directory' => 'DeanOffice',
        'controller' => 'Students',
        'action' => 'list'
    ]);
/* --------------- Java session provider -------------- */
Route::set('javaSessionProvider', 'java_authentication')
	->defaults(array(
		'controller' => 'JavaAuthentication',
		'action' => 'authentication',));