예제 #1
0
 function url($url = '')
 {
     $url = $url ? $url : application::get_instance()->request->url;
     if (application::get_instance()->config->resource->lang) {
         $m = new model_lang();
         $langs = $m->fetch_col('stitle', array('show_it' => 1));
         $url = preg_replace('/^\\/(' . implode('|', $langs) . ')\\//si', '/', $url);
     }
     $m = new model_meta();
     $data = $m->fetch_by_url($url);
     if ($data) {
         $this->auto($data, false);
     }
 }
예제 #2
0
파일: lang.php 프로젝트: s-kalaus/ekernel
 public function controller_before()
 {
     $ml = new model_lang();
     $ids = $ml->fetch_col('stitle', array('show_it' => 1));
     if (@application::get_instance()->config->resource->lang->type == 'session') {
         if ($ids) {
             $lang_session = session::get('lang');
             $lang_cookie = @$_COOKIE['lang'];
             if ($lang_session && !in_array($lang_session, $ids)) {
                 session::remove('lang');
                 $lang_session = null;
             }
             if ($lang_cookie && !in_array($lang_cookie, $ids) || $lang_cookie && $lang_session && $lang_session != $lang_cookie) {
                 setcookie('lang', null, time() + 86400 * 30, '/');
             }
             if ($lang_cookie && !$lang_session) {
                 session::set('lang', $lang_cookie);
                 $lang_session = $lang_cookie;
             }
             if (application::get_instance()->config->resource->lang->detect && !$lang_session) {
                 $lang_detected = $this->prefered_language($ids, @$_SERVER['HTTP_ACCEPT_LANGUAGE']);
                 if ($lang_detected) {
                     session::set('lang', $lang_detected);
                 }
             }
         }
     } else {
         if ($ids && !in_array(application::get_instance()->controller->request->param->lang, $ids)) {
             unset(application::get_instance()->controller->request->param->lang);
         }
         if (!application::get_instance()->controller->request->param->lang) {
             application::get_instance()->controller->request->param->lang = application::get_instance()->controller->view->lang()->default->stitle;
         }
         if (application::get_instance()->request->url == '/control') {
             header('Location: /' . application::get_instance()->controller->view->lang()->default->stitle . '/control');
             exit;
         } else {
             if (application::get_instance()->request->url == '/error') {
                 header('Location: /' . application::get_instance()->controller->view->lang('stitle') . '/error');
                 exit;
             }
         }
     }
 }