config options

This commit is contained in:
Fred Tempez 2024-03-15 20:10:06 +01:00
parent 2a8563ce9a
commit f61c2a977a

View File

@ -75,42 +75,75 @@ class folder extends common
} }
private function getFolderContent($chemin) private function getFolderContent($chemin, $config = [])
{ {
$showSubFolder = isset($config['showsubfolder']) ? $config['showsubfolder'] : true;
$sort = isset($config['sort']) ? $config['sort'] : true;
// Vérifier si le chemin existe et est un dossier // Vérifier si le chemin existe et est un dossier
if (is_dir($chemin)) { if (!is_null($chemin) && is_dir($chemin)) {
// Ouvrir le dossier // Ouvrir le dossier
if ($dh = opendir($chemin)) { if ($dh = opendir($chemin)) {
$items = isset($items) ? $items : '<ul>'; // Initialiser les tableaux pour les sous-dossiers et les fichiers
$subDirectories = [];
$files = [];
// Parcourir les éléments du dossier // Parcourir les éléments du dossier
while (($element = readdir($dh)) !== false) { while (($element = readdir($dh)) !== false) {
// Exclure les éléments spéciaux // Exclure les éléments spéciaux
if ($element != '.' && $element != '..') { if ($element != '.' && $element != '..') {
// Construire le chemin complet de l'élément // Construire le chemin complet de l'élément
$cheminComplet = $chemin . $element; $cheminComplet = $chemin . '/' .$element;
// Vérifier si c'est un dossier // Vérifier si c'est un dossier
if (is_dir($cheminComplet)) { if (is_dir($cheminComplet)) {
// Afficher le nom du dossier avec un élément details // Ajouter le dossier au tableau des sous-dossiers
$items .= "<li class='directory'>$element"; $subDirectories[] = $element;
// Appeler récursivement la fonction pour ce sous-dossier
$items .= $this->getFolderContent($cheminComplet);
$items .= '</li>';
} else { } else {
// Afficher le nom du fichier comme un lien // Ajouter le fichier au tableau des fichiers
$items .= "<li class='file'><a href='$cheminComplet' target='_blank'>$element</a></li>"; $files[] = $element;
} }
} }
} }
$items .= "</ul>";
// Fermer le dossier // Fermer le dossier
closedir($dh); closedir($dh);
// Trier les sous-dossiers et les fichiers si nécessaire
if ($sort) {
sort($subDirectories);
sort($files);
} }
// Initialiser la liste des éléments
$items = '<ul>';
// Ajouter les sous-dossiers à la liste si configuré pour les afficher
if ($showSubFolder) {
foreach ($subDirectories as $subDirectory) {
$items .= "<li class='directory'>$subDirectory";
// Appeler récursivement la fonction pour ce sous-dossier
$items .= $this->getFolderContent($chemin . '/' . $subDirectory, $config);
$items .= '</li>';
}
}
// Ajouter les fichiers à la liste
foreach ($files as $file) {
$items .= "<li class='file'><a href='" . $chemin . '/' . $file . "' data-lity>$file</a></li>";
}
// Fermer la liste
$items .= "</ul>";
return $items; return $items;
} }
} }
return '';
}