wef
This commit is contained in:
@@ -1114,7 +1114,22 @@ export default {
|
|||||||
const isStrict = strictParams.length > 0;
|
const isStrict = strictParams.length > 0;
|
||||||
|
|
||||||
const multiRatingSQL = (Array.isArray(ratings) && ratings.length > 0) ? lib.getMultiRatingMode(ratings) : null;
|
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;
|
const modequery = baseMode;
|
||||||
|
|
||||||
let item;
|
let item;
|
||||||
@@ -1239,9 +1254,9 @@ export default {
|
|||||||
} else {
|
} else {
|
||||||
// Uniform random logic for global requests (no user/tag/hall)
|
// 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.
|
// When multi-rating SQL is active, use it directly. Otherwise use the tag-join optimisation.
|
||||||
const globalModeQuery = multiRatingSQL ?? lib.getMode(mode ?? 0);
|
const globalModeQuery = modequery;
|
||||||
// tagId optimisation only applies for single native modes (not multi-rating)
|
// tagId optimisation only applies for single native modes for logged-in users (not multi-rating or guest mode)
|
||||||
const tagId = !multiRatingSQL && (mode === 0 || mode === 1 || mode === 4)
|
const tagId = session && !multiRatingSQL && (mode === 0 || mode === 1 || mode === 4)
|
||||||
? (mode === 4 ? (cfg.nsfl_tag_id || 3) : (mode === 1 ? 2 : 1))
|
? (mode === 4 ? (cfg.nsfl_tag_id || 3) : (mode === 1 ? 2 : 1))
|
||||||
: null;
|
: null;
|
||||||
// If audio is included, we avoid the strict tagId optimization to ensure audio is visible
|
// If audio is included, we avoid the strict tagId optimization to ensure audio is visible
|
||||||
|
|||||||
Reference in New Issue
Block a user