From 22dc1cd25b851595ed920745e7294cf96a8e36de Mon Sep 17 00:00:00 2001 From: Kibi Kelburton Date: Sun, 9 Aug 2026 03:27:12 +0200 Subject: [PATCH] wef --- src/inc/routeinc/f0cklib.mjs | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/src/inc/routeinc/f0cklib.mjs b/src/inc/routeinc/f0cklib.mjs index d5a7398..296b3e2 100644 --- a/src/inc/routeinc/f0cklib.mjs +++ b/src/inc/routeinc/f0cklib.mjs @@ -1114,7 +1114,22 @@ export default { const isStrict = strictParams.length > 0; const multiRatingSQL = (Array.isArray(ratings) && ratings.length > 0) ? lib.getMultiRatingMode(ratings) : null; - const baseMode = multiRatingSQL ?? lib.getMode(mode ?? 0); + let baseMode = multiRatingSQL ?? lib.getMode(mode ?? 0); + if (!session) { + if ((mode === 3 || mode === undefined || mode === null) && !multiRatingSQL) { + if (cfg.websrv.public_nsfw) { + baseMode = cfg.websrv.public_untagged + ? "(items.id in (select item_id from tags_assign where tag_id in (1, 2)) or not exists (select 1 from tags_assign where item_id = items.id))" + : "items.id in (select item_id from tags_assign where tag_id in (1, 2))"; + } else { + baseMode = cfg.websrv.public_untagged + ? "(items.id in (select item_id from tags_assign where tag_id = 1) or not exists (select 1 from tags_assign where item_id = items.id))" + : "items.id in (select item_id from tags_assign where tag_id = 1)"; + } + } else if (!cfg.websrv.public_untagged && (mode === 2 || (Array.isArray(ratings) && ratings.length === 1 && ratings[0] === 'untagged'))) { + baseMode = "1 = 0"; + } + } const modequery = baseMode; let item; @@ -1239,9 +1254,9 @@ export default { } else { // Uniform random logic for global requests (no user/tag/hall) // When multi-rating SQL is active, use it directly. Otherwise use the tag-join optimisation. - const globalModeQuery = multiRatingSQL ?? lib.getMode(mode ?? 0); - // tagId optimisation only applies for single native modes (not multi-rating) - const tagId = !multiRatingSQL && (mode === 0 || mode === 1 || mode === 4) + const globalModeQuery = modequery; + // tagId optimisation only applies for single native modes for logged-in users (not multi-rating or guest mode) + const tagId = session && !multiRatingSQL && (mode === 0 || mode === 1 || mode === 4) ? (mode === 4 ? (cfg.nsfl_tag_id || 3) : (mode === 1 ? 2 : 1)) : null; // If audio is included, we avoid the strict tagId optimization to ensure audio is visible