0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) { $i--; $j--; } if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php"; if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php"; if (!$res && file_exists("../../main.inc.php")) $res = @include "../../main.inc.php"; if (!$res && file_exists("../../../main.inc.php")) $res = @include "../../../main.inc.php"; if (!$res) die("Include of main fails"); require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; require_once __DIR__.'/../class/upload_token.class.php'; header('Content-Type: application/json; charset=utf-8'); // Token validieren $token = (string) ($_REQUEST['token'] ?? ''); $tok = BerichtUploadToken::fetchValid($db, $token); if (!$tok) { http_response_code(403); echo json_encode(array('success' => false, 'error' => 'Token ungültig oder abgelaufen')); exit; } // Upload-Ordner ermitteln $upload_dir = $tok->getUploadDir(); if (!$upload_dir || !is_dir($upload_dir)) { echo json_encode(array('success' => true, 'photos' => array())); exit; } // Bilder auflisten $files = dol_dir_list($upload_dir, 'files', 0, '\.(jpg|jpeg|png|gif)$', '', 'date', SORT_DESC); $photos = array(); // Relative URL zum get_photo.php (funktioniert sowohl in /custom/bericht/ als auch /bericht/) $base_url = 'get_photo.php'; foreach ($files as $f) { $photos[] = array( 'filename' => $f['name'], 'url' => $base_url . '?token=' . urlencode($token) . '&file=' . urlencode($f['name']), 'size' => $f['size'], 'date' => dol_print_date($f['date'], '%Y-%m-%d %H:%M'), ); } echo json_encode(array( 'success' => true, 'photos' => $photos, 'count' => count($photos), ));