<?php
include 'sesion.php';
include 'concha.php';

set_time_limit(0);

if (!isset($hostdom) || $hostdom == '') {
    $hostdom = "http://www.radiosnet.com.ar";
}

if (!isset($rutadom) || $rutadom == '') {
    $rutadom = "/home/content/90/7626090/html";
}

if (!isset($dom) || $dom == '') {
    $dom = $hostdom;
}

$ID = isset($_GET['ID']) ? (int)$_GET['ID'] : 0;

if ($ID <= 0) {
    die("ID de nota inválido.");
}

$a = date('Y');
$m = date('m');
$carpeta = $m . "-" . $a;
$directorio = rtrim($rutadom, '/') . "/" . $carpeta;

$status = "";
$status_tipo = "";

if (!file_exists($directorio)) {
    if (!mkdir($directorio, 0775, true)) {
        die("No se pudo crear la carpeta de destino.");
    }
}

if (!is_writable($directorio)) {
    die("La carpeta de destino no tiene permisos de escritura: " . $directorio);
}

function pa_h($txt)
{
    return htmlspecialchars((string)$txt, ENT_QUOTES, 'UTF-8');
}

function pa_mime_archivo($tmp)
{
    $mime = "";

    if (function_exists('mime_content_type')) {
        $mime = @mime_content_type($tmp);
    }

    if (($mime == "" || $mime == false) && function_exists('finfo_open')) {
        $finfo = @finfo_open(FILEINFO_MIME_TYPE);
        if ($finfo) {
            $mime = @finfo_file($finfo, $tmp);
            @finfo_close($finfo);
        }
    }

    return strtolower((string)$mime);
}

function pa_mime_permitido($ext, $mime)
{
    $permitidos = array(
        'pdf'  => array('application/pdf', 'application/x-pdf'),
        'doc'  => array('application/msword', 'application/octet-stream'),
        'docx' => array('application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/zip', 'application/octet-stream'),
        'xls'  => array('application/vnd.ms-excel', 'application/octet-stream'),
        'xlsx' => array('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/zip', 'application/octet-stream')
    );

    if (!isset($permitidos[$ext])) {
        return false;
    }

    if ($mime == "") {
        return true;
    }

    return in_array($mime, $permitidos[$ext]);
}

