<?php
/*
* フロントコントローラ
*/
//ブラウザにキャッシュを許可する
//session_cache_limiter('private');
//session_cache_limiter('private_no_expire');
session_cache_limiter('nocache');
session_start();


if (isset($_GET['DEBUG']) or isset($_GET['debug'])) {
    //URLパラメータでdebug可能とする
    //...&debug=1 でデバッグモードに設定
    if (preg_match('/(^211\.0\.24\.1)|(^192\.168\.)|(^127\.0\.0\.1|::1)$/u', $_SERVER['REMOTE_ADDR']) > 0) {
        //localhostのみ許可
        ////localhostか、プライベートipアドレスのみ許可の場合: '/(^192\.168\.)|(^172\.1[6-9]\.)|(^172\.2[0-9]\.)|(^172\.3[0-1]\.)|^10\.|(^127\.0\.0\.1)$/u'
        $_SESSION['DEBUG'] = ($_GET['DEBUG'] ? $_GET['DEBUG'] : $_GET['debug']);
    }
}

if ($_SESSION['DEBUG'] == 1) {
    define("DEBUG", TRUE);

} elseif ($_SESSION['DEBUG'] === '0') {
    define("DEBUG", FALSE);
}

require_once(__DIR__.'/../kernel/muse_util.php');
// バッファリング処理を有効にする
muse_util::mus_flush_start();

require_once(__DIR__.'/../kernel/muse.class.php');
require_once(__DIR__.'/../base/controller/Base_Controller.php');

if (DEBUG) {
    p($_POST,    '$_POST    = ');
    p($_GET,     '$_GET     = ');
    p($_SESSION, '$_SESSION = ');
//    p($_SERVER['REMOTE_ADDR']);
}

$param_arr = preg_split('|/|u', $_GET['p'], null, PREG_SPLIT_NO_EMPTY);

if (DEBUG) {
    p($param_arr, '$param_arr = ');
}

if (count($param_arr) > 0) {
    if ($param_arr[0] == 'en') {
        $lang = 'en';

        $_GET['lang'] = $lang;

        array_shift($param_arr);
    }

    $app = $param_arr[0];

    switch ($app) {
    case 'shiryo':
        if ($param_arr[1] == 'pict') {
            $_GET['mode']    = 'pict';
            $_GET['data_id'] = $param_arr[2];

        } elseif ($param_arr[1] == 'exhibit_view') {
            $_GET['mode']    = 'exhibit_view';
            $_GET['data_id'] = $param_arr[2];

        } else {
            $data_id = $param_arr[1];

            if ((int)$data_id) { 
                $_GET['data_id'] = $data_id;
                $_GET['mode']    = 'edit';
            }
        }

        break;

    case 'exhibition':
        if ($param_arr[1] == 'year') {
            $_GET['mode']    = 'year';
            $_GET['year'] = $param_arr[2];

        } else {
            $data_id = $param_arr[1];

            if ((int)$data_id) { 
                $_GET['data_id'] = $data_id;
                $_GET['mode']    = 'edit';
            }
        }

        break;

    case 'genre':
        if ($param_arr[1]) {
            $_GET['genre'] = $param_arr[1];
            $_GET['mode']  = 'shiryo_list';
        }

        break;

    case 'year':
        if ($param_arr[1] == 'shiryo_list') {
            $_GET['mode']  = 'shiryo_list';
        }

        break;

    case 'artist':
        $app     = 'creator';

        //break しない

    default:
        $data_id = $param_arr[1];

        if ((int)$data_id) { 
            $_GET['data_id'] = $data_id;
            $_GET['mode']    = 'edit';
        }

        break;
    }

    $_GET['app'] = $app;

} else {
    if ($_GET['app'] == 'artist') {
        $_GET['app'] = 'creator';
    }
}

if (DEBUG) {
    p($_GET, '$_GET = ');
}

//Requestクラス
$request = new Request($_POST, $_GET);

//get_params_from_url($_SERVER['PHP_SELF']);
//controller取得
$controller = Base_Controller::get_controller($request);

//controller実行
$controller->dispatch();

