Skip to content
Snippets Groups Projects
bootstrap.php 8.38 KiB
Newer Older
<?php defined('SYSPATH') or die('No direct script access.');

// -- Environment setup --------------------------------------------------------

// Load the core Kohana class
xamgore's avatar
xamgore committed
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
 */
xamgore's avatar
xamgore committed
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');
xamgore's avatar
xamgore committed
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>"
 */
xamgore's avatar
xamgore committed
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
 */
xamgore's avatar
xamgore committed
Kohana::init([
    'base_url'   => '/~dev_rating/',
    'index_file' => false
]);
/**
 * Attach the file write to logging. Multiple writers are supported.
 */
xamgore's avatar
xamgore committed
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.
 */
xamgore's avatar
xamgore committed
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']);

xamgore's avatar
xamgore committed
// --------------- Authorization ----------------
Route::set('sign', 'sign(/<type>)', ['type' => '(up|in)'])
xamgore's avatar
xamgore committed
    ->defaults([
        'controller' => 'Authentication',
        'action'     => 'sign',
xamgore's avatar
xamgore committed
    ]);
Route::set('sign:secret_entrance', 'ssign(/<type>)', ['type' => '(up|in)'])
xamgore's avatar
xamgore committed
    ->defaults([
        'controller' => 'Authentication',
        'action'     => 'sign_anyway',
xamgore's avatar
xamgore committed
    ]);
Route::set('sign:out', 'sign/out')
xamgore's avatar
xamgore committed
    ->defaults([
        'controller' => 'Authentication',
        'action'     => 'logout',
xamgore's avatar
xamgore committed
    ]);
xamgore's avatar
xamgore committed
Route::set('sign:remind', 'remind')
    ->defaults([
        'controller' => 'Authentication',
        'action'     => 'remind',
    ]);
xamgore's avatar
xamgore committed
Route::set('sign:restore', 'remind/<token>')
    ->defaults([
        'controller' => 'Authentication',
        'action'     => 'restore',
    ]);
Turchin's avatar
Turchin committed

xamgore's avatar
xamgore committed
// --------------- Ajax features ----------------
Route::set('handler', 'handler/<controller>(/<action>(/<id>))')
xamgore's avatar
xamgore committed
    ->defaults([
        'directory' => 'Handler',
        'action'    => 'index',
    ]);
Andrew Rudenets's avatar
Andrew Rudenets committed

Route::set('window', 'window/<id>')
xamgore's avatar
xamgore committed
    ->defaults([
Andrew Rudenets's avatar
Andrew Rudenets committed
        'controller' => 'Window',
xamgore's avatar
xamgore committed
        'action'     => 'get'
    ]);
xamgore's avatar
xamgore committed
// --------------- Common links ----------------
xamgore's avatar
xamgore committed
    ->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]+'])
xamgore's avatar
xamgore committed
    ->defaults([
        'directory'  => 'Student',
xamgore's avatar
xamgore committed
        '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) {
xamgore's avatar
xamgore committed
        $params['action'] = 'create_' . $params['type'];
        return $params;
    })
xamgore's avatar
xamgore committed
    ->defaults([
        'directory'  => 'Teacher/Discipline',
        'controller' => 'Create',
    ]);
xamgore's avatar
xamgore committed
# 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]+'])
xamgore's avatar
xamgore committed
    ->defaults([
        'directory'  => 'Teacher/Discipline',
        'controller' => 'Rating',
        'action'     => 'history',
Route::set('discipline:edit', 'discipline/<id>/<section>', ['id' => '\d+'])
xamgore's avatar
xamgore committed
    ->filter(function (Route $route, $params, Request $request) {
xamgore's avatar
xamgore committed
        $params['action'] = 'edit_' . $params['section'];
        return $params;
    })
    ->defaults([
xamgore's avatar
xamgore committed
        'directory'  => 'Teacher/Discipline',
        'controller' => 'Edit',
// --------------- Support messages ----------------
Route::set('support:image', 'support/image(/<action>)/<id>', ['id' => '[0-9]+'])
        'directory'  => 'Handler',
        'controller' => 'RequestsProcessing',
xamgore's avatar
xamgore committed
// --------------- Java session provider --------------
Route::set('javaSessionProvider', 'java_authentication')
xamgore's avatar
xamgore committed
    ->defaults([
        'controller' => 'JavaAuthentication',
        'action'     => 'authentication'
    ]);