From b7a37c85f6be952532f2217a6cea39c406d966fd Mon Sep 17 00:00:00 2001 From: Amber Sprenkels Date: Tue, 22 Nov 2022 11:41:54 +0100 Subject: [PATCH] Complete date-ordered orderings Bug as reported by Yorick: When two Assets have the same capture date, a bug occurs in the interface where the user gets stuck in a loop when moving to the next image. This patch uses the primary key as a fallback when ordering the images by capture date. This way, the asset ordering is complete and it should resolve the bug. --- models/Asset.php | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/models/Asset.php b/models/Asset.php index e497754..8bf1e26 100644 --- a/models/Asset.php +++ b/models/Asset.php @@ -606,14 +606,12 @@ class Asset FROM assets_tags AS t INNER JOIN assets AS a ON a.id_asset = t.id_asset WHERE t.id_tag = {int:id_tag} AND - a.date_captured <= {datetime:date_captured} AND - a.id_asset != {int:id_asset} - ORDER BY a.date_captured DESC' + (a.date_captured, a.id_asset) < ({datetime:date_captured}, {int:id_asset}) + ORDER BY a.date_captured DESC, a.id_asset DESC' : ' FROM assets AS a - WHERE date_captured >= {datetime:date_captured} AND - a.id_asset != {int:id_asset} - ORDER BY date_captured ASC') + WHERE (a.date_captured, a.id_asset) > ({datetime:date_captured}, {int:id_asset}) + ORDER BY date_captured ASC, a.id_asset ASC') . ' LIMIT 1', [ @@ -639,14 +637,12 @@ class Asset FROM assets_tags AS t INNER JOIN assets AS a ON a.id_asset = t.id_asset WHERE t.id_tag = {int:id_tag} AND - a.date_captured >= {datetime:date_captured} AND - a.id_asset != {int:id_asset} - ORDER BY a.date_captured ASC' + (a.date_captured, a.id_asset) > ({datetime:date_captured}, {int:id_asset}) + ORDER BY a.date_captured ASC, a.id_asset ASC' : ' FROM assets AS a - WHERE date_captured <= {datetime:date_captured} AND - a.id_asset != {int:id_asset} - ORDER BY date_captured DESC') + WHERE (a.date_captured, a.id_asset) < ({datetime:date_captured}, {int:id_asset}) + ORDER BY date_captured DESC, a.id_asset DESC') . ' LIMIT 1', [