<?php
declare(strict_types=1);

include 'sesion.php';
include 'concha.php';

/*
  upload_video.php (PHP 8.2)
  - Solo MP4
  - Límite 250MB
  - Guarda archivo en /{mes-año}/
  - Inserta URL en tabla `videos` (video, ID_nota) usando mysqli prepared
  - Opcional: llama a traer.php en domold (iframe oculto)
*/

@ini_set('default_charset', 'UTF-8');

$status_text = '';
$status_html = '';

$MAX_SIZE = 250000000; // 250MB

// =========================
// ID nota (GET)
// =========================
$ID = isset($_GET['ID']) ? (int)$_GET['ID'] : 0;
if ($ID <= 0) {
    http_response_code(400);
    echo "Falta ID válido.";
    exit;
}

// =========================
// Rutas / carpeta destino
// =========================
if (!isset($rutadom) || $rutadom === null || trim((string)$rutadom) === '') {
    // fallback (tu valor original)
    $rutadom = "/home/content/90/7626090/html";
}

$a = date('Y');
$m = date('m');
$carpeta = $m . '-' . $a;

$rutadom = rtrim((string)$rutadom, "/");
$directorio = $rutadom . "/" . $carpeta;

if (!is_dir($directorio)) {
    // 0755 suele ser mejor que 0777 en servidores modernos
    if (!@mkdir($directorio, 0755, true) && !is_dir($directorio)) {
        http_response_code(500);
        echo "No se pudo crear la carpeta destino: " . htmlspecialchars($directorio, ENT_QUOTES, 'UTF-8');
        exit;
    }
}

// =========================
// Helper: mime real
// =========================
function detect_mime(string $tmpPath): string
{
    // finfo es lo más confiable
    if (function_exists('finfo_open')) {
        $fi = @finfo_open(FILEINFO_MIME_TYPE);
        if ($fi) {
            $mime = (string)@finfo_file($fi, $tmpPath);
            @finfo_close($fi);
            if ($mime !== '') return $mime;
        }
    }
    if (function_exists('mime_content_type')) {
        $mime = (string)@mime_content_type($tmpPath);
        if ($mime !== '') return $mime;
    }
    return '';
}

