From 2e44a65287fdb7f75abba07401786d8d678d4b8f Mon Sep 17 00:00:00 2001 From: hbrain Date: Tue, 26 May 2026 11:52:36 +0200 Subject: [PATCH] Sort admin media by media date --- new.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/new.php b/new.php index 45db00d..f9ddd9a 100644 --- a/new.php +++ b/new.php @@ -63,7 +63,16 @@ function write_data($dir, $post){ file_put_contents($dir . '/data.txt', implode("\n", $lines) . "\n"); } function editable_file($f){ $ext = strtolower(pathinfo((string)$f, PATHINFO_EXTENSION)); return $f !== '' && $f[0] !== '.' && $f !== 'data.txt' && in_array($ext, ['jpg','jpeg','png','webp','gif','mp4','mov','m4v','avi','mkv','webm','mp3','wav','m4a','aac','ogg','flac'], true); } -function list_files($dir){ $files = array_values(array_filter(scandir($dir), fn($f)=>editable_file($f) && is_file($dir.'/'.$f))); natcasesort($files); return $files; } +function natural_file_compare($a, $b){ return strnatcasecmp((string)$a, (string)$b); } +function list_files($dir){ $files = array_values(array_filter(scandir($dir), fn($f)=>editable_file($f) && is_file($dir.'/'.$f))); usort($files, 'natural_file_compare'); return $files; } +function media_sort_files($dir, $files){ + usort($files, function($a, $b) use ($dir) { + $da = media_file_date($dir . '/' . $a) ?? date('Ymd', filemtime($dir . '/' . $a)); + $db = media_file_date($dir . '/' . $b) ?? date('Ymd', filemtime($dir . '/' . $b)); + return $da === $db ? natural_file_compare($a, $b) : strcmp($da, $db); + }); + return $files; +} function media_file_date($path){ $ext = strtolower(pathinfo((string)$path, PATHINFO_EXTENSION)); if (in_array($ext, ['jpg','jpeg','tif','tiff'], true) && function_exists('exif_read_data')) { @@ -246,7 +255,7 @@ $page = max(1, (int)($_GET['page'] ?? 1)); [$videoPage, $videoPages, $orphanVideosPage, $orphanVideosTotal] = paginate($orphanVideos, $tab === 'videos' ? $page : 1); $editName = $_GET['edit'] ?? ''; $editDir = null; $editStatus = ''; $editRunning = false; $editData = ['title'=>'','date'=>'','place'=>'','description'=>'','captions'=>[]]; $editFiles = []; -if ($editName !== '') { try { $editDir = safe_input_dir($config['uploads_dir'], $editName); $editStatus = input_dir_status($editDir); $editRunning = $editStatus !== ''; if (!$editRunning) { $editData = read_data($editDir); $editFiles = list_files($editDir); } } catch (Throwable $e) { $err = $e->getMessage(); } } +if ($editName !== '') { try { $editDir = safe_input_dir($config['uploads_dir'], $editName); $editStatus = input_dir_status($editDir); $editRunning = $editStatus !== ''; if (!$editRunning) { $editData = read_data($editDir); $editFiles = media_sort_files($editDir, list_files($editDir)); } } catch (Throwable $e) { $err = $e->getMessage(); } } ?> Admin - <?=h($config['site_name'])?>