if (isset($_POST["action"]) && $_POST["action"] == "upload") {

    if (!isset($_FILES["archivo"])) {
        $status = "No se recibió ningún archivo.";
        $status_tipo = "error";
    } else {

        $error_upload = isset($_FILES["archivo"]["error"]) ? (int)$_FILES["archivo"]["error"] : 0;

        if ($error_upload != UPLOAD_ERR_OK) {

            if ($error_upload == UPLOAD_ERR_INI_SIZE || $error_upload == UPLOAD_ERR_FORM_SIZE) {
                $status = "El archivo supera el tamaño permitido.";
            } elseif ($error_upload == UPLOAD_ERR_NO_FILE) {
                $status = "Tenés que seleccionar un archivo.";
            } else {
                $status = "Error al subir el archivo. Código: " . $error_upload;
            }

            $status_tipo = "error";

        } else {

            $archivo_original = isset($_FILES["archivo"]["name"]) ? $_FILES["archivo"]["name"] : "";
            $tmp = isset($_FILES["archivo"]["tmp_name"]) ? $_FILES["archivo"]["tmp_name"] : "";
            $tamano = isset($_FILES["archivo"]["size"]) ? (int)$_FILES["archivo"]["size"] : 0;

            $max_bytes = 50 * 1024 * 1024;

            if ($archivo_original == "" || $tmp == "") {
                $status = "Archivo inválido.";
                $status_tipo = "error";
            } elseif ($tamano <= 0) {
                $status = "El archivo está vacío.";
                $status_tipo = "error";
            } elseif ($tamano > $max_bytes) {
                $status = "El archivo es demasiado grande. Máximo permitido: 50 MB.";
                $status_tipo = "error";
            } else {

                $ext = strtolower(pathinfo($archivo_original, PATHINFO_EXTENSION));

                $extensiones_permitidas = array('pdf', 'doc', 'docx', 'xls', 'xlsx');

                if (!in_array($ext, $extensiones_permitidas)) {

                    $status = "Formato no permitido. Solo se permiten PDF, DOC, DOCX, XLS y XLSX.";
                    $status_tipo = "error";

                } else {

                    $mime = pa_mime_archivo($tmp);

                    if (!pa_mime_permitido($ext, $mime)) {

                        $status = "Tipo de archivo no válido para ." . $ext . ". MIME detectado: " . $mime;
                        $status_tipo = "error";

                    } else {

                        $prefijo = md5(uniqid(rand(), true));
                        $nombre_final = $prefijo . "." . $ext;
                        $destino = $directorio . "/" . $nombre_final;

                        if (move_uploaded_file($tmp, $destino)) {

                            @chmod($destino, 0644);

                            $ruta_publica = rtrim($dom, '/') . "/" . $carpeta . "/" . $nombre_final;

                            if (isset($domold) && $domold != '') {
                                $url_traer = rtrim($domold, '/') . "/traer.php?tipo=archivo&ext_img=" . urlencode($ext) . "&carpetafoto=" . urlencode($carpeta) . "&foto=" . urlencode($prefijo) . "&dom=" . urlencode($dom);
                                echo '<iframe src="' . pa_h($url_traer) . '" style="display:none;width:1px;height:1px;border:0;"></iframe>';
                            }

                            $stmt = $conn->prepare("INSERT INTO archivos (ruta, ID_nota, tipo) VALUES (?, ?, ?)");

                            if ($stmt) {
                                $stmt->bind_param("sis", $ruta_publica, $ID, $ext);

                                if ($stmt->execute()) {
                                    $status = "Archivo subido correctamente: <b>" . pa_h($archivo_original) . "</b>";
                                    $status_tipo = "ok";
                                } else {
                                    $status = "El archivo se subió, pero no se pudo guardar en la base.";
                                    $status_tipo = "error";
                                }

                                $stmt->close();

                            } else {

                                $ruta_publica_sql = $conn->real_escape_string($ruta_publica);
                                $ext_sql = $conn->real_escape_string($ext);

                                $sSQL = "INSERT INTO archivos (ID, ruta, ID_nota, tipo) VALUES (NULL, '$ruta_publica_sql', '$ID', '$ext_sql')";

                                if ($conn->query($sSQL)) {
                                    $status = "Archivo subido correctamente: <b>" . pa_h($archivo_original) . "</b>";
                                    $status_tipo = "ok";
                                } else {
                                    $status = "El archivo se subió, pero no se pudo guardar en la base.";
                                    $status_tipo = "error";
                                }
                            }

                        } else {
                            $status = "Error al mover el archivo al directorio final.";
                            $status_tipo = "error";
                        }
                    }
                }
            }
        }
    }
}
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title><?php echo pa_h($nombresitio); ?> - Panel de Administración</title>
    <link href="../estilo.css" rel="stylesheet" type="text/css" />

    <style>
        body {
            background:#f1f2ed;
            font-family:Arial, Helvetica, sans-serif;
        }

        .wrap-panel {
            width:900px;
            margin:0 auto;
            background:#fff;
        }

        .box-archivo {
            max-width:760px;
            margin:20px auto;
            border:1px solid #ddd;
            background:#fff;
            padding:20px;
            border-radius:8px;
        }

        .box-archivo h2 {
            margin:0 0 8px 0;
            font-size:22px;
            color:#333;
        }

        .box-archivo .ayuda {
            color:#777;
            font-size:13px;
            margin-bottom:18px;
        }

        .form-file {
            padding:15px;
            background:#f8f8f8;
            border:1px solid #ddd;
            border-radius:6px;
            margin-bottom:15px;
        }

        .form-file input[type="file"] {
            width:100%;
            padding:8px;
            background:#fff;
            border:1px solid #ccc;
            margin-bottom:10px;
        }

        .btn-subir {
            background:#0069d9;
            color:#fff;
            border:0;
            padding:10px 18px;
            cursor:pointer;
            border-radius:4px;
            font-weight:bold;
        }

        .btn-subir:hover {
            background:#0053ad;
        }

        .alert-ok {
            color:#155724;
            background:#d4edda;
            border:1px solid #c3e6cb;
            padding:10px;
            border-radius:5px;
            margin-bottom:15px;
        }

        .alert-error {
            color:#721c24;
            background:#f8d7da;
            border:1px solid #f5c6cb;
            padding:10px;
            border-radius:5px;
            margin-bottom:15px;
        }

        .archivo-item {
            border:1px solid #ddd;
            background:#fafafa;
            padding:12px;
            margin-bottom:12px;
            border-radius:6px;
        }

        .archivo-item strong {
            color:#333;
        }

        .archivo-actions {
            margin-top:10px;
        }

        .btn-ver {
            display:inline-block;
            background:#28a745;
            color:#fff !important;
            padding:7px 12px;
            border-radius:4px;
            text-decoration:none;
            margin-right:5px;
        }

        .btn-borrar {
            display:inline-block;
            background:#dc3545;
            color:#fff !important;
            padding:7px 12px;
            border-radius:4px;
            text-decoration:none;
        }

        .pdf-preview {
            width:100%;
            height:420px;
            border:1px solid #ccc;
            background:#fff;
            margin-top:10px;
        }

        .volver {
            margin-top:20px;
        }

        .volver a {
            display:inline-block;
            background:#333;
            color:#fff;
            padding:9px 14px;
            border-radius:4px;
            text-decoration:none;
        }

        .volver a:hover {
            background:#000;
        }
    </style>

    <script type="text/javascript">
    function confirmarBorrado() {
        return confirm('¿Seguro que querés borrar este archivo?');
    }
    </script>
