<?php
declare(strict_types=1);

require_once __DIR__ . '/sesion.php';
require_once __DIR__ . '/concha.php';

/* ====== Compat PHP 8.2 + seguridad básica ====== */
if (!isset($conn) || !is_object($conn) || !method_exists($conn, 'query')) {
    http_response_code(500);
    echo 'No se encontró la conexión ($conn). Revisá concha.php';
    exit;
}

@mysqli_set_charset($conn, 'utf8mb4');

function h($v): string
{
    return htmlspecialchars((string)$v, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
}

function count_unseen(mysqli $conn, string $sql): int
{
    $res = $conn->query($sql);
    if (!$res) {
        return 0;
    }
    $row = $res->fetch_assoc();
    $res->free();
    return (int)($row['c'] ?? 0);
}

function bindDynamicParams(mysqli_stmt $stmt, string $types, array &$params): void
{
    if ($types === '' || empty($params)) {
        return;
    }

    $bindNames = [];
    $bindNames[] = $types;

    foreach ($params as $k => &$p) {
        $bindNames[] = &$p;
    }

    call_user_func_array([$stmt, 'bind_param'], $bindNames);
}

function buildQuery(array $overrides = []): string
{
    $params = [
        'filtro'       => $_GET['filtro'] ?? 'pendientes',
        'fecha_inicio' => $_GET['fecha_inicio'] ?? '',
        'fecha_fin'    => $_GET['fecha_fin'] ?? '',
        'buscar'       => $_GET['buscar'] ?? '',
        'p'            => $_GET['p'] ?? 1,
    ];

    foreach ($overrides as $k => $v) {
        if ($v === null) {
            unset($params[$k]);
        } else {
            $params[$k] = $v;
        }
    }

    return '?' . http_build_query($params);
}

/* ====== Contadores ====== */
$m_mensajes    = count_unseen($conn, "SELECT COUNT(*) AS c FROM chat WHERE ver='no'");
$m_comentarios = count_unseen($conn, "SELECT COUNT(*) AS c FROM comentarios WHERE ver='no'");
$m_fotos       = count_unseen($conn, "SELECT COUNT(*) AS c FROM fotosoyentes WHERE ver='no'");
$m_avisos      = count_unseen($conn, "SELECT COUNT(*) AS c FROM avisos WHERE ver='no'");
$m_tot         = $m_mensajes + $m_comentarios + $m_fotos + $m_avisos;

/* ====== Variables de idioma / config ====== */
$nombresitio      = $nombresitio ?? '';
$idioma_100731    = $idioma_100731 ?? 'Moderar chat';
$idioma_100732    = $idioma_100732 ?? 'Comentarios';
$idioma_100733    = $idioma_100733 ?? 'Captcha';
$idioma_100734    = $idioma_100734 ?? 'Ninguna';
$idioma_100735    = $idioma_100735 ?? '';
$idioma_100736    = $idioma_100736 ?? 'Mensajes';
$idioma_100737    = $idioma_100737 ?? 'Ver todos';
$idioma_100738    = $idioma_100738 ?? 'Nombre';
$idioma_100739    = $idioma_100739 ?? 'Mensaje';
$idioma_aceptar   = $idioma_aceptar ?? 'Aceptar';
$idioma_borrar    = $idioma_borrar ?? 'Borrar';
$idioma_volver    = $idioma_volver ?? 'Volver';

$comentarios = $comentarios ?? 'ninguna';

$btnCaptcha  = ($comentarios === 'captcha')  ? 'outline-primary' : 'link';
$btnNinguna  = ($comentarios === 'ninguna')  ? 'outline-primary' : 'link';
$btnFacebook = ($comentarios === 'facebook') ? 'outline-primary' : 'link';

/* ====== Filtros ====== */
$filtro       = isset($_GET['filtro']) ? trim((string)$_GET['filtro']) : 'pendientes';
$fecha_inicio = isset($_GET['fecha_inicio']) ? trim((string)$_GET['fecha_inicio']) : '';
$fecha_fin    = isset($_GET['fecha_fin']) ? trim((string)$_GET['fecha_fin']) : '';
$buscar       = isset($_GET['buscar']) ? trim((string)$_GET['buscar']) : '';
$p            = isset($_GET['p']) ? max(1, (int)$_GET['p']) : 1;
$porPagina    = 15;

if ($filtro !== 'pendientes' && $filtro !== 'todos') {
    $filtro = 'pendientes';
}

$where  = [];
$params = [];
$types  = '';

if ($filtro === 'pendientes') {
    $where[] = "(`ver` = 'no' OR `ver` = '00' OR `ver` = '' OR `ver` IS NULL)";
}

if ($fecha_inicio !== '') {
    $where[] = "DATE(`fecha`) >= ?";
    $params[] = $fecha_inicio;
    $types .= 's';
}

if ($fecha_fin !== '') {
    $where[] = "DATE(`fecha`) <= ?";
    $params[] = $fecha_fin;
    $types .= 's';
}

if ($buscar !== '') {
    $where[] = "(`nombre` LIKE ? OR `mensaje` LIKE ? OR `IP` LIKE ?)";
    $like = '%' . $buscar . '%';
    $params[] = $like;
    $params[] = $like;
    $params[] = $like;
    $types .= 'sss';
}

$whereSql = '';
if (!empty($where)) {
    $whereSql = ' WHERE ' . implode(' AND ', $where);
}

/* ====== Total registros ====== */
$totalRegistros = 0;
$sqlCount = "SELECT COUNT(*) AS total FROM chat" . $whereSql;
$stmtCount = $conn->prepare($sqlCount);

if ($stmtCount) {
    if ($types !== '') {
        bindDynamicParams($stmtCount, $types, $params);
    }
    $stmtCount->execute();
    $resCount = $stmtCount->get_result();
    if ($resCount) {
        $rowCount = $resCount->fetch_assoc();
        $totalRegistros = (int)($rowCount['total'] ?? 0);
        $resCount->free();
    }
    $stmtCount->close();
}

$totalPaginas = (int)ceil($totalRegistros / $porPagina);
if ($totalPaginas < 1) {
    $totalPaginas = 1;
}
if ($p > $totalPaginas) {
    $p = $totalPaginas;
}

$offset = ($p - 1) * $porPagina;

/* ====== Listado chat ====== */
$chatRows = [];
$sqlChat = "SELECT ID, fecha, nombre, mensaje, ver, IP
            FROM chat
            $whereSql
            ORDER BY ID DESC
            LIMIT ?, ?";

$stmtChat = $conn->prepare($sqlChat);
if ($stmtChat) {
    $paramsListado = $params;
    $typesListado  = $types . 'ii';
    $paramsListado[] = $offset;
    $paramsListado[] = $porPagina;

    bindDynamicParams($stmtChat, $typesListado, $paramsListado);
    $stmtChat->execute();
    $resChat = $stmtChat->get_result();

    if ($resChat) {
        while ($row = $resChat->fetch_assoc()) {
            $chatRows[] = $row;
        }
        $resChat->free();
    }

    $stmtChat->close();
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="description" content="Panel de Administracion">
    <meta name="author" content="<?php echo h($nombresitio); ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title><?php echo h($nombresitio); ?> - Panel de Administracion</title>

    <link href="http://fonts.googleapis.com/css?family=Oswald" rel="stylesheet" type="text/css">
    <link rel="shortcut icon" href="" type="image/x-icon">
    <link rel="apple-touch-icon" href="">

    <link rel="stylesheet"
          href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css"
          integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T"
          crossorigin="anonymous">

    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
            integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
            crossorigin="anonymous"></script>

    <style type="text/css">
        * { border-radius:0!important; }
        body { background-image:url(../fondeux.jpg); }
        .navbar { position:relative; min-height:50px; padding-bottom:20px; }
        .btn-primary { color:#fff!important; background-color:#0066FF; border-color:#0066FF; }
        .page-header { margin:0; padding:1em; background-color:#0066FF; border:0; text-align:center; }
        .page-header h2 { color:#ffffff; font-weight:bold; margin:0; }
        ul { list-style:none; padding:0; }
        .far, .faso { color:#0066FF; }
        .colorAzul h3 { color:#0066FF; }

        .filtros-box {
            background:#f8f9fa;
            border:1px solid #ddd;
            padding:15px;
            margin-bottom:20px;
        }

        .resumen-box {
            background:#eef4ff;
            border:1px solid #cfe0ff;
            padding:10px 15px;
            margin-bottom:20px;
        }

        .mensaje-item {
            background:#fff;
        }

        .ip-box {
            background:#fafafa;
            border:1px solid #e5e5e5;
            border-top:0;
            margin-top:-8px;
            margin-bottom:20px;
            padding:10px 15px;
        }

        .texto-mensaje {
            white-space:pre-wrap;
            word-break:break-word;
        }

        .estado-label {
            font-size:13px;
            font-weight:bold;
            text-transform:uppercase;
        }

        .estado-pendiente {
            color:#0066FF;
        }

        .estado-aprobado {
            color:#28a745;
        }

        .paginacion a,
        .paginacion span {
            display:inline-block;
            margin:4px;
        }
    </style>

    <script>
        function ventanaSecundaria(URL){
            window.open(URL, "ventana1", "width=550,height=450,scrollbars=NO");
        }
    </script>
</head>

<body>

<div class="container" style="background-color:#F1F2ED;">
    <?php include __DIR__ . '/menu.php'; ?>
</div>

<div role="main" class="container pt-3" style="background-color:#fff;">
    <div class="page-header">
        <h2><?php echo h($idioma_100731); ?></h2>
    </div>

    <div class="row pt-3">
        <div class="col-12">

            <div class="container-fluid">
                <div class="row">

                    <div class="col-md-6 col-12 p-3">
                        <h3><?php echo h($idioma_100732); ?></h3>

                        <div class="col-12 text-center">
                            <h4><?php echo h($comentarios); ?></h4>
                        </div>

                        <ul class="d-flex justify-content-center flex-wrap">
                            <li class="mr-2 mb-2">
                                <a class="btn btn-<?php echo h($btnCaptcha); ?>"
                                   href="form_comentarios.php?c=captcha"><?php echo h($idioma_100733); ?></a>
                            </li>
                            <li class="mr-2 mb-2">
                                <a class="btn btn-<?php echo h($btnNinguna); ?>"
                                   href="form_comentarios.php?c=ninguna"><?php echo h($idioma_100734); ?></a>
                            </li>
                            <li class="mb-2">
                                <a class="btn btn-<?php echo h($btnFacebook); ?>"
                                   href="form_comentarios.php?c=facebook">MODERADOS</a>
                            </li>
                        </ul>
                    </div>

                    <div class="col-md-6 col-12 p-3">
                        <h3><?php echo h($idioma_100736); ?></h3>
                        <div class="col-12 p-3">
                            <a class="btn btn-outline-primary" href="todo_chat.php"><?php echo h($idioma_100737); ?></a>
                        </div>
                    </div>

                </div>
            </div>

            <div class="col-12">
                <div class="filtros-box">

                    <div class="row mb-3">
                        <div class="col-md-4 col-12 mb-2">
                            <a class="btn btn-primary btn-block" href="<?php echo h(buildQuery(['filtro' => 'pendientes', 'p' => 1])); ?>">
                                Esperando moderacion
                            </a>
                        </div>
                        <div class="col-md-4 col-12 mb-2">
                            <a class="btn btn-secondary btn-block" href="<?php echo h(buildQuery(['filtro' => 'todos', 'p' => 1])); ?>">
                                Ver todos los mensajes
                            </a>
                        </div>
                        <div class="col-md-4 col-12 mb-2">
                            <a class="btn btn-outline-dark btn-block" href="moderar_chat.php">
                                Limpiar filtros
                            </a>
                        </div>
                    </div>

                    <form method="get" action="moderar_chat.php">
                        <input type="hidden" name="filtro" value="<?php echo h($filtro); ?>">

                        <div class="row">
                            <div class="col-md-3 col-12 mb-2">
                                <label>Inicio</label>
                                <input type="date" name="fecha_inicio" class="form-control" value="<?php echo h($fecha_inicio); ?>">
                            </div>

                            <div class="col-md-3 col-12 mb-2">
                                <label>Fin</label>
                                <input type="date" name="fecha_fin" class="form-control" value="<?php echo h($fecha_fin); ?>">
                            </div>

                            <div class="col-md-4 col-12 mb-2">
                                <label>Buscar mensaje</label>
                                <input type="text" name="buscar" class="form-control" value="<?php echo h($buscar); ?>" placeholder="Nombre, mensaje o IP">
                            </div>

                            <div class="col-md-2 col-12 mb-2 d-flex align-items-end">
                                <button type="submit" class="btn btn-info btn-block">
                                    Filtrar
                                </button>
                            </div>
                        </div>
                    </form>

                </div>
            </div>

            <div class="col-12">
                <div class="resumen-box">
                    <strong>Total encontrados:</strong> <?php echo (int)$totalRegistros; ?>
                    |
                    <strong>Página:</strong> <?php echo (int)$p; ?> / <?php echo (int)$totalPaginas; ?>
                    |
                    <strong>Filtro actual:</strong>
                    <?php echo ($filtro === 'pendientes') ? 'Esperando moderacion' : 'Todos'; ?>
                </div>
            </div>

            <div class="col-12">
                <?php if (empty($chatRows)) : ?>
                    <div class="col-12 border p-3 mb-3">
                        No hay mensajes para mostrar con esos filtros.
                    </div>
                <?php else: ?>
                    <?php foreach ($chatRows as $row): ?>
                        <?php
                        $ID      = (int)($row['ID'] ?? 0);
                        $fecha   = $row['fecha'] ?? '';
                        $nombre  = $row['nombre'] ?? '';
                        $mensaje = $row['mensaje'] ?? '';
                        $ver     = $row['ver'] ?? '';
                        $IP      = $row['IP'] ?? '';

                        $esPendiente = ($ver === 'no' || $ver === '00' || $ver === '' || $ver === null);
                        $claseBorde  = $esPendiente ? 'primary' : 'success';
                        $estadoTexto = $esPendiente ? 'Esperando moderacion' : 'Aprobado';
                        $estadoClase = $esPendiente ? 'estado-pendiente' : 'estado-aprobado';
                        ?>
                        <div class="col-12 border border-<?php echo h($claseBorde); ?> p-3 mb-2 mensaje-item">
                            <div class="col-12 p-3">
                                <div class="d-flex justify-content-between flex-wrap">
                                    <div>
                                        <b><?php echo h($idioma_100738); ?></b>
                                        <p class="mb-2"><?php echo h($nombre); ?></p>
                                    </div>

                                    <?php if ($fecha !== ''): ?>
                                        <p style="opacity:.7;margin:0;"><?php echo h($fecha); ?></p>
                                    <?php endif; ?>
                                </div>

                                <div class="mb-2">
                                    <span class="estado-label <?php echo h($estadoClase); ?>"><?php echo h($estadoTexto); ?></span>
                                </div>

                                <b><?php echo h($idioma_100739); ?></b>
                                <p class="texto-mensaje mb-0"><?php echo h($mensaje); ?></p>
                            </div>

                            <div class="col-12">
                                <a class="btn btn-outline-primary mb-2" href="aceptar_chat.php?ID=<?php echo $ID; ?>">
                                    <?php echo h($idioma_aceptar); ?>
                                </a>

                                <a class="btn btn-link mb-2" href="borrar_chat.php?ID=<?php echo $ID; ?>">
                                    <?php echo h($idioma_borrar); ?>
                                </a>
                            </div>

                            <?php if ($IP !== ''): ?>
                                <div class="ip-box">
                                    <a target="_blank"
                                       rel="noopener noreferrer"
                                       href="http://es.geoipview.com/?q=<?php echo rawurlencode($IP); ?>&x=12&y=11">
                                        <img alt="VER UBICACION DE LA IP"
                                             title="VER UBICACION DE LA IP"
                                             src="http://vignette3.wikia.nocookie.net/althistory/images/c/ce/Mundo.png/revision/latest?cb=20150427051230&path-prefix=es"
                                             width="27">
                                    </a>

                                    <a href="bloquear_ip.php?IP=<?php echo rawurlencode($IP); ?>">
                                        <img title="BLOQUEAR IP"
                                             alt="BLOQUEAR IP"
                                             src="http://www.watchbinaryoptions.com/wp-content/uploads/2015/09/Stop.png"
                                             width="31">
                                    </a>

                                    <p class="mb-0 mt-2"><?php echo h($IP); ?></p>
                                </div>
                            <?php endif; ?>
                        </div>
                    <?php endforeach; ?>
                <?php endif; ?>
            </div>

            <div class="col-12 text-center paginacion mt-3">
                <?php if ($p > 1): ?>
                    <a class="btn btn-primary" href="<?php echo h(buildQuery(['p' => $p - 1])); ?>">
                        Anterior
                    </a>
                <?php endif; ?>

                <?php for ($paginaNum = 1; $paginaNum <= $totalPaginas; $paginaNum++): ?>
                    <?php if ($paginaNum === $p): ?>
                        <span class="btn btn-dark"><?php echo $paginaNum; ?></span>
                    <?php else: ?>
                        <a class="btn btn-outline-primary" href="<?php echo h(buildQuery(['p' => $paginaNum])); ?>">
                            <?php echo $paginaNum; ?>
                        </a>
                    <?php endif; ?>
                <?php endfor; ?>

                <?php if ($p < $totalPaginas): ?>
                    <a class="btn btn-primary" href="<?php echo h(buildQuery(['p' => $p + 1])); ?>">
                        Siguiente
                    </a>
                <?php endif; ?>
            </div>

            <div class="col-12 text-center p-3">
                <a class="btn btn-primary mb-3" href="index.php"><?php echo h($idioma_volver); ?></a>
            </div>

        </div>
    </div>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
        integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1"
        crossorigin="anonymous"></script>

<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
        integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM"
        crossorigin="anonymous"></script>

<script src="https://unpkg.com/isotope-layout@3/dist/isotope.pkgd.js"></script>

<script>
window.setInterval(function(){
    if (window.jQuery && $('.grid').length) {
        $('.grid').isotope({ itemSelector: '.grid-item' });
    }
}, 500);
</script>

<script defer
        src="https://use.fontawesome.com/releases/v5.8.1/js/all.js"
        integrity="sha384-g5uSoOSBd7KkhAMlnQILrecXvzst9TdC09/VM+pjDTCM+1il8RHz5fKANTFFb+gQ"
        crossorigin="anonymous"></script>
</body>
</html>