
<?

class template {
    
    private $headJavascript;
    
    public function templateIt($template, $varsArray){
        $return         =&     $this->getTemplate($template);
        $translateArr     =&     $this->getTranslateArr($return);
        $includeArr =& $this->getIncludesArr($return);
        
        if(!is_array($varsArray)){
            $varsArray = array();
        }
        
        $varsArray = array_merge($varsArray,array("{SCRIPT_URL}" => SCRIPT_URL));
        
        if(is_array($translateArr)){
            $varsArray = array_merge($translateArr, $varsArray);
        }
        
        if(is_array($includeArr)){
            $varsArray = array_merge($includeArr, $varsArray);
        }
        
        if($return && $varsArray != array()){
            return strtr($return, $varsArray);
        }else if($varsArray == array() && $return){
            return $return;
        }else{
            return false;
        }
    }
    
    private function getTranslateArr($var){
        global $lang;
        $replaceArray = array();
        preg_match_all("/\{translate:([^}]+)\}/is",$var,$return, PREG_SET_ORDER);
        if(count($return) > 0){
            foreach($return AS $transvar){
                if($lang[$transvar[1]] != ""){
                    $replaceArray = array_merge($replaceArray, array($transvar[0] => $lang[$transvar[1]]));
                }
            }
        }
        if(is_array($replaceArray) && $replaceArray != array()){
            return $replaceArray;
        }else{
            return false;
        }
    }
    
    private function getIncludesArr($var){
        global $template,$PAGE,$lang,$LNG,$MOD,$EBANKS;
        $replaceArray = array();
        preg_match_all("/\{include:([^}]+)\}/is",$var,$return, PREG_SET_ORDER);
        if(count($return) > 0){
            foreach($return AS $includevar){
                if($includevar[1] != "" && file_exists('pages/'.$includevar[1])){
                    $replaceArray = array_merge($replaceArray, array($includevar[0] => include 'pages/'.$includevar[1]));
                }
            }
        }
        if(is_array($replaceArray) && $replaceArray != array()){
            return $replaceArray;
        }else{
            return false;
        }
    }
    
    private function getTemplate($template){
        if(file_exists('theme/'.$template)){
            return file_get_contents('theme/'.$template);
        }else{
            return false;
        }
    }
    
    public function addJavascript($script){
        $this->headJavascript .= "\n\n".$script;
    }
    
    public function getHeadJavascript(){
        return $this->headJavascript;
    }
    
}

class mysqlDB {
    
    private $connected = false;
    
    public function query($sql){
        if(!$connected){
            $this->connect();
        }
        return mysql_query("$sql");
    }

    public function queryID()    {
        if(!$connected){
            $this->connect();
        }
        return mysql_insert_id();
    }
    
    public function numRows($query) {
        return mysql_num_rows($this->query($query));
    }
    
    public function getOne($query) {
        return @end(mysql_fetch_array($this->query($query)));
    }
    
    private function connect(){
        try {
            mysql_connect(MYSQL_SERVER, MYSQL_SERVER_USERNAME, MYSQL_SERVER_PASSWORD);
            mysql_select_db(MYSQL_DATABASE);
            $this->connected = true;
        }catch(exception $e){
            $this->connected = false;
            die("MYSQL error!");
        }
    }
    
}

class core extends mysqlDB {
    
    public function dataFix($data) {
        $data = str_replace(array('"',"'"),array('\"',"\'"), $data);
        return $data;
    }
    
  public function insertPlayer($nick, $password, $email, $vip = NULL, $patvirtinimas = NULL, $baigData = NULL, $nickBaigData = NULL){
      
        if(mysqlDB::numRows("SELECT `id` FROM `".MYSQL_USERS_TABLE."` WHERE `email` = '".$this->dataFix($email)."' AND `patvirtinimas` = 'taip' LIMIT 1") == 0){
            $patvirtinimas = ($patvirtinimas) ?              'taip'    :    'ne';
            $vip                     = ($vip)                     ?                     'a'    :    '';
            $baigData             = ($baigData)             ?      $baigData  : '';
            $nickBaigData     = ($nickBaigData)    ? $nickBaigData :    date("Y-m-d", strtotime('+1 day'));
            
            mysqlDB::query("
            INSERT INTO `".MYSQL_USERS_TABLE."`
                (`nick`, `email`, `patvirtinimas`, `pw`, `access`, `flags`, `lygis`, `baigData`, `nickBaigData`)
            VALUES
                ('".$this->dataFix($nick)."', '".$this->dataFix($email)."', '$patvirtinimas','".$this->dataFix($password)."', 'b', 'a', '$vip', '$baigData', '$nickBaigData')
            ");
            $id = mysqlDB::queryID();
            return $id;
        }else{
            return false;
        }
    }
    
    public function confirmNickReg($playerID){
        mysqlDB::query("
        UPDATE `".MYSQL_USERS_TABLE."` SET `patvirtinimas` = 'taip', `nickBaigData` = '' WHERE `id` = '".$this->dataFix($playerID)."' AND `patvirtinimas` = 'ne'
        ");
        
        if(mysql_affected_rows()){
        
        mysqlDB::query("
            DELETE t2.* FROM `".MYSQL_USERS_TABLE."` AS t2
                LEFT JOIN `".MYSQL_USERS_TABLE."` AS t1 ON t1.nick = t2.nick AND t1.id = '".$this->dataFix($playerID)."' AND `t1`.`patvirtinimas` = 'taip'
            WHERE t1.id IS NOT NULL AND `t2`.`patvirtinimas` = 'ne'
        ");
        
        return true;
        }else{
            return false;
        }
    }
    
    public function isRegisteredNick($nick = null, $id = null) {
        
        if($nick){
            $query = mysqlDB::numRows("SELECT `id` FROM `".MYSQL_USERS_TABLE."` WHERE `nick` = '".$this->dataFix($nick)."' AND `patvirtinimas` = 'taip' LIMIT 1");
        }
        else if($id){
          $query = mysqlDB::numRows("SELECT `id` FROM `".MYSQL_USERS_TABLE."` WHERE `id` = '".round($id)."' AND `patvirtinimas` = 'taip' LIMIT 1");
        }
        
        if($query == 1){
            return true;
        }else{
            return false;
        }
    
    }
    
    public function isNotUsedEmail($email) {
        if(mysqlDB::numRows("SELECT `id` FROM `".MYSQL_USERS_TABLE."` WHERE `email` = '".$this->dataFix($email)."' AND `patvirtinimas` = 'taip' LIMIT 1") == 1){
            return true;
        }else{
            return false;
        }
    }
    
    public function getBaigData($nick = NULL, $id = NULL){
        
        if($nick != null) {
            $baigData = mysqlDB::getOne("SELECT `baigData` FROM `".MYSQL_USERS_TABLE."` WHERE `lygis` = 'a' AND `nick` = '".$this->dataFix($nick)."' AND `patvirtinimas` = 'taip'");
        }
        else if($id) {
            $baigData = mysqlDB::getOne("SELECT `baigData` FROM `".MYSQL_USERS_TABLE."` WHERE `lygis` = 'a' AND `id` = '".$id."' AND `patvirtinimas` = 'taip'");
        }
        
        if($baigData == ""){
            return false;
        }else{
            return $baigData;
        }
    
    }
    
    public function addVip($days, $nick = NULL, $id = NULL) {
        
        if($nick != null) {
            $patvirtinimas = mysqlDB::getOne("SELECT `patvirtinimas` FROM `".MYSQL_USERS_TABLE."` WHERE `nick` = '".$this->dataFix($nick)."'");
        }else{
            $patvirtinimas = mysqlDB::getOne("SELECT `patvirtinimas` FROM `".MYSQL_USERS_TABLE."` WHERE `id` = '".$id."'");
        }
        
        if($patvirtinimas != "taip"){
            $days = $days - 5;
            if($days < 1){
                $days = 1;
            }
        }
        
        $baigData = ($nick != null) ? strtotime($this->getBaigData($nick)) : strtotime($this->getBaigData(null, $id));
        if($baigData <= time()){
            $baigData = date("Y-m-d",strtotime('+'.$days.' days')); //nustatom nauja
        }else{
            $baigData = date("Y-m-d",($baigData + 60*60*24*$days)); //pratesiam
        }
        
        if($nick != null) {
            mysqlDB::query("UPDATE `".MYSQL_USERS_TABLE."` SET `access` = 'bit', `lygis` = 'a', `patvirtinimas` = 'taip', `nickBaigData` = '', `baigData` = '".$baigData."' WHERE `nick` = '".$this->dataFix($nick)."'");
            $rt = mysql_affected_rows();
        } else {
            mysqlDB::query("UPDATE `".MYSQL_USERS_TABLE."` SET `access` = 'bit', `lygis` = 'a', `patvirtinimas` = 'taip', `nickBaigData` = '', `baigData` = '".$baigData."' WHERE `id` = '".$id."'");
            $rt = mysql_affected_rows();
            mysqlDB::query("
                DELETE t2.* FROM `".MYSQL_USERS_TABLE."` AS t2
                    LEFT JOIN `".MYSQL_USERS_TABLE."` AS t1 ON t1.nick = t2.nick AND t1.id = '".$id."' AND `t1`.`patvirtinimas` = 'taip'
                WHERE t1.id IS NOT NULL AND `t2`.`patvirtinimas` = 'ne'
            ");
        }
        return $rt;
    }
    
    public function identifyLang(){
        preg_match('#/([A-Z]{2})[+^/]#',$_SERVER['REQUEST_URI'],$return);
        $lang = end($return);
        $langs = array("LT","EN","RU");
        if(in_array($lang, $langs)){
            setcookie('language',$lang,time()+60 * 60 * 24 * 32,"/");
            return $lang;
        }else{
            if(in_array($_COOKIE['language'], $langs)){
                return $_COOKIE['language'];
            }else{
                return $langs[0];
            }
        }
    }
    
    public function identifyPage() {
        
        $pages = array(
            "nickreg",
            "nickreg-step2",
            "nickreg-payments",
            "nickreg-payed",
            "vip",
            "vip-step2",
            "vip-payments",
            "vip-payed",
            "remind-pass",
            "nick-status",
            "privileges",
            "pricelist",
        );
        
        preg_match('#index.php/([a-z0-9-]{3,})[+^/]#',$_SERVER['REQUEST_URI'],$return);
        $page = end($return);
        if(in_array($page, $pages)){
            return $page;
        }else{
            return $pages[0];
        }
    }
    
    public function identifyPageMod($page) {
        $three = substr($page,0,3);
        
        if($three == "nic"){
            return "nick";
        }
        else if($three == "vip") {
            return "vip";
        }
    
    }
    
    public function getPassByEmail($email) {
        $pass = @mysqlDB::getOne("SELECT `pw` FROM `".MYSQL_USERS_TABLE."` where `email` = '".$this->dataFix($email)."'");
        if($pass){
            return $pass;
        }else{
            return false;
        }
    }
    
    public function getPlayerIDbyNick($nick) {
         $id = mysqlDB::getOne("SELECT `id` FROM `".MYSQL_USERS_TABLE."` WHERE `nick` = '".$this->dataFix($nick)."' AND `patvirtinimas` = 'taip'");
         if($id > 0){
             return $id;
         }else{
             return false;
         }
    }
    
}

class mokejimai extends core {
    
    private $mokejimai_userID;
    
    public function setUserID($id) {
        $this->mokejimai_userID = (int)$id;
    }
    
    public function verifyRequest() {
                $_SS2 = "";
        $pKeyP = base64_decode("LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlETHpDQ0FwaWdBd0lCQWdJQkFUQU5CZ2txaGtpRzl3MEJBUVVGQURCdE1Rc3dDUVlEVlFRR0V3Sk1WREVRDQpNQTRHQTFVRUJ4TUhWbWxzYm1sMWN6RWZNQjBHQTFVRUNoTVdSVlpRSUVsdWRHVnlibUYwYVc5dVlXd3NJRlZCDQpRakVQTUEwR0ExVUVBeE1HWlhad0xteDBNUm93R0FZSktvWklodmNOQVFrQkZndHBibVp2UUdWMmNDNXNkREFlDQpGdzB3T0RBM01ESXhNVFExTURWYUZ3MHdPVEEzTURJeE1UUTFNRFZhTUdVeEN6QUpCZ05WQkFZVEFreFVNUjh3DQpIUVlEVlFRS0V4WkZWbEFnU1c1MFpYSnVZWFJwYjI1aGJDd2dWVUZDTVJrd0Z3WURWUVFERXhCM2QzY3VkMlZpDQpkRzl3WVhrdVkyOXRNUm93R0FZSktvWklodmNOQVFrQkZndHBibVp2UUdWMmNDNXNkRENCbnpBTkJna3Foa2lHDQo5dzBCQVFFRkFBT0JqUUF3Z1lrQ2dZRUF4bEh5T3Z0THgxOVZDUCtaa1hkc0dYS3BGZzVnalc4V1d4UFh5MVlJDQpBTkxaZlhOYkpzRWRzbEUxeDBUdkRMVUU4WUxTaXRVaE9OSDRmVDBCdWVDM3ArRUlkZFdSK01VQ0tEcks0UzFDDQp2VWxta3JoMFU3dkg1OWZLbDc1Q09CR1ArUG9wZjBoamEvNnFpZUpWaHBqQ1VGa0ZCRHpwVjNjMzQyQm9aYWd5DQphVHNDQXdFQUFhT0I1akNCNHpBSkJnTlZIUk1FQWpBQU1Dd0dDV0NHU0FHRytFSUJEUVFmRmgxUGNHVnVVMU5NDQpJRWRsYm1WeVlYUmxaQ0JEWlhKMGFXWnBZMkYwWlRBZEJnTlZIUTRFRmdRVXlUWnBWY3JiVEllVjI2SkpoMkhZDQoxZlp4WUVBd2dZZ0dBMVVkSXdTQmdEQitvWEdrYnpCdE1Rc3dDUVlEVlFRR0V3Sk1WREVRTUE0R0ExVUVCeE1IDQpWbWxzYm1sMWN6RWZNQjBHQTFVRUNoTVdSVlpRSUVsdWRHVnlibUYwYVc5dVlXd3NJRlZCUWpFUE1BMEdBMVVFDQpBeE1HWlhad0xteDBNUm93R0FZSktvWklodmNOQVFrQkZndHBibVp2UUdWMmNDNXNkSUlKQU1nODM2c2cwWVltDQpNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0R0JBRGY1MVlzOWVrQVlNdFZnS3NFMlFaWjhueDZUWnRTejFNN1ZYQ282DQp2U2hLWkI0TlRIM1AyRDNVaG42Y0hLZXMwVGJTWlZWQ2hsRE1ON2MwVjAzQUpXdzJrQlhram5iQTRLeDJxeUlJDQo4R1dlVW1CdmdHYVR4cmZnZXh2TXExN0NEVmVrbUE5ekJoK09FMVZ3THdrVUZmNStSMTRDQ1g4anhFdmRYcU1WDQpLL0dqDQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0t");
        $pKey = openssl_pkey_get_public($pKeyP);
        if(!$pKey) return false;
        foreach($_GET As $key => $value) if($key!='_ss2') $_SS2 .= "{$value}|";
        $ok = openssl_verify($_SS2, base64_decode($_GET['_ss2']), $pKey);
        return ($ok === 1);
    }
    
    public function TestTransaction( $transaction, $userPassword, $ordeID, $test = 0, $status = 1 ){
        return ( $transaction == md5("{$userPassword}|{$ordeID}|{$test}|{$status}") );
     }
     
     public function TestMk(){
        $wTransaction = $_GET['_ss1'];
        $wPassword = MOKEJIMAI_PW;
        $wOrderID = $_GET['orderid'];
        $wTest = 0;
        $arrSS1 = array( $wOrderID, intval($wTest), 1 );
        if ($wTransaction == md5( md5( $wPassword ) . '|' . implode( '|', $arrSS1 )) ) 
            return true; 
        else 
            return false; 
     }
     
     private function mk_check ( $password, $id, $mechant_id ) {
        return md5("{$password}|{$id}|{$_SERVER[REMOTE_ADDR]}|{$mechant_id}");
    }
    
//    public function verifyRequest() {
//        return true;
//    }
    
}

class mokejimaiSMS extends mokejimai {
    
    public function getDBkeyword($keyword, $number, $amount, $currency, $mod) {
        $sql = mysqlDB::query("SELECT * FROM `".MYSQL_SMS_TABLE."` WHERE `price` = '$amount' AND `number` = '$number' AND `keyword` = '".$this->dataFix($keyword)."' AND `currency` = '".$this->dataFix($currency)."' AND `mod` = '".$mod."'");
        if(mysql_num_rows($sql)){
                return mysql_fetch_array($sql);
        }else{
            return false;
        }
    }
    
    public function getKeywordMod($keyword) {
        $sql = mysqlDB::query("SELECT  `mod` FROM `sms1` where UCASE(`keyword`) = '$keyword' limit 1");
        
        print mysql_error();
        if(mysql_num_rows($sql)){
                return mysql_fetch_array($sql);
        }else{
            return false;
        }
    }
    
    
    
    public function getKewordData(){
        $playerID = end(explode(" ", $_GET['sms']));
        $keyword = str_replace(" ".$playerID, "", $_GET['sms']);
        $return = array(
            "keyword"  => strtolower($keyword),
            "playerID" => round($playerID),
            "from"         => $_GET['to'],
            "amount"     => $_GET['amount'],
            "currency" => $_GET['currency'],
            "country"     => $_GET['country'],
        );
        return $return;
    }
    
}

class mokejimaiEBANK extends mokejimai {
    
    public function getDaysByPrice($price, $mod) {
        $return = mysqlDB::getOne("SELECT `days` FROM `".MYSQL_EBANK_TABLE."` WHERE `price` = '".round($price)."' AND `mod` = '".$mod."'");
        if($return >= 0){
            return $return;
        }else{
            return false;
        }
    }

}

?>
