<?php
 
    class l{
        
        public static $i;
        public $lang , $t , $symbol , $flag , $name;
        public static $cookie_name = 'lang';
        private $lang_path = '';
        public $translate_dir = 'translate/'; 
        public static $lang_default = 'pl';
        
        public static $short_names = array(
            'MSG_UPDATE' => 'Dane zostały zaktualizowane pomyślnie',
            'MSG_SAVE' => 'Dane zostały zapisane poprawnie',
            
            'BTN_SAVE' => 'Zapisz',
            'BTN_UPDATE' => 'Zaktualizuj',
            'BTN_DELETE' => 'Usuń',
            
            'ERR_SQL' => 'Wystąpił błąd podczas połaczenia, spróbuj ponownie za kilka minut',
            'ERR_2FA' => 'Niepoprawny kod 2FA'
        );
        
        public static $lang_list = array(
            'pl' => 'polski',
            'en' => 'english'
        );
        
        public function __construct(){
            
            // Ustawienie nowej wersji językowej
            if( !empty($_GET['lang']) and array_key_exists( strtolower( $_GET['lang'] ) , self::$lang_list ) ){

                $set_lang = $use_lang = strtolower( $_GET['lang'] );

                // Usuwanie starego cookie
                setcookie( self::$cookie_name , $_COOKIE[self::$cookie_name]  , -1 ); 
                unset( $_COOKIE[self::$cookie_name] );
                //--->
                
                self::set_cookie( $set_lang );
                
                @header( "Location:" . core::$i->url );
                die;
                
            // Sprawdzenie statusu aktualnej wersji
            } elseif( !empty($_COOKIE[self::$cookie_name]) ){
                
                $use_lang = strtolower( $_COOKIE[self::$cookie_name] );
                
                if( !array_key_exists( $use_lang , l::$lang_list ) ){
                    
                    // Pobranie pierwszego języka z listy
                    $use_lang = self::get_default();
                
                }
                
                self::set_cookie( $use_lang );
                
            // Wykrywanie wersji    
            } else {
                
                $use_country_code = strtolower( parse::countryCode() );
                
                if( array_key_exists( $use_country_code , self::$lang_list ) ){
                    $use_lang = $use_country_code;
                } else {
                    $use_lang = self::get_default();
                }
                
                self::set_cookie( $use_lang );
                
            }

            $this->lang = $use_lang;
            $this->symbol = $use_lang;

            $this->flag = 'img/'.strtolower( $this->symbol ).'.png';
            $this->name = self::$lang_list[$use_lang];
            
            self::$i = $this;
                
        }
        
        public function CreateTranslateFile( $name ){
            
            if(!empty($this->symbol)){
                $lang_file  = $this->translate_dir . strtolower( $this->symbol ) . '_' . md5($name) . '.lang';
    
                if( !file_exists( $lang_file ) and strtolower($this->symbol)!= self::get_default() ){
                    $lang_handler = @fopen( $lang_file , 'w+' );
                    @fwrite( $lang_handler , $name );
                    @fclose( $lang_handler );
                }
            }
        }
        
        public static function get_content_link( $name ){
            
            $data = db::$i->row("SELECT * FROM `content` WHERE `name`='".( esc( $name ) )."' AND ( `lang`='".( strtoupper( l::$i->lang ) )."' OR `lang`='".( strtoupper( l::$lang_default ) )."' )");
            if( $data ){
                return $data;
            }
            
            
        }
        
        /**
         * Set lang cookie
         * @param string $lang_code - pl or en itd.
         * @param mixed $lifetime - Cookie lifetime ( false = 30 days )
         */
        public static function set_cookie( $lang_code , $lifetime = false ){
            
            if( $lifetime === false ) $lifetime = time() + ( 3600*24*30 );
            
            setcookie( self::$cookie_name, $lang_code , $lifetime );
        }
         
        /**
         * Get default lang code
         */
        public static function get_default(){
            return key( l::$lang_list );
        }
        
        public static function error( $name ){
            
            //more switch: core::$i->mode
            
            switch( $name ){
                
                default:
                
                    return l('Niepoprawna wartość w polu') . ' <b>' . listing::key_name( $name , core::$i->mode ) . '</b> ';
                
                break;
                
            }
            
        }
        
        
    }

?>