Allowing campaigns to be marked as non-global.

This commit is contained in:
2026-02-06 23:55:06 +01:00
parent 57dfa621df
commit 6aaa3ad30c
2 changed files with 10 additions and 1 deletions

View File

@@ -82,18 +82,27 @@ export async function getRandomCampaign(options = {}, context = {}, pass = 0) {
const validCampaigns = campaigns.filter((campaign) => { const validCampaigns = campaigns.filter((campaign) => {
if (options.minRatio && (!campaign.banner || campaign.banner.ratio < options.minRatio)) { if (options.minRatio && (!campaign.banner || campaign.banner.ratio < options.minRatio)) {
// too small
return false; return false;
} }
if (options.maxRatio && (!campaign.banner || campaign.banner.ratio > options.maxRatio)) { if (options.maxRatio && (!campaign.banner || campaign.banner.ratio > options.maxRatio)) {
// too big
return false; return false;
} }
if (options.entityIds && !options.entityIds.some((entityId) => campaign.entity.id === entityId || campaign.entity.parent?.id === entityId)) { if (options.entityIds && !options.entityIds.some((entityId) => campaign.entity.id === entityId || campaign.entity.parent?.id === entityId)) {
// this is an entity page, this campaign does not belong to this entity
return false;
}
if (campaign.affiliate?.parameters?.global === false && !options.entityIds) {
// this campaign should only show on entity page
return false; return false;
} }
if (context.tagFilter && campaign.banner && campaign.banner.tags.some((tag) => context.tagFilter.includes(tag) && !options.tagSlugs?.includes(tag))) { if (context.tagFilter && campaign.banner && campaign.banner.tags.some((tag) => context.tagFilter.includes(tag) && !options.tagSlugs?.includes(tag))) {
// wrong tag
return false; return false;
} }

2
static

Submodule static updated: 4e5c91df28...13a0a44985