<?php

// Establecer la zona horaria del servidor
date_default_timezone_set('America/Mexico_City');

// Función para obtener la ruta de la carpeta actual
function obtenerRutaCarpetaActual() {
    $ruta = isset($_GET['carpeta']) ? $_GET['carpeta'] : './archivos';
    return rtrim($ruta, '/') . '/';
}

$directorio = obtenerRutaCarpetaActual();
//Si no exixte el directorio lo crea
if (!file_exists($directorio)){
    mkdir($directorio, 0777);
}
$archivos = scandir($directorio);


// Mostrar formulario para crear nueva carpeta y subir nuevo archivo
echo '<div id="formulario">';
//echo '<form action="crear_carpeta.php" method="post">';
//echo 'Directorio: ';
//echo '<input type="hidden" name="carpeta" value="' . $directorio . '">';
//echo '<input type="text" size= "50" name="nombre_carpeta" placeholder="Nombre de la carpeta" required>';
//echo '<button type="submit">Crear</button>';
//echo '</form>';
echo '<form action="subir_archivo.php" method="post" enctype="multipart/form-data">';
echo 'Archivo: ';
echo '<input type="hidden" name="carpeta" value="' . $directorio . '">';
echo '<input type="file" name="archivo" required>';
echo '<button type="submit">Subir</button>';
echo '</form>';
echo '</div>';



// Mostrar los archivos y carpetas en una tabla
echo '<table style="width:100%" border=0>';
echo '<tr><th>Nombre del Archivo</th><th style="width:100px;">Fecha</th><th style="width:150px;">Tamaño</th><th>Acciones</th></tr>';

// Mostrar enlace para regresar a la carpeta Raiz (si no estamos en la carpeta raíz)
if ($directorio !== './archivos/') {
    $carpeta_raiz = './archivos/';
    echo '<tr>';
    echo '<td>';
    echo '<a href="?carpeta=' . urlencode($carpeta_raiz) . '">\</a><br>';
    echo '</td>';    
    echo '</tr>';
}

// Mostrar enlace para regresar a la carpeta anterior (si no estamos en la carpeta raíz)
if ($directorio !== './archivos/') {
    $carpeta_anterior = dirname($directorio);
    echo '<tr>';
    echo '<td>';
    echo '<a href="?carpeta=' . urlencode($carpeta_anterior) . '">..</a><br>';
    echo '</td>';    
    echo '</tr>';
}



foreach ($archivos as $archivo) {
    $rutaCompleta = $directorio . $archivo;

    // Saltar "." y ".."
    if ($archivo == '.' || $archivo == '..') continue;

    // Obtener la fecha de modificación del archivo
    $fecha_modificacion = date("Y-m-d H:i", filemtime($rutaCompleta));

    // Obtener el tamaño del archivo
    $tamano_archivo = is_file($rutaCompleta) ? filesize($rutaCompleta) : '';

    // Convertir el tamaño del archivo a un formato legible (KB, MB, etc.)
    $tamano_legible = '';
    if ($tamano_archivo != '') {
        if ($tamano_archivo >= 1073741824) {
            $tamano_legible = number_format($tamano_archivo / 1073741824, 2) . ' GB';
        } elseif ($tamano_archivo >= 1048576) {
            $tamano_legible = number_format($tamano_archivo / 1048576, 2) . ' MB';
        } elseif ($tamano_archivo >= 1024) {
            $tamano_legible = number_format($tamano_archivo / 1024, 2) . ' KB';
        } else {
            $tamano_legible = $tamano_archivo . ' bytes';
        }
    }

    // Mostrar la información en la tabla
    echo '<tr>';
    echo '<td>';
    if (is_dir($rutaCompleta)) {
        echo ' <a href="?carpeta=' . urlencode($rutaCompleta) . '">' . "(" . $archivo . ')</a>';        
    } else {
        echo '<a href="' . $rutaCompleta . '" download>' . $archivo . '</a>';
    }
    echo '</td>';
    echo '<td><center>' . $fecha_modificacion . '</center></td>';
    echo '<td><center>' . $tamano_legible . '</center></td>';
    //if (is_dir($rutaCompleta)) {
    //    echo '<td></td>';
    //} else {        
    //    echo '<td> <center> <a href="eliminar_archivo.php?carpeta=' . urlencode($directorio) . '&archivo=' . urlencode($archivo) . '">Borrar</a></center></td>'; // Corregimos la URL del archivo a eliminar
    //}    

    echo '</tr>';
}

echo '</table>';

?>