// =========================
// Procesar upload (POST)
// =========================
if (
    ($_SERVER['REQUEST_METHOD'] ?? '') === 'POST'
    && isset($_POST['action'])
    && $_POST['action'] === 'upload'
) {
    if (!isset($_FILES['archivo']) || !is_array($_FILES['archivo'])) {
        $status_text = "No se recibió archivo.";
    } else {
        $f = $_FILES['archivo'];

        $error   = isset($f['error']) ? (int)$f['error'] : UPLOAD_ERR_NO_FILE;
        $size    = isset($f['size']) ? (int)$f['size'] : 0;
        $tmp     = isset($f['tmp_name']) ? (string)$f['tmp_name'] : '';
        $orig    = isset($f['name']) ? (string)$f['name'] : '';

        if ($error !== UPLOAD_ERR_OK) {
            $status_text = "Error en la subida (código {$error}).";
        } elseif ($size <= 0) {
            $status_text = "Archivo vacío.";
        } elseif ($size > $MAX_SIZE) {
            $status_text = "El tamaño no puede exceder 250MB. Tamaño: {$size}";
        } elseif ($tmp === '' || !is_uploaded_file($tmp)) {
            $status_text = "Archivo temporal inválido.";
        } else {
            // Extensión
            $ext = strtolower(pathinfo($orig, PATHINFO_EXTENSION));
            if ($ext !== 'mp4') {
                $status_text = "SOLO ARCHIVOS MP4.";
            } else {
                // MIME real del archivo subido
                $mime = detect_mime($tmp);

                // Algunos servidores reportan variantes; aceptamos un set razonable para MP4.
                $mimes_ok = [
                    'video/mp4',
                    'application/mp4',
                    'video/x-m4v',
                    'video/quicktime', // a veces mp4 mal detectado (no ideal, pero evita falsos negativos)
                    'application/octet-stream' // algunos hosts lo devuelven así (lo dejamos como último)
                ];

                // Si querés ser más estricto, sacá quicktime y octet-stream.
                if ($mime !== '' && !in_array($mime, $mimes_ok, true)) {
                    $status_text = "No válido (MIME: " . htmlspecialchars($mime, ENT_QUOTES, 'UTF-8') . ")";
                } else {
                    // Nombre destino
                    $prefijo = bin2hex(random_bytes(16)); // mejor que md5(uniqid())
                    $destino = $directorio . "/" . $prefijo . ".mp4";

                    if (!@move_uploaded_file($tmp, $destino)) {
                        $status_text = "Error al mover el archivo al destino.";
                    } else {
                        @chmod($destino, 0644);

                        // URL pública guardada en DB (usa $dom de concha.php)
                        $dom_base = isset($dom) ? rtrim((string)$dom, "/") : '';
                        $video_url = $dom_base . "/" . $carpeta . "/" . $prefijo . ".mp4";

                        // INSERT seguro (mysqli)
                        $ok_db = false;

                        if (isset($conn) && $conn instanceof mysqli) {
                            // asegura charset utf8mb4 si no lo hace concha.php
                            @mysqli_set_charset($conn, 'utf8mb4');

                            $stmt = $conn->prepare("INSERT INTO `videos` (`video`, `ID_nota`) VALUES (?, ?)");
                            if ($stmt) {
                                $stmt->bind_param("si", $video_url, $ID);
                                $ok_db = (bool)$stmt->execute();
                                $stmt->close();
                            }
                        }

                        if (!$ok_db) {
                            $status_text = "Video subido, pero no se pudo guardar en la base.";
                        } else {
                            $status_text = "Video Subido!";

                            // Si existe domold, ejecutar traer.php una vez (iframe oculto)
                            if (!empty($domold)) {
                                $domold_clean = rtrim((string)$domold, "/");

                                // OJO: en tu código decía tipo=audio; para video debería ser "video"
                                $iframe_src =
                                    $domold_clean . "/traer.php?tipo=video" .
                                    "&ext_img=" . urlencode('mp4') .
                                    "&carpetafoto=" . urlencode($carpeta) .
                                    "&foto=" . urlencode($prefijo) .
                                    "&dom=" . urlencode($dom_base);

                                // Esto es HTML intencional; no lo metas en $status_text para evitar XSS accidental
                                $status_html =
                                    '<div style="margin-top:15px;">' .
                                    '<iframe src="' . htmlspecialchars($iframe_src, ENT_QUOTES, 'UTF-8') . '" ' .
                                    'style="width:1px;height:1px;border:0;opacity:0;" aria-hidden="true"></iframe>' .
                                    '</div>';
                            }
                        }
                    }
                }
            }
        }
    }
}
?>
<!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 htmlspecialchars((string)$nombresitio, ENT_QUOTES, 'UTF-8'); ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <title><?php echo htmlspecialchars((string)$nombresitio, ENT_QUOTES, 'UTF-8'); ?> - Panel de Administracion</title>

    <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.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" 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>
        form { width: 100%; }
        .borderB { border-bottom: 1px solid rgba(0,0,0,0.1); }
        .display-flex{ display: flex; justify-content: center; align-items: center; }
        *{ border-radius: 0!important; }
        body {
            background-image: url(../fondeux.jpg);
            background-position: top center;
            background-repeat-y: no-repeat;
            background-color:#EBEBEB;
        }
        .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; }
        .bloqueAzul { text-align: center; }
        .bloqueAzul .div { border: 1px solid #e4e4e4; background-color: #fff; }
        ul { list-style: none; padding: 0; }
        .far { color:#0066FF; }
        .faso { color:#fff; }
        .colorAzul h3 { color:#0066FF; }
    </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 'menu.php'; ?>
</div>

<div role="main" style="background-color:#fff;" class="container pt-3">
    <div class="page-header" style="text-align:center;">
        <h2><?php echo isset($idioma_100352) ? $idioma_100352 : 'Panel'; ?></h2>
    </div>

    <div class="col-12">
        <?php if ($status_text !== ''): ?>
            <div class="alert alert-info mt-3">
                <?php echo htmlspecialchars($status_text, ENT_QUOTES, 'UTF-8'); ?>
                <?php echo $status_html; ?>
            </div>
        <?php endif; ?>

        <form action="upload_video.php?ID=<?php echo (int)$ID; ?>" method="post" enctype="multipart/form-data">
            <div class="form-row">
                <div class="form-group col-12 col-sm-5">
                    <label for="archivo"><?php echo isset($idioma_100850) ? $idioma_100850 : 'Archivo'; ?></label>
                </div>

                <div class="form-group col-12 col-sm-5">
                    <input name="archivo" type="file" class="btn btn-outline-primary" id="archivo" accept="video/mp4" required>
                    <input name="action" type="hidden" value="upload">
                </div>

                <div class="col-12 col-sm-2 text-center">
                    <button class="btn btn-outline-primary" name="enviar" id="enviar" type="submit">
                        <?php echo isset($idioma_cargar) ? $idioma_cargar : 'Cargar'; ?>
                    </button>
                </div>
            </div>
        </form>

        <div class="col-12 mt-3">
            <a class="btn btn-primary" href="index.php"><?php echo isset($idioma_volver) ? $idioma_volver : 'Volver'; ?></a>
        </div>
    </div>
</div>

<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
<script src="https://unpkg.com/isotope-layout@3/dist/isotope.pkgd.js"></script>
<script>
    window.setInterval(function(){
        if (window.jQuery) {
            $('.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>