<?php
declare(strict_types=1);

include_once 'concha.php';

$captchaSecret = 'CAMBIA_ESTA_CLAVE_POR_UNA_LARGA_Y_PRIVADA_2026';

function formchat_e(?string $valor): string
{
    return htmlspecialchars((string)$valor, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
}

function formchat_salirIframe(string $titulo, string $mensaje, bool $ok, string $dom = ''): void
{
    $color = $ok ? '#198754' : '#dc3545';
    ?>
    <!DOCTYPE html>
    <html lang="es">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title><?php echo formchat_e($titulo); ?></title>
        <style>
            html, body{
                margin:0;
                padding:0;
                background:#fff;
                font-family:Arial, Helvetica, sans-serif;
            }
            body{
                padding:10px;
            }
            .box{
                border:1px solid #e4e4e4;
                background:#fff;
                padding:14px 12px;
                text-align:center;
            }
            .estado{
                display:inline-block;
                background:<?php echo formchat_e($color); ?>;
                color:#fff;
                font-size:12px;
                font-weight:bold;
                padding:6px 10px;
                margin-bottom:10px;
            }
            .texto{
                font-size:12px;
                line-height:1.45;
                color:#333;
                margin-bottom:12px;
            }
            .btn{
                display:inline-block;
                padding:8px 12px;
                background:#0d6efd;
                color:#fff;
                text-decoration:none;
                font-size:12px;
                font-weight:bold;
                border:none;
            }
            .btn:hover{
                background:#0b5ed7;
                color:#fff;
            }
        </style>
    </head>
    <body>

    <div class="box">
        <div class="estado"><?php echo formchat_e($titulo); ?></div>
        <div class="texto"><?php echo nl2br(formchat_e($mensaje)); ?></div>
        <a class="btn" href="<?php echo formchat_e($dom); ?>/chat.php?ts=<?php echo time(); ?>">Volver al chat</a>
    </div>

    <?php if ($ok) : ?>
    <script>
    try {
        if (window.parent && window.parent.resetMiniChatForm) {
            window.parent.resetMiniChatForm();
        }
    } catch (e) {}
    </script>
    <?php endif; ?>

    </body>
    </html>
    <?php
    exit;
}

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    formchat_salirIframe('Aviso', 'Acceso no válido.', false, $dom ?? '');
}

$comentarios = trim((string)($_POST['comentarios'] ?? 'ninguna'));
$nombre      = trim((string)($_POST['nombre'] ?? ''));
$mensaje     = trim((string)($_POST['mensaje'] ?? ''));
$IDM         = (int)($_POST['IDM'] ?? 0);
$ip          = trim((string)($_SERVER['REMOTE_ADDR'] ?? ''));

$respuestaUser = strtoupper(trim((string)($_POST['mini_captcha'] ?? '')));
$captchaReal   = strtoupper(trim((string)($_POST['captcha_real'] ?? '')));
$captchaFirma  = trim((string)($_POST['captcha_firma'] ?? ''));

if ($comentarios === '') {
    $comentarios = 'ninguna';
}

$modosValidos = ['captcha', 'ninguna', 'facebook'];
if (!in_array($comentarios, $modosValidos, true)) {
    $comentarios = 'ninguna';
}

if ($comentarios === 'captcha') {
    if ($captchaReal === '' || $captchaFirma === '' || $respuestaUser === '') {
        formchat_salirIframe('Error', 'El captcha es incorrecto.', false, $dom ?? '');
    }

    $firmaEsperada = hash_hmac('sha256', $captchaReal, $captchaSecret);

    if (!hash_equals($firmaEsperada, $captchaFirma)) {
        formchat_salirIframe('Error', 'Captcha inválido.', false, $dom ?? '');
    }

    if (!hash_equals($captchaReal, $respuestaUser)) {
        formchat_salirIframe('Error', 'El captcha es incorrecto.', false, $dom ?? '');
    }
}

if ($nombre === '' || strtolower($nombre) === 'tu nombre') {
    formchat_salirIframe('Error', 'Debes escribir tu nombre.', false, $dom ?? '');
}

if ($mensaje === '' || strtolower($mensaje) === 'mensaje') {
    formchat_salirIframe('Error', 'Debes escribir un mensaje.', false, $dom ?? '');
}

if (preg_match('/http|https|www\.|html|<|>|@/i', $nombre)) {
    formchat_salirIframe('Error', 'No escribas mails, links ni código en el nombre.', false, $dom ?? '');
}

if (preg_match('/http|https|www\.|html|<|>|@/i', $mensaje)) {
    formchat_salirIframe('Error', 'No escribas mails, links ni código en el mensaje.', false, $dom ?? '');
}

if (!isset($conn) || !($conn instanceof mysqli)) {
    $conn = @new mysqli((string)$host, (string)$usuario, (string)$contra, (string)$basedatos);
    if ($conn->connect_error) {
        formchat_salirIframe('Error', 'No se pudo conectar a la base de datos.', false, $dom ?? '');
    }
}

$conn->set_charset('utf8mb4');

$verEstado = 'si';
if ($comentarios === 'facebook') {
    $verEstado = 'no';
}

$sql = "INSERT INTO chat (nombre, mensaje, fecha, ver, IDM, IP)
        VALUES (?, ?, NOW(), ?, ?, ?)";

$stmt = $conn->prepare($sql);

if (!$stmt) {
    formchat_salirIframe('Error', 'No se pudo preparar la consulta.', false, $dom ?? '');
}

$stmt->bind_param('sssis', $nombre, $mensaje, $verEstado, $IDM, $ip);

if (!$stmt->execute()) {
    $stmt->close();
    formchat_salirIframe('Error', 'No se pudo guardar el mensaje.', false, $dom ?? '');
}

$stmt->close();

if (isset($e_email) && $e_email === 'si' && !empty($emailsitio)) {
    $recipiente = (string)$emailsitio;
    $asunto     = ($IDM > 0) ? 'NUEVA RESPUESTA EN VIVO' : 'NUEVO MENSAJE EN VIVO';

    $msg  = "-----------------------------------------------------\n";
    $msg .= ($IDM > 0) ? "NUEVA RESPUESTA:\n\n" : "NUEVO MENSAJE:\n\n";
    $msg .= "Nombre: " . $nombre . "\n";
    $msg .= "Mensaje: " . $mensaje . "\n";
    $msg .= "Estado: " . $verEstado . "\n";
    $msg .= "IDM: " . $IDM . "\n\n";
    $msg .= "-----------------------------------------------------\n\n";
    $msg .= "PARA ACEPTARLO INGRESA AL PANEL " . (string)($dom ?? '') . "/panel\n";

    $headers = 'From: ' . ((isset($email) && $email !== '') ? $email : 'no-reply@localhost');
    @mail($recipiente, $asunto, $msg, $headers);
}

if ($comentarios === 'facebook') {
    formchat_salirIframe(
        'Mensaje enviado',
        'Tu mensaje fue recibido y quedó pendiente de moderación antes de publicarse.',
        true,
        $dom ?? ''
    );
} else {
    formchat_salirIframe(
        'Mensaje enviado',
        'Tu mensaje fue publicado correctamente.',
        true,
        $dom ?? ''
    );
}