Advertisement
Guest User

LangQuery 1.2

a guest
Jan 26th, 2015
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.63 KB | None | 0 0
  1. <?php
  2. error_reporting(E_ALL);
  3. // If langquery.php is called by its own, not included.
  4. if(count(get_included_files())==1){
  5.     if(isset($_GET[json])){$L = new LangQuery(); echo $L->json();}
  6. }
  7.  
  8. class LangQuery{
  9.     public $default = "en";
  10.     public $list,$data,$current;
  11.     public $language_folder = "language";
  12.     public $get_parameter = "Language";
  13.     public $cookie_name = "Language";
  14.     public $cookie_expire = 31536000; // 365 days in seconds
  15.     public $domain = ($_SERVER['SERVER_NAME']);
  16.     public $page = basename($_SERVER['PHP_SELF']);
  17.  
  18.     public function __construct($auto=TRUE){
  19.         if(!is_dir(dirname(__FILE__)."/$this->language_folder")){die("LANGQUERY : No language folder /$this->language_folder/");}
  20.         $this->list = str_replace(".ini","",array_slice(scandir(dirname(__FILE__)."/$this->language_folder"),2));
  21.         if(count($this->list)==0){
  22.             die("LANGQUERY : No language file in /$this->language_folder/ directory. Please add at least default language $this->default.ini");
  23.         }
  24.         if($auto){
  25.             if($this->is_valid($_GET[$this->get_parameter])){
  26.                 $this->load($_GET[$this->get_parameter]);
  27.             }else{
  28.                 if($this->is_valid($_COOKIE[$this->cookie_name])){
  29.                     $this->load($_COOKIE[$this->cookie_name]);
  30.                 }elseif($this->is_valid($this->browser())){
  31.                     $this->load($this->browser(),FALSE);
  32.                 }else{
  33.                     $this->load($this->default,FALSE);
  34.                 }
  35.             }
  36.         }
  37.     }
  38.     /* USTAWIENIE ADRESU */
  39.     $this->setaddress();
  40.     $this->page = basename($_SERVER['PHP_SELF']);
  41.     $this->domain = ($_SERVER['SERVER_NAME']);
  42.    
  43.     public function __invoke(){
  44.         $arguments=func_get_args();
  45.         $key=$arguments[0];
  46.         array_shift($arguments);
  47.         preg_match("/(?P<operation>[>]?)(\[(?P<language>\w+)\])?(?P<key>\w+)/", $key, $matches);
  48.         $text = $this->find($matches['key'], $arguments, $matches['language']);
  49.         if($matches['operation']==">"){
  50.             echo($text);
  51.         }else{
  52.             return $text;
  53.         }
  54.     }
  55.     public function browser(){
  56.         return substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2);
  57.     }
  58.     public function is_valid($language){
  59.         return in_array($language,$this->list);
  60.     }
  61.     public function load($language,$save_cookie=TRUE){
  62.         $this->ini_loader($language);
  63.         $this->current = $language;
  64.         if($save_cookie) setcookie($this->cookie_name, $language, time()+$this->cookie_expire,"/");
  65.     }
  66.     public function free($language=""){
  67.         if($language==""){
  68.             $this->data = array();
  69.         }else{
  70.             if(isset($this->data[$language])) unset($this->data[$language]);
  71.         }
  72.     }
  73.     private function ini_loader($language){
  74.         if(!isset($this->data[$language])){
  75.             if($this->is_valid($language)){
  76.                 $this->data[$language] = parse_ini_file(dirname(__FILE__)."/$this->language_folder/$language.ini");
  77.             }else{
  78.                 die("LANGQUERY : No such language file : $this->language_folder/$language.ini");
  79.             }
  80.         }
  81.     }
  82.     private function find($key,$arguments="",$language=""){
  83.         if($language==""){
  84.             $language=$this->current;
  85.         }else{
  86.             $this->ini_loader($language);
  87.         }
  88.         return
  89.             isset($this->data[$language][$key])
  90.                 ? vsprintf($this->data[$language][$key],$arguments)
  91.                 : "<script>alert('LANGQUERY : UNDEFINED_LANGUAGE_KEY[$language][$key]')</script>";
  92.     }
  93.     public function json(){
  94.         return json_encode($this->data[$this->current]);
  95.     }
  96.     /* USTAWIANIE ADRESU - PATRZ TEZ LINIJKA 38 */
  97.      public function setaddress(){
  98.     /* JESLI JEZYK ZOSTAL USTAWIONY - ZMIEN HEADER NA TEN JEZYK */
  99.         if(isset($this->data[$language]))
  100.             header("Location: ".$language=$this->current.'/' .$page);
  101.     /* JESLI JEZYK NIE ZOSTAL USTAWIONY - ZMIEN HEADER NA JEZYK PODSTAWOWY*/
  102.         if(!in_array($language,$this->list))
  103.             header("Location: ".'/'.$default.'/' .$page);
  104.     }
  105. }
  106. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement