<?php
define('_CONSTANT_', 1);
require_once '../../../core/start.php';
checkAuth();
head('Настройки', 'Настройки');

switch ($do) 
{
    default : 
        ?> 
<a href="<?=HOME?>/modules/user/settings/index.php?do=editLogin" class="link-touch"><?=ico('engine.png')?> Изменить логин</a>
<a href="<?=HOME?>/modules/user/settings/index.php?do=editPassword" class="link-touch"><?=ico('engine.png')?> Изменить пароль</a>
<a href="<?=HOME?>/modules/user/settings/index.php?do=editBackground" class="link-touch"><?=ico('engine.png')?> Изменить фон пользователя</a>
<a href="<?=HOME?>/modules/user/settings/index.php?do=editPhoto" class="link-touch"><?=ico('engine.png')?> Изменить фотографию пользователя</a>
<a href="<?=HOME?>/modules/user/settings/index.php?do=setDesign" class="link-touch"><?=ico('engine.png')?> Изменить дизайн</a>
<a href="<?=HOME?>/modules/user/settings/index.php?do=setAjax" class="link-touch"><?=ico('engine.png')?> Настройки Ajax</a>
<a href="<?=HOME?>/modules/user/settings/index.php?do=setSide" class="link-touch"><?=ico('engine.png')?> Изменить сторону</a>
<a href="<?=HOME?>/modules/user/settings/index.php?do=setClass" class="link-touch"><?=ico('engine.png')?> Изменить класс</a>
<a href="<?=HOME?>/modules/user/settings/index.php?do=refSystem" class="link-touch"><?=ico('engine.png')?> <span style="color: darkorange;">Реферальная система</span></a>
<?php 
        break; 
        case'editLogin': 
            $cost = 500;
            if (isset($_POST['try'])) 
            {
                $data = $_POST; 
                $data['login'] = $Filter->clearString($data['login']); 
                
                if (empty($data['login'])) 
                {
                    errorNoExit('Обнаружено пустое поле.');
                } 
                elseif ($data['login'] == $user['login']) 
                {
                    errorNoExit('Вы уже используете данный логин.');
                } 
                elseif (DB::$dbs->querySingle("SELECT COUNT(`id`) FROM ".USERS." WHERE `login` = ?", [$data['login']]) == TRUE) 
                {
                    errorNoExit('Данный логин уже занят.');
                }
                elseif (mb_strlen($data['login']) < 4 || mb_strlen($data['login']) > 10) 
                {
                    errorNoExit('Длина логина должна быть в пределе [4-10].');
                } 
                elseif ($user['money'] < $cost) 
                {
                    errorNoExit('Недостаточно золота.');
                } 
                else 
                {
                    DB::$dbs->query("UPDATE ".USERS." SET `login` = ?, `money` = ? WHERE `id` = ?", [$data['login'], ($user['money'] - $cost), $user['id']]);
                    success('Логин изменен.', '/modules/user/settings/index.php');
                }
            } 
            ?> 
<form action="" method="POST"> 
Ваш текущий логин: <?=$Filter->output($user['login'])?><br/> 
Стоимость смены логина <?= moneyIcon().$Filter->clearInt($cost)?> золота<br/> 
Новый логин[4-10]:<br/> 
<input type="text" name="login" maxlength="10" placeholder="Введите логин" value="<?=$Filter->output($user['login'])?>"><br/> 
<input type="submit" name="try" value="Сменить">
</form> 
<?php 
            $array = ['Настройки']; 
            navPanel($array);
            break; 
            
        case 'editBackground': 
            
            echo ico('info.png') . ' Цена смены фона ' . moneyIcon() . $settings['user_background_cost'] . '<br/>';
            
            if (isset($_POST['id'])) 
            {
                $id = $Filter->clearInt($_POST['id']); 
                
                if (!is_numeric($id) || $id > 5 || $id < 0 || $user['money'] < $settings['user_background_cost']) 
                {
                    error('Ошибка', '/modules/user/settings/index.php', 'Вернуться в настройки');
                }
                
                DB::$dbs->query("UPDATE " . USERS . " SET `background` = ?, `money` = ? WHERE `id` = ?", [$id, ($user['money'] - $settings['user_background_cost']), $user['id']]);
                success('Вы сменили фон', '/modules/user/settings/index.php', 'Вернуться в настройки');
            } 
            
            echo '<form action="" method="POST"> Выберите фон: <br/>';
            
            for ($i = 1; $i < 5; $i++) 
            {
                echo '<input type="radio" name="id" value="'.$i.'"> <img src="'.HOME.'/img/user/background/'.$i.'.png" width="240" height="170"><hr/>';
            } 
            
            echo '<input type="submit" value="Установить"></form>';
            
            break;

            case 'editPhoto': 

            function img_resize($src, $dest, $width, $height, $rgb=0xFFFFFF, $quality=85)
{
  if (!file_exists($src)) return false;

  $size = getimagesize($src);

  if ($size === false) return false;

  // Определяем исходный формат по MIME-информации, предоставленной
  // функцией getimagesize, и выбираем соответствующую формату
  // imagecreatefrom-функцию.
  $format = strtolower(substr($size['mime'], strpos($size['mime'], '/')+1));
  $icfunc = "imagecreatefrom" . $format;
  if (!function_exists($icfunc)) return false;

  $x_ratio = $width / $size[0];
  $y_ratio = $height / $size[1];

  $ratio       = min($x_ratio, $y_ratio);
  $use_x_ratio = ($x_ratio == $ratio);

  $new_width   = $use_x_ratio  ? $width  : floor($size[0] * $ratio);
  $new_height  = !$use_x_ratio ? $height : floor($size[1] * $ratio);
  $new_left    = $use_x_ratio  ? 0 : floor(($width - $new_width) / 2);
  $new_top     = !$use_x_ratio ? 0 : floor(($height - $new_height) / 2);

  $isrc = $icfunc($src);
  $idest = imagecreatetruecolor($width, $height);

  imagefill($idest, 0, 0, $rgb);
  imagecopyresampled($idest, $isrc, $new_left, $new_top, 0, 0, 
    $new_width, $new_height, $size[0], $size[1]);

  imagejpeg($idest, $dest, $quality);

  imagedestroy($isrc);
  imagedestroy($idest);

  return true;

}

            if (!empty($_FILES['file'])) 
            {
                $name = $_FILES['file']['name'];                     // File name;
                $ext = strtolower(strrchr($name, '.'));              // File format;
                $par = getimagesize($_FILES['file']['tmp_name']);    // File width/height;
                $size = $_FILES['file']['size'];                     // File size;
                $photo = $user['id'].$ext;
                $pictures = ['.jpg', '.jpeg', '.gif', '.png'];       // Allow format;

                $config['photoPar'][0] = 1600;                       // Max width;
                $config['photoPar'][1] = 1600;                       // Max height;
                $config['maxUploadPhoto'] = 5;                       // Max file size[mb];

                /*
                 * Width/Height;
                 */
                if ($par[0] > $config['photoPar'][0] || $par[1] > $config['photoPar'][1]) 
                {
                    error('Разрешение фотографии превышает допустимое значение. [Max. '.$config['photo_par'][0].'x'.$config['photo_par'][1].']', '/modules/user/settings/index.php', 'В настройки');
                } 

                /*
                 * Size;
                 */
                 if ($size > (1048576 * $config['maxUploadPhoto'])) 
                 {
                    error('Размер фотографии превышает допустимое значение. [Max. '.$config['maxUploadPhoto'].'mb]', '/modules/user/settings/index.php', 'В настройки');                     
                 }

                 /*
                  * Format;
                  */
                  if (preg_match('/.php/i', $name) || preg_match('/.pl/i', $name) || $name == '.htaccess' || !in_array($ext, $pictures)) 
                  {
                      error('Не верное расширение файла.', '/modules/user/settings/index.php', 'В настройки');
                  }

                  /*
                   * If don`t get error;
                   */
                   copy($_FILES['file']['tmp_name'], inc . 'img/user/photo/'.$user['id'].$ext);  
                   img_resize(inc . 'img/user/photo/'.$user['id'].$ext, inc . 'img/user/photo/mini/'.$user['id'].$ext, 120, 160); // Mini;
                   DB::$dbs->query("UPDATE " . USERS . " SET `photo` = ?, `is_moderate_photo` = ? WHERE `id` = ?", [$photo, 2, $user['id']]); 
                   success('Фотография успешно загружена и отпралена на модерацию.', '/modules/user/settings/index.php', 'В настройки');
            } 

            /*
             * Delete image;
             */ 
             if (!empty($_POST['delete'])) 
             {
                 unlink("".inc."img/user/photo/".$user['photo']);
                 unlink("".inc."img/user/photo/mini/".$user['photo']);
                 DB::$dbs->query("UPDATE " . USERS . " SET `photo` = ?, `is_moderate_photo` = ? WHERE `id` = ?", [NULL, 0, $user['id']]); 
                 success('Фотография успешно удалена.', '/modules/user/settings/index.php', 'В настройки');
             }

            if (empty($user['photo'])) 
            {
                ?> 
                <form action="" enctype="multipart/form-data" method="POST"> 
                <b>Фотография:</b>[max. 5mb; 1600x1600px; jpg, gif, png]<br/>
                <input type="file" name="file"/><br/>
                <input type="submit" value="Загрузить"/>
                </form>
                <?php
            } 
            else 
            {
                ?> 
                <div style="text-align: center;"><img src="<?=(!empty($user['photo']) && $user['is_moderate_photo'] == 1 ?  HOME .'/img/user/photo/mini/'.$user['photo'] : HOME . '/img/user/photo/mini/empty.gif')?>" width="120px" height="160px" alt="[user-photo]"></div><br/>
                <form action="" method="POST">
                <input type="submit" name="delete" value="Удалить"/>
                </form>
                <?php
            } 

            break;

            case 'editPassword': 

            if (isset($_POST['try'])) 
            {
                $data = $_POST;
                
                /* Old password */
                $data['password'] = $Filter->clearString($data['password']);
                $data['password'] = crypt($data['password'], '$1$game$');
                /* End */
                /* New password */
                $data['passwordNew'] = $Filter->clearString($data['passwordNew']);
                $data['passwordNew'] = crypt($data['passwordNew'], '$1$game$');
                $data['passwordNewRe'] = $Filter->clearString($data['passwordNewRe']);
                $data['passwordNewRe'] = crypt($data['passwordNewRe'], '$1$game$');
                /* End */
                /* Check $data */
                if ($user['password'] != $data['password']) 
                {
                    error('Старый пароль введен не верно', '/modules/user/settings/index.php', 'В настройки');
                } 
                else if ($data['passwordNew'] != $data['passwordNewRe']) 
                {
                    error('Пароли не совпадают', '/modules/user/settings/index.php', 'В настройки');                    
                } 
                else if (empty($data['passwordNew']) || empty($data['passwordNewRe']) || mb_strlen($data['passwordNew']) > 20 || mb_strlen($data['passwordNew']) < 6|| mb_strlen($data['passwordNewRe']) > 20 || mb_strlen($data['passwordNewRe']) < 6) 
                {
                    error('Длина пароля должна быть в диапазоне [6-20]', '/modules/user/settings/index.php', 'В настройки');                                        
                } 
                else 
                {
                    /* Update password */
                    DB::$dbs->query("UPDATE " . USERS . " SET `password` = ? WHERE `id` = ?", [$data['passwordNew'], $user['id']]);
                    unset($_SESSION['id']);
                    setcookie('login', '', time() - 30);
                    setcookie('password', '', time() - 30);
                    header("Location: ".HOME."/");
                    exit();
                    /* End */
                } 
            }
            /* End */
            ?> 
            <form action="" method="POST">
            Старый пароль:<br/>
            <input type="text" name="password" placeholder="Введите пароль..."><br/>
            Новый пароль[6-20]:<br/>
            <input type="text" name="passwordNew" placeholder="Введите пароль..."><br/>
            Повторите новый пароль:<br/>
            <input type="text" name="passwordNewRe" placeholder="Введите пароль..."><br/>
            <?=ico('info.png')?> После того как вы нажмете на кнопку продолжить неободимо будет заново пройти аутентификацию введя ваш новый пароль.<br/>
            <input type="submit" name="try" value="Продолжить">
            </form>
            <?php
            $array = ['Настройки']; 
            navPanel($array);
            break; 

            # User design; 
            case 'setDesign': 

            if (isset($_POST['try'])) 
            {
                $data = $_POST;

                $data['design'] = $Filter->output($data['design']);

                $allowDesign = ['lite', 'touch', 'touch-dark', 'touch-blue'];

                if (!in_array($data['design'], $allowDesign))  
                {
                    errorNoExit('Ошибка!');
                } 
                else if ($user['design'] == $data['design']) 
                {
                    errorNoExit('У вас уже установлен данный дизайн');
                } 
                else if (empty($data['design'])) 
                {
                    errorNoExit('Дизайн не выбран!');
                }
                else 
                {
                    DB::$dbs->query("UPDATE ". USERS ." SET `design` = ? WHERE `id` = ?", [$data['design'], $user['id']]);
                    success('Вы сменили дизайн!', '/modules/user/settings/index.php', 'В настройки');
                }
            } 
            ?> 
            <form action="" method="POST">
            <b>Выберите дизайн:</b><br/>
            <select name="design"> 
            <option value="lite"> Lite</option>
            <option value="touch"> Touch</option>
            <option value="touch-dark"> Touch-Dark</option>
            <option value="touch-blue"> Touch-Blue</option>
            </select><br/>
            <input type="submit" name="try" value="Сменить">
            </form>
            <?php
            $array = ['Настройки']; 
            navPanel($array);
            break;

            # Ajax settings;
            case 'setAjax': 

            if (isset($_POST['try'])) 
            {
                $data = $_POST;

                $data['ajax'] = $Filter->clearInt($data['ajax']);
                $allowAjax = [0, 1];

                if (!in_array($data['ajax'], $allowAjax)) 
                {
                    errorNoExit('Ошибка!');
                } 
                else if ($user['ajax'] == $data['ajax']) 
                {
                    errorNoExit('У вас уже включен/выключен ajax');
                } 
                else 
                {
                    DB::$dbs->query("UPDATE ". USERS ." SET `ajax` = ? WHERE `id` = ?", [$data['ajax'], $user['id']]);
                    success('Операция выполнена успешно!', '/modules/user/settings/index.php', 'В настройки');
                }
            } 
            ?> 
            Статус Ajax: <?=($user['ajax'] == 1 ? '<span style="color: green;">[вкл]</span>' : '<span style="color: red;">[выкл]</span>')?><br/>
            <form action="" method="POST">
            <b>Выберите значение:</b><br/>
            <select name="ajax"> 
            <option value="0"> Выключить</option>
            <option value="1"> Включить</option>
            </select><br/>
            <input type="submit" name="try" value="Подтвердить">
            </form>
            <?php
            $array = ['Настройки']; 
            navPanel($array);
            break;

            case 'setSide': 

            if (isset($_POST['try'])) 
            {
                $data = $_POST;

                $allowSide = ['dark', 'white'];

                if (!in_array($data['side'], $allowSide)) 
                {
                    errorNoExit('Ошибка!');
                } 
                else if ($user['side'] == $data['side']) 
                {
                    errorNoExit('Вы и так на этой стороне!');
                } 
                else if ($user['money'] < 1000) 
                {
                    errorNoExit('Недостаточно золота!');
                } 
                else 
                {
                    $another = ($user['side'] == 'white' ? 'dark' : 'white');
                    DB::$dbs->query("UPDATE ". USERS ." SET `side` = ?, `money` = ? WHERE `id` = ?", [$another, ($user['money'] - 1000), $user['id']]);
                    success('Вы успешно сменили сторону персонажа', '/game/index.php');
                }
            } 
            ?>
            Стоимость смены стороны персонажа <?=ico('gold.png')?>1000
            <form action="" method="POST"> 
                <b>Выберите сторону:</b><br/>
                <select name="side"> 
                    <option value="dark"> Тьма</option>
                    <option value="white"> Свет</option>
                </select><br/>
            <input type="submit" name="try" value="Подтвердить">
            </form> 
            <?php
            break;
            
            case 'setClass': 
                
            if (empty($user['class'])) 
            {
                $cost = 0;
            } 
            else 
            {
                $cost = 5000;
            }
                
            if (isset($_POST['try'])) 
            {
                $data = $_POST;
                
                $allowClass = ['warior'];
                
                if (!in_array($data['class'], $allowClass)) 
                {
                    errorNoExit('Ошибка!');
                } 
                else if ($user['class'] == $data['class'])
                {
                    errorNoExit('У вас и так этот класс!');
                } 
                else if ($user['money'] < $cost) 
                {
                    errorNoExit('Недостаточно золота!');
                } 
                else 
                {
                    DB::$dbs->query("UPDATE ". USERS ." SET `class` = ?, `money` = ? WHERE `id` = ?", [$data['class'], ($user['money'] - $cost), $user['id']]);
                    success('Вы успешно сменили класс персонажа', '/game/index.php');
                }
            } 
            ?> 
            <div class="wrap">
                Выбор класса персонажа обойдется вам в <?=ico('gold.png'), $cost?> золота.
            </div>
            <form action="" method="POST"> 
                <b>Выберите класс:</b><br/>
                <select name="class"> 
                    <option value="warior"> Воин</option>
                </select><br/>
            <input type="submit" name="try" value="Подтвердить">
            </form>
            <?php
            break;

            case 'refSystem': 
            ?>
            <div class="headerImg"> 
                <img src="<?=HOME?>/img/present.png" alt="[header-img]" width="350px">
            </div>
            <div class="wrap">
                Ваша реф. ссылка: <span style="color: darkorange;"><b><u>http://wapgame.gq/modules/login/registration.php?ref=<?=$user['id']?></u></b></span><br/>
                <br/>
                <?=ico('info.png')?> - В учет идут только игроки которые достигли 10 уровня.<br/>
                <?=ico('info.png')?> - Когда приглашенный вами игрок достигает 10 уровня вы получаете <span style="color: green;">+<?=ico('gold.png')?>2000</span>, а приглашенный игрок <span style="color: green;">+<?=ico('gold.png')?>1000</span>
            </div>
            <?php
            $all = DB::$dbs->querySingle("SELECT COUNT(`id`) FROM ". USERS ." WHERE `ref` = ? and `lvl` >= ?", [$user['id'], 10]);

            ?> 
            <div class="head">
                Игроки которых вы пригласили
            </div>
            <?php
            if (empty($all)) 
            {
                ?> 
                <div class="wrap">
                    Игроки не найдены
                </div>
                <?php
            } 
            else 
            {
                $n = new Navigator($all,10,'do=refSystem');
                $sql = DB::$dbs->query("SELECT * FROM ".USERS." WHERE `ref` = ? and `lvl` >= ? ORDER BY `lvl` LIMIT {$n->start()}, 10", [$user['id'], 10]);

                while ($ank = $sql -> fetch()) 
                {
                    ?> 
                    <?=userLink($ank['id'], 'link-touch')?>
                    <?php
                } 
                ?> 
                <?=$n->navi();?>
                <?php 
            }
            $array = ['Настройки']; 
            navPanel($array);
            break;
} 
require_once '../../../core/foot.php';