Example #1
0
 public function init()
 {
     if ($this->_inited) {
         return;
     }
     $this->_inited = true;
     if (@application::get_instance()->config->resource->lang->type == 'session') {
         $lang_cookie = @$_COOKIE[$this->_key];
         $lang_session = session::get('lang');
         if ($lang_session) {
             if ($lang_session != $lang_cookie) {
                 $this->set($lang_session);
             }
             $lang_param = $lang_session;
         } else {
             $lang_param = $lang_cookie;
         }
     } else {
         $lang_param = application::get_instance()->request->param->lang;
     }
     $ml = new model_lang();
     $this->data = $ml->fetch_row(array('show_it' => '1'), array('(`stitle` = ' . $ml->adapter->quote($lang_param) . ')' => 'desc', '(`is_default` = 1)' => 'desc'));
     $this->default = $ml->fetch_row(array('is_default' => '1'));
     if (!$lang_param) {
         if (application::get_instance()->config->resource->lang->type == 'session') {
             session::set('lang', $this->default->stitle);
         }
     }
 }
Example #2
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);
     }
 }
Example #3
0
 function set_action()
 {
     $id = (string) $this->request->param->id;
     $ml = new model_lang();
     $lang = $ml->fetch_one('id', array('stitle' => $id));
     $url = @$_SERVER['HTTP_REFERER'];
     if (stripos($url, @$_SERVER['HTTP_HOST']) === false) {
         $url = '/';
     }
     if ($id) {
         $this->view->lang()->set($id);
     }
     header('Location: ' . $url);
     exit;
 }
Example #4
0
 function __construct($config)
 {
     if ($config->type != 'session') {
         if (preg_match('/^\\/x\\//i', @$_SERVER['REQUEST_URI'])) {
             return;
         }
         $route = new data();
         if (count(application::get_instance()->config->route)) {
             $ml = new model_lang();
             $default = $ml->fetch_one('stitle', array('is_default' => 1));
             foreach (application::get_instance()->config->route as $k => $v) {
                 $route->{$k} = array('type' => 'chain', 'param' => array('part' => array(array('type' => 'rewrite', 'param' => array('url' => '([^\\/]+)', 'map' => 'lang', 'default' => $default)), clone $v), 'controller' => $v->param ? $v->param->controller : null, 'action' => $v->param ? $v->param->action : null, 'inner' => $v->inner, 'title' => $v->title));
             }
         }
         application::get_instance()->router = new router($route);
     }
     application::get_instance()->config->plugin[] = 'lang';
 }
Example #5
0
 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;
             }
         }
     }
 }