</head>

<body>

<div class="wrap-panel">

    <table width="900" border="0" align="center" cellpadding="4" cellspacing="0">
        <tr>
            <td bgcolor="#F1F2ED"><?php include 'menu.php'; ?></td>
        </tr>

        <tr>
            <td bgcolor="#FFFFFF">

                <div class="box-archivo">

                    <h2>Adjuntar archivo a la nota</h2>

                    <div class="ayuda">
                        Formatos permitidos: PDF, DOC, DOCX, XLS y XLSX. Tamaño máximo: 50 MB.
                    </div>

                    <?php if ($status != "") { ?>
                        <div class="<?php echo ($status_tipo == 'ok') ? 'alert-ok' : 'alert-error'; ?>">
                            <?php echo $status; ?>
                        </div>
                    <?php } ?>

                    <form class="form-file" action="poner_archivos.php?ID=<?php echo $ID; ?>" method="post" enctype="multipart/form-data">
                        <input name="archivo" type="file" id="archivo" />
                        <input name="action" type="hidden" value="upload" />
                        <input name="enviar" type="submit" class="btn-subir" id="enviar" value="SUBIR ARCHIVO" />
                    </form>

                    <h3>Archivos cargados</h3>

                    <?php
                    $total_archivos = 0;
                    $sql_archivos = "SELECT * FROM archivos WHERE ID_nota = '$ID' ORDER BY ID DESC";
                    $consulta_archivos = $conn->query($sql_archivos);

                    if ($consulta_archivos) {
                        while ($row_archivo = $consulta_archivos->fetch_assoc()) {

                            $total_archivos++;

                            $ID_archivo = $row_archivo["ID"];
                            $ruta_archivo = $row_archivo["ruta"];
                            $tipo_archivo = strtolower($row_archivo["tipo"]);
                    ?>

                            <div class="archivo-item">

                                <strong>Archivo:</strong>
                                <a href="<?php echo pa_h($ruta_archivo); ?>" target="_blank">
                                    <?php echo pa_h($ruta_archivo); ?>
                                </a>

                                <br />

                                <strong>Tipo:</strong> <?php echo strtoupper(pa_h($tipo_archivo)); ?>

                                <?php if ($tipo_archivo == "pdf") { ?>
                                    <iframe class="pdf-preview" src="<?php echo pa_h($ruta_archivo); ?>"></iframe>
                                <?php } ?>

                                <div class="archivo-actions">
                                    <a class="btn-ver" href="<?php echo pa_h($ruta_archivo); ?>" target="_blank">
                                        Ver archivo
                                    </a>

                                    <a class="btn-borrar"
                                       onclick="return confirmarBorrado();"
                                       href="borrar_archivo_nota.php?ID=<?php echo (int)$ID_archivo; ?>&ID_nota=<?php echo (int)$ID; ?>">
                                        Borrar
                                    </a>
                                </div>

                            </div>

                    <?php
                        }

                        $consulta_archivos->free_result();
                    }

                    if ($total_archivos == 0) {
                        echo '<p>No hay archivos cargados todavía.</p>';
                    }
                    ?>

                    <div class="volver">
                        <a href="index.php">VOLVER AL PANEL</a>
                    </div>

                </div>

            </td>
        </tr>
    </table>

</div>

</body>
</html>