ich versteh es nicht... funktioniert bei mir auf drei Servern mit unterschiedlichen PHP-Versionen, funktioniert bei Harald
durch die Testerei hat sich rausgestellt, das der Slash am Beginn des Ordners im Dropletaufruf zwingend ist, läßt sich aber auch noch abfangen.
Der Code im Droplet ist einfach zu verstehen, hier mal als Foto wegen der Zeilennummern

Zeile 1 fängt den Pfad ab, falls der mit dem Droplet nicht übergeben wird
Zeile 2 definiert das leere Array, das ab Zeile 11 mit den Inhalten des Ordners gefüllt wird
Zeile 5 hängt einen Slash an den Pfad
Zeile 6 definiert den Pfad, der dann in Zeile 9 verwendet wird
Zeile 7 wird für die URL der jeweiligen Datei benötigt, damit diese anklickbar ist
Zeile 9 ist eine PHP-Funktion, die ab PHP 5 läuft und in WB an diversen Stellen verwendet wird, z.b. im Droplet-Modul zum Auslesen der Dateien eines ZIP, in der Foldergallery zum Erstellen der Ordnerliste zur Auswahl der jeweiligen Gallery oder auch im News-Modul bei Modul-Upgrade, wenn die Dateien im posts-Ordner neu geschrieben werden.
Zeile 10 ist Beginn der Schleife zum Eintragen der File-Infos
Der Rest ist hier nicht von Belang, da das Modul auf Grund des "falschen" Pfades in Zeile 9 ja nicht weiterkommt.
Testcode für eine einfache Code-Section, Zeile 1 definiert den Pfad
/media/path1/path2/PDFs, der Droplet-Aufruf wäre dann, dem Pfad entsprechend: [[dirlist?path=/path1/path2/PDFs]]
Zur Kontrolle wird oberhalb der Ausgabe der definierte Pfad angezeigt, der natürlich so existieren muß
$path = "/path1/path2/PDFs";
if (!isset($path)){ $path='';}
$file_array = array();
// add trailing slash if missing
if (substr($path, -1) != "/") $path .= "/";
$sDirectory = WB_PATH.MEDIA_DIRECTORY.$path;
$sFileUrl = WB_URL.MEDIA_DIRECTORY.$path;
echo "Dir : ".$sDirectory."<br>";
// open directory for reading
$d = new DirectoryIterator($sDirectory) or die("getFileList: Failed opening directory $path for reading");
foreach ($d as $fileinfo) {
// skip hidden files
if ($fileinfo->isDot()) continue;
// human readable filesizes
$precision = 2;
$units = array('B', 'KB', 'MB', 'GB', 'TB');
$bytes = $fileinfo->getSize();
$pow = floor(($bytes ? log($bytes) : 0) / log(1024));
$pow = min($pow, count($units) - 1);
$bytes /= pow(1024, $pow);
if (!$fileinfo->isDir()) {
$file_array[] = array(
'name' => "{$fileinfo}",
'type' => ($fileinfo->getType() == "dir") ? "dir" : mime_content_type($fileinfo->getRealPath()),
'size' => round($bytes, $precision) . ' ' . $units[$pow],
'lastmod' => $fileinfo->getMTime()
);
}
}
print_r($file_array);