<?php
session_start();
require_once __DIR__ . '/includes/install_bootstrap.php';
if (!rozklad_auth_allowed()) {
    rozklad_require_mail_setup('Пошта ще не налаштована. Без цього відновлення пароля недоступне.');
}
require_once __DIR__ . '/includes/db_config.php';

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;

require_once __DIR__ . '/includes/PHPMailer/src/PHPMailer.php';
require_once __DIR__ . '/includes/PHPMailer/src/Exception.php';
require_once __DIR__ . '/includes/PHPMailer/src/SMTP.php';

function current_base_url(): string {
    $is_https = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') || (isset($_SERVER['SERVER_PORT']) && (int)$_SERVER['SERVER_PORT'] === 443);
    return ($is_https ? 'https' : 'http') . '://' . ($_SERVER['HTTP_HOST'] ?? 'localhost');
}

$message = '';
$error = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $email = trim((string)($_POST['email'] ?? ''));
    $sql = 'SELECT * FROM users WHERE email = ? LIMIT 1';
    $stmt = $conn->prepare($sql);
    $stmt->bind_param('s', $email);
    $stmt->execute();
    $result = $stmt->get_result();
    if ($result && $result->num_rows > 0) {
        $user = $result->fetch_assoc();
        $reset_token = bin2hex(random_bytes(16));
        $expires = date('Y-m-d H:i:s', strtotime('+1 hour'));
        $sql = 'UPDATE users SET reset_token = ?, reset_token_expires = ? WHERE id = ?';
        $stmt = $conn->prepare($sql);
        $stmt->bind_param('ssi', $reset_token, $expires, $user['id']);
        if ($stmt->execute()) {
            $mail_config = require __DIR__ . '/includes/config_mail.php';
            $mail = new PHPMailer(true);
            try {
                $mail->isSMTP();
                $mail->Host = $mail_config['host'];
                $mail->SMTPAuth = true;
                $mail->Username = $mail_config['username'];
                $mail->Password = $mail_config['password'];
                $mail->SMTPSecure = ($mail_config['encryption'] ?? 'tls') === 'ssl' ? PHPMailer::ENCRYPTION_SMTPS : PHPMailer::ENCRYPTION_STARTTLS;
                $mail->Port = (int)($mail_config['port'] ?? 587);
                $mail->CharSet = 'UTF-8';
                $mail->setFrom($mail_config['from_email'], $mail_config['from_name'] ?? 'Розклад занять');
                $mail->addAddress($email, (string)($user['full_name'] ?? ''));
                $link = current_base_url() . '/reset_password.php?token=' . urlencode($reset_token);
                $mail->Subject = 'Відновлення пароля';
                $mail->Body = 'Клікніть за посиланням для скидання пароля: ' . $link;
                $mail->send();
                $message = 'Лист для відновлення пароля відправлено на ваш email.';
            } catch (Exception $e) {
                $error = 'Помилка відправки email: ' . $mail->ErrorInfo;
            }
        } else {
            $error = 'Помилка оновлення токена: ' . $stmt->error;
        }
    } else {
        $error = 'Цей email не зареєстрований.';
    }
}
?>
<!DOCTYPE html>
<html lang="uk">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Відновлення пароля</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <style>.container{max-width:600px;margin:0 auto;padding:20px}h2{text-align:center;margin-bottom:20px}</style>
</head>
<body>
    <?php include __DIR__ . '/includes/header.php'; ?>
    <div class="container">
        <h2>Відновлення пароля</h2>
        <?php if ($message): ?><p class="text-success text-center"><?= htmlspecialchars($message, ENT_QUOTES, 'UTF-8') ?></p><?php endif; ?>
        <?php if ($error): ?><p class="text-danger text-center"><?= htmlspecialchars($error, ENT_QUOTES, 'UTF-8') ?></p><?php endif; ?>
        <div class="form-group">
            <form method="POST">
                <label for="email">Email:</label>
                <input type="email" id="email" name="email" class="form-control" required>
                <button type="submit" class="btn btn-primary w-100 mt-3">Відправити</button>
            </form>
        </div>
        <a href="/login.php" class="d-block text-center mt-3">Повернутися до входу</a>
    </div>
    <?php include __DIR__ . '/includes/footer.php'; ?>
</body>
</html>
