0 && $lenB > 0) { if ($lenA === 3 && $lenB === 3) return strnatcasecmp($a, $b); if ($lenA >= 4 && $lenB >= 4) return strnatcasecmp($b, $a); if ($lenA === 3 && $lenB >= 4) return -1; if ($lenA >= 4 && $lenB === 3) return 1; return strnatcasecmp($a, $b); } if ($lenA > 0 && $lenB === 0) return -1; if ($lenA === 0 && $lenB > 0) return 1; return strnatcasecmp($a, $b); } /* ── Carpetas con orden descendente de archivos ── */ $descendingFolders = ['El Pan del Alma', 'Boletín Salesiano']; /* * Detectar carpeta actual tanto por ?dir= como por URL directa, * igual que se hace para $trimOffset más abajo. */ $currentFolderName = basename($dir); if ($currentFolderName === '.' || $currentFolderName === '') { /* Acceso por URL directa: el script está físicamente dentro de la carpeta */ $physFolderDesc = basename(__DIR__); if (!in_array($physFolderDesc, $descendingFolders)) { $physFolderDesc = basename(getcwd()); } if (in_array($physFolderDesc, $descendingFolders)) { $currentFolderName = $physFolderDesc; } } /* Limpiar prefijo './' que a veces trae $dir */ if ($currentFolderName === '.') { $cleanDirDesc = ltrim(rtrim($dir, '/'), './'); if ($cleanDirDesc !== '') { $currentFolderName = basename($cleanDirDesc); } } $isDescending = in_array($currentFolderName, $descendingFolders); usort($folders, 'customFolderSort'); if ($isDescending) { $folders = array_reverse($folders); rsort($documents, SORT_NATURAL | SORT_FLAG_CASE); } else { sort($documents, SORT_NATURAL | SORT_FLAG_CASE); } /* ── Icono por extensión ── */ function getFileIcon($ext) { $map = [ 'pdf' => '📄', 'doc' => '📝', 'docx' => '📝', 'txt' => '📋', 'xls' => '📊', 'xlsx' => '📊', 'csv' => '📊', 'ppt' => '📽️', 'pptx' => '📽️', 'jpg' => '🖼️', 'jpeg' => '🖼️', 'png' => '🖼️', 'gif' => '🖼️', 'zip' => '🗜️', 'rar' => '🗜️', 'mp3' => '🎵', 'wav' => '🎵', 'mp4' => '🎥', 'avi' => '🎥', 'mov' => '🎥', 'php' => '💻', 'html' => '💻', 'css' => '🎨', 'js' => '🖥️' ]; return $map[$ext] ?? '📎'; } /* ── Tamaño legible ── */ function humanSize($bytes) { if ($bytes >= 1048576) return number_format($bytes / 1048576, 2) . ' MB'; if ($bytes >= 1024) return number_format($bytes / 1024, 1) . ' KB'; return $bytes . ' B'; } $totalItems = count($folders) + count($documents); ?> Documentos — Salesiano Rosenthal de la Puente

CEP. Salesiano Rosenthal de la Puente

«Hagan lo que Él les diga». Creyentes, libres para servir

📂

Índice principal'; } else { // Limpiar el "./" inicial si existe $cleanDir = ltrim($dir, './'); $cleanDir = ltrim($cleanDir, '/'); $parts = explode('/', $cleanDir); echo ''; } ?>
"; } /* ── Carpetas ── */ foreach ($folders as $folder) { /* Todo en mayúsculas */ $label = htmlspecialchars(mb_strtoupper($folder, 'UTF-8')); echo ""; } /* ── Archivos ── */ /* * Recorte de caracteres iniciales según carpeta: * Boletín Salesiano → oculta los primeros 21 chars (muestra desde el 22) * El Pan del Alma → oculta los primeros 9 chars (muestra desde el 10) * Resto → nombre completo */ $trimMap = [ 'Boletín Salesiano' => 21, 'El Pan del Alma' => 9, ]; $currentFolder = basename($dir); // caso ?dir= /* Si $dir es '.' probamos la ruta física real */ if ($currentFolder === '.' || $currentFolder === '') { $physicalFolder = basename(__DIR__); // carpeta del script if (!isset($trimMap[$physicalFolder])) { $physicalFolder = basename(getcwd()); // directorio de trabajo } if (isset($trimMap[$physicalFolder])) { $currentFolder = $physicalFolder; } } /* Normalizar: eliminar el prefijo './' que a veces lleva $dir */ if ($currentFolder === '.') { $cleanDir = ltrim(rtrim($dir, '/'), './'); if ($cleanDir !== '') { $currentFolder = basename($cleanDir); } } $trimOffset = isset($trimMap[$currentFolder]) ? $trimMap[$currentFolder] : 0; foreach ($documents as $file) { $filePath = $dir . DIRECTORY_SEPARATOR . $file; $ext = strtolower(pathinfo($file, PATHINFO_EXTENSION)); $type = strtoupper($ext); $size = humanSize(filesize($filePath)); $rawName = pathinfo($file, PATHINFO_FILENAME); /* Recortar nombre según carpeta */ if ($trimOffset > 0 && mb_strlen($rawName, 'UTF-8') > $trimOffset) { $displayName = mb_substr($rawName, $trimOffset, null, 'UTF-8'); } else { $displayName = $rawName; } /* Reemplazar guiones bajos por espacios */ $displayName = str_replace('_', ' ', $displayName); /* Todo en mayúsculas */ $name = htmlspecialchars(mb_strtoupper($displayName, 'UTF-8')); $icon = getFileIcon($ext); $href = htmlspecialchars($filePath); echo ""; } ?>
Nombre Tipo Tamaño
🔙 Volver a: $parentName SUBIR
📁 $label CARPETA
$icon $name $type $size
Total: objeto  ·  carpeta, archivo