<?php
include("config.php");

function random_password( $length = 8 ) {
    $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()_-=+;:,.?";
    $password = substr( str_shuffle( $chars ), 0, $length );
    return $password;
}
function mail_send($to, $from_user, $from_email, $subject = '(No subject)', $message = '')
{
    $from_user = "=?UTF-8?B?".base64_encode($from_user)."?=";
    $subject = "=?UTF-8?B?".base64_encode($subject)."?=";

    $headers = "From: $from_user <$from_email>\r\n".
        "MIME-Version: 1.0" . "\r\n" .
        "Content-type: text/html; charset=UTF-8" . "\r\n";

    return mail($to, $subject, $message, $headers);
}

$login = filter_input(INPUT_POST, 'loginid', FILTER_SANITIZE_SPECIAL_CHARS);
//TODO Сделать всё нормальным человеческим способом, как у белых людей. Сброс пароля генерирует ссылку на почту, ссылка на почте разрешает одноразовую смену пароля.
if ($login) {
//    $sql = mysql_query("SELECT `id`, `login`, `realname`, `email` FROM `users` WHERE LOWER(`login`) = '" . $_POST['loginid'] . "' LIMIT 1");
//    $sql = mysql_fetch_array($sql, MYSQL_ASSOC);
    $sql = db::c()->query('SELECT `id`, `login`, `email` FROM `users` WHERE `login` = "?s" LIMIT 1', $login)->fetch_assoc();
    $newpass = random_password();
    $lasttime = date('Y-m-d', strtotime($Date. ' + 1 days'));
    $ip = $_SERVER['REMOTE_ADDR'];

    if ($sql['login'] && db::c()->query('INSERT INTO `confirmpasswd` (`login`, `passwd`, `date`, `ip`, `active`) VALUES ("?s", "?s", "?s", "?s", "?s")', $sql['login'], $newpass, $lasttime, $ip)) {

        $message = "Здравствуйте!<br><br>
                    Кто-то запросил восстановление пароля к вашему персонажу".$sql['login'].".<br>
                    Ваш новый пароль:".$newpass.".<br><br>
                    Для подтверждения нового пароля пройдите по 
                    <a href='".GAMEDOMAIN."/confirmpassw.php?newpass=".$newpass."&login=".$sql['login']."&timev=".$lasttime."'> данной ссылке</a>.<br><br>
                    Ссылка будет действовать до <em>".date('d-M-Y', $lasttime)."</em>.
                    ";
        if (mail_send($sql['email'],"Noreply", "noreply@".GAMEDOMAIN, "Восстановление забытого пароля", $message)) {
            echo "<h3>Письмо отправлено.</h3>";
        } else {
            echo "<h3>Ошибка: письмо не отправлено!</h3>";
        }
    } else {
        echo "<h3>Сегодня пароль уже высылался или такой login отсутствует.</h3>";
    }
}
?>
<!DOCTYPE html>
<html lang="ru_RU">
<head>
    <meta charset="utf-8">
    <link href="static/styles/forgot-password.css" rel="stylesheet">
    <title>Восстановление пароля</title>
    <script type="text/javascript">
        function sendmailpassw() {
            var loginP = document.getElementById('loginid').value;
            if (loginP == '' || loginP.length > 50) {
                alert('Введен некоректный login');
                return false;
            }
            else document.sendmailid.submit();
        }
    </script>
</head>

<body>
<a id="top-logo" href="/" title="На главную"></a>

<?php
if (!empty($error)):
    $error_list = explode('<br>', $error);
    ?>
    <div id="error">
        <h1>Ошибка при регистрации</h1>

        <?php if (count($error_list) > 1): ?>
            <ul>
                <?php foreach ($error_list as $error_item):
                    if (empty($error_item)): continue; endif; ?>
                    <li><?php echo $error_item; ?></li>
                <?php endforeach; ?>
            </ul>
        <?php else: ?>
            <?php echo $error; ?>
        <?php endif; ?>
    </div>
<?php endif; ?>

<form name='sendmailid' method="post">
    <h1>Забыли пароль?</h1>

    <div class="form-input">
        <div class="name">
            <label for="loginid">Укажите логин персонажа:</label>
        </div>
        <div class="value">
            <input placeholder="Логин" type='text' value='<?php echo $_POST['loginid']; ?>' id='loginid'
                   name='loginid'/>
        </div>
        <div class="comment">
            Для восстановления пароля введите свой login и нажмите кнопку &laquo;Отправить письмо&raquo;.<br>
            Письмо будет выслано на email адрес, указанный вами при регистрации.<br>
            Восстанавливать пароль можно только раз в сутки.<br>
        </div>
    </div>

    <div class="form-input">
        <div class="submit">
            <input type="submit" onClick="sendmailpassw(); return false;" value="Отправить письмо"/>
        </div>
    </div>
</form>

</body>
</html>