gfd
This commit is contained in:
@@ -588,7 +588,23 @@ export default {
|
|||||||
|
|
||||||
const effMode = Number(mode ?? 0);
|
const effMode = Number(mode ?? 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 modequery = multiRatingSQL ?? lib.getMode(effMode);
|
let baseMode = multiRatingSQL ?? lib.getMode(effMode);
|
||||||
|
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 tagFilter = db``;
|
let tagFilter = db``;
|
||||||
let titleFilter = db``;
|
let titleFilter = db``;
|
||||||
@@ -749,7 +765,7 @@ export default {
|
|||||||
|
|
||||||
// Determine the effective mode for optimization check (similar to Random)
|
// Determine the effective mode for optimization check (similar to Random)
|
||||||
const nsfl_id = cfg.nsfl_tag_id || 3;
|
const nsfl_id = cfg.nsfl_tag_id || 3;
|
||||||
const useTagsDriver = (effMode === 0 || effMode === 1 || effMode === 4) && !fav && !tag && !user && !hall;
|
const useTagsDriver = !!session && (effMode === 0 || effMode === 1 || effMode === 4) && !fav && !tag && !user && !hall;
|
||||||
|
|
||||||
const baseQuery = (whereClause, orderBy, limit = 1) => {
|
const baseQuery = (whereClause, orderBy, limit = 1) => {
|
||||||
return db`
|
return db`
|
||||||
|
|||||||
@@ -780,17 +780,30 @@ export default router => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let guestTagFilter = db``;
|
||||||
|
if (!session) {
|
||||||
|
if (cfg.websrv.public_nsfw) {
|
||||||
|
guestTagFilter = cfg.websrv.public_untagged
|
||||||
|
? db`and (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))`
|
||||||
|
: db`and id in (select item_id from tags_assign where tag_id in (1, 2))`;
|
||||||
|
} else {
|
||||||
|
guestTagFilter = cfg.websrv.public_untagged
|
||||||
|
? db`and (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))`
|
||||||
|
: db`and id in (select item_id from tags_assign where tag_id = 1)`;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const next = await db`
|
const next = await db`
|
||||||
select id
|
select id
|
||||||
from "items"
|
from "items"
|
||||||
where id > ${+id} and active = true and coalesce(visibility, 0) = 0
|
where id > ${+id} and active = true and coalesce(visibility, 0) = 0 ${guestTagFilter}
|
||||||
order by id
|
order by id
|
||||||
limit 1
|
limit 1
|
||||||
`;
|
`;
|
||||||
const prev = await db`
|
const prev = await db`
|
||||||
select id
|
select id
|
||||||
from "items"
|
from "items"
|
||||||
where id < ${+id} and active = true and coalesce(visibility, 0) = 0
|
where id < ${+id} and active = true and coalesce(visibility, 0) = 0 ${guestTagFilter}
|
||||||
order by id desc
|
order by id desc
|
||||||
limit 1
|
limit 1
|
||||||
`;
|
`;
|
||||||
|
|||||||
Reference in New Issue
Block a user