From 74e4509eeeabd786ca152d5a45e92ffa1895f5e5 Mon Sep 17 00:00:00 2001 From: Eduard Wisch Date: Fri, 17 Apr 2026 13:06:07 +0200 Subject: [PATCH] =?UTF-8?q?Fix:=20Dateigr=C3=B6=C3=9Fen=20mit=20glob+files?= =?UTF-8?q?ize=20statt=20dol=5Fdir=5Flist=20(korrigiert=200B=20Bug)=20[dep?= =?UTF-8?q?loy]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/orders.php | 35 ++++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/api/orders.php b/api/orders.php index ca4948a..5c39307 100644 --- a/api/orders.php +++ b/api/orders.php @@ -163,24 +163,29 @@ $cmd->fetch_thirdparty(); if (method_exists($cmd, 'fetch_optionals')) $cmd->fetch_optionals(); if ($action === 'photos') { - // Anhänge des Auftrags + // Anhänge des Auftrags — verwende glob statt dol_dir_list für korrektes filesize $upload_dir = $conf->commande->multidir_output[$cmd->entity].'/'.dol_sanitizeFileName($cmd->ref); - error_log('[BERICHT] upload_dir: '.$upload_dir.' exists: '.(is_dir($upload_dir) ? 'yes' : 'no')); - $files = is_dir($upload_dir) - ? dol_dir_list($upload_dir, 'files', 1, '', '(\.meta|_preview.*\.png|thumbs)$') - : array(); - error_log('[BERICHT] dol_dir_list returned '.count($files).' files'); $out = array(); - foreach ($files as $f) { - error_log('[BERICHT] file: '.$f['name'].' size: '.$f['size']); - $out[] = array( - 'filename' => $f['name'], - 'size' => (int) $f['size'], - 'mime' => dol_mimetype($f['name']), - 'date' => (int) $f['date'], - 'relpath' => str_replace(DOL_DATA_ROOT.'/', '', $f['fullname']), - ); + + if (is_dir($upload_dir)) { + $allFiles = glob($upload_dir.'/*', GLOB_NOSORT); + foreach ($allFiles as $filepath) { + if (!is_file($filepath)) continue; + $name = basename($filepath); + // Ignoriere Meta-Dateien, Previews und Hidden Files + if (strpos($name, '.meta') !== false || strpos($name, '_preview') !== false || $name[0] === '.') continue; + + $out[] = array( + 'filename' => $name, + 'size' => (int) @filesize($filepath), + 'mime' => dol_mimetype($name), + 'date' => (int) @filemtime($filepath), + 'relpath' => str_replace(DOL_DATA_ROOT.'/', '', $filepath), + ); + } } + // Sortiere nach Datum (neuste zuerst) + usort($out, function($a, $b) { return $b['date'] <=> $a['date']; }); api_ok(array('photos' => $out, 'count' => count($out))); }