<?php
/* DCMS Special
 * Дата последнего редактирования 22.01.2016
 * Модифицировал densnet
 */

foreach (array('start', 'compress', 'sess', 'settings', 'db_connect', 'ipua', 'fnc', 'shif') as $inc) {
    require_once "sys/inc/$inc.php";
}

$show_all = true;

require_once H . 'sys/inc/user.php';

only_unreg();

$set['title'] = lang('Восстановление пароля');

require_once H . 'sys/inc/thead.php';

if (isset($_POST['nick']) && isset($_POST['mail']) && $_POST['nick'] != NULL && $_POST['mail'] != NULL) {
    $nck = $db->super_query("SELECT COUNT(*) as count FROM `user` WHERE `nick` = '" . $db->safesql($_POST['nick']) . "'");
    if ($nck['count'] == 0) {
        $err = lang("Пользователь с таким логином не зарегистрирован");
    } else
        $ncka = $db->super_query("SELECT COUNT(*) as count FROM `user` WHERE `nick` = '" . $db->safesql($_POST['nick']) . "' AND `ank_mail` = '" . $db->safesql($_POST['mail']) . "'");
    if ($ncka['count'] == 0) {
        $err = lang('Неверный адрес E-mail или информация о E-mail отсутствует');
    } else {
        $q = $db->query("SELECT * FROM `user` WHERE `nick` = '" . $db->safesql($_POST['nick']) . "' LIMIT 1");
        $user2 = $db->get_row($q);
        $new_sess = substr(md5(passgen()), 0, 20);
        $subject = lang("Восстановление пароля");
        $regmail = "" . lang("Здравствуйте") . " $user2[nick]<br />
" . lang('Вы активировали восстановление пароля') . "<br />
" . lang('Для установки нового пароля перейдите по ссылке') . ":<br />
<a href='http://$_SERVER[HTTP_HOST]/pass.php?id=$user2[id]&amp;set_new=$new_sess'>http://$_SERVER[HTTP_HOST]/pass.php?id=$user2[id]&amp;set_new=$new_sess</a><br />
" . lang('Данная ссылка действительна до первой авторизации под своим логином') . " ($user2[nick])<br />
" . lang('С уважением, администрация сайта') . "<br />
";
        $adds = "From: \"password@$_SERVER[HTTP_HOST]\" <password@$_SERVER[HTTP_HOST]>\n";
        $adds .= "Content-Type: text/html; charset=utf-8\n";
        mail($user2['ank_mail'], '=?utf-8?B?' . base64_encode($subject) . '?=', $regmail, $adds);

        $db->query("UPDATE `user` SET `sess` = '$new_sess' WHERE `id` = '$user2[id]' LIMIT 1");

        msg(lang("Ссылка для установки нового пароля отправлена на e-mail") . " \"$user2[ank_mail]\"");
    }
}


if (isset($_GET['id']) && isset($_GET['set_new']) && strlen($_GET['set_new']) == 20) {
    $u_id = $db->super_query("SELECT COUNT(*) as count FROM `user` WHERE `id` = '" . intval($_GET['id']) . "'     AND `sess` = '" . $db->safesql($_GET['set_new']) . "'");
    if ($u_id['count'] == 1)
        $q = $db->query("SELECT * FROM `user` WHERE `id` = '" . intval($_GET['id']) . "' LIMIT 1");
    $user2 = $db->get_row($q);

    if (isset($_POST['pass1']) && isset($_POST['pass2'])) {
        if ($_POST['pass1'] == $_POST['pass2']) {
            if (utf8_strlen($_POST['pass1']) < 6) {
                $err = lang('По соображениям безопасности новый пароль не может быть короче 6-ти символов');
            }
            if (utf8_strlen($_POST['pass1']) > 32) {
                $err = lang('Длина пароля превышает 32 символа');
            }
        } else {
            $err = lang('Новый пароль не совпадает с подтверждением');
        }

        if (!isset($err)) {
            setcookie('id_user', $user2['id'], time() + 60 * 60 * 24 * 365);
            $db->query("UPDATE `user` SET `pass` = '" . shif($_POST['pass1']) . "' WHERE `id` = '$user2[id]' LIMIT 1");
            setcookie('pass', cookie_encrypt($_POST['pass1'], $user2['id']), time() + 60 * 60 * 24 * 365);
            msg(lang('Пароль успешно изменен'));
        }
    }

    err();

    echo "<form class='list-group-item-null' action='/pass.php?id=$user2[id]&amp;set_new=" . esc($_GET['set_new'], 1) . "&amp;$passgen' method=\"post\">\n";

    echo lang("Логин") . ":<br />\n<input type=\"text\" class='form-control' disabled='disabled' value='$user2[nick]' maxlength=\"32\" size=\"16\" /><br />\n";
    echo lang("Новый пароль") . ":<br />\n<input class='form-control' type='password' name='pass1' value='' /><br />\n";
    echo lang("Подтверждение") . ":<br />\n<input class='form-control' type='password' name='pass2' value='' /><br />\n";

    $doc->Button('btn btn-success btn-sm', 'save', 'save', 'Сохранить');
    echo "</form>";
} else {

    err();
    ?>

    <div class = 'list-group-item-null'>
        <b>Для восстановления пароля:</b><br />
        &#8226; Введите в соответственную форму Ваш логин и e-mail. <br />
        &#8226; На Ваш E-mail придет ссылка для установки нового пароля.<br />
        &#8226; Если Вы не заполнили E-mail в анкете, обратитесь в службу поддержки данного ресурса.
    </div>
    <?php
    echo "<form action='/pass.php?$passgen' class='list-group-item' method='post'>";

    $doc->Input('nick', 'Введите логин', 50);
    $doc->Input('mail', 'Введите E-mail', 50);
    $doc->Button('btn btn-success btn-sm', null, null, 'Далее');

    echo "</form>";
}

require_once H . 'sys/inc/tfoot.php';
