CoolCMS API

InitTrait

Table of Contents

Constants

TRACK_DEDUP_WINDOW  : mixed = 1800
Window in which a repeated impression or click of the same advert is not counted in the session.
TRACK_MAX_IDS  : mixed = 50
Maximum number of ids accepted in one impression report (a page holds only a few places).
TRACK_SESSION_SECTION  : mixed = 'front.base.advertList.tracking'

Methods

handleClick()  : void
Records an advert click. `trackClicks.js` sends `fetch(POST)` without `X-Requested-With`, so the gate checks the method, not AJAX; a robot with a bare GET gets 403.
handleViews()  : void
Records advert impressions (`BatchSender.js`, GET with `X-Requested-With`).
filterUntrackedIds()  : array<int, int>
Removes ids this session already reported within {@see TRACK_DEDUP_WINDOW} and remembers the rest.
intilializeRender()  : void
isTargetedAt()  : bool
Page targeting (user decision 19. 10.): an advert with `show_everywhere` is shown on every page, otherwise only on the pages checked in admin. Without a checked page it is shown nowhere.
resolveAdvertContents()  : Advert>, 1: array}
Returns the advert content in the page language ({@see TranslationFallback}): the active translation of the page language, then the active translation of the localization default language, otherwise the advert is skipped. An advert with empty content is skipped too; an empty `<li>` would only count impressions.

Constants

TRACK_DEDUP_WINDOW

Window in which a repeated impression or click of the same advert is not counted in the session.

private mixed TRACK_DEDUP_WINDOW = 1800

TRACK_MAX_IDS

Maximum number of ids accepted in one impression report (a page holds only a few places).

private mixed TRACK_MAX_IDS = 50

TRACK_SESSION_SECTION

private mixed TRACK_SESSION_SECTION = 'front.base.advertList.tracking'

Methods

handleClick()

Records an advert click. `trackClicks.js` sends `fetch(POST)` without `X-Requested-With`, so the gate checks the method, not AJAX; a robot with a bare GET gets 403.

public handleClick(int $advertId) : void
Parameters
$advertId : int
Attributes
#[Requires]
$methods: 'POST'

handleViews()

Records advert impressions (`BatchSender.js`, GET with `X-Requested-With`).

public handleViews(array<string|int, mixed> $ids) : void

IMPORTANT: the ids are gated, deduplicated and length-capped. Without that, place statistics could be inflated and a nested array would crash the request with a TypeError.

Parameters
$ids : array<string|int, mixed>
Attributes
#[Requires]
$ajax: true

filterUntrackedIds()

Removes ids this session already reported within {@see TRACK_DEDUP_WINDOW} and remembers the rest.

private filterUntrackedIds(string $kind, array<int, int> $advertIds) : array<int, int>

A dropped cookie bypasses the dedup, but each request still carries a bounded number of ids and a robot without JS or AJAX never reaches the signal.

Parameters
$kind : string
$advertIds : array<int, int>
Return values
array<int, int>

intilializeRender()

private intilializeRender(int $advertPlaceId[, int|null $count = 5 ]) : void
Parameters
$advertPlaceId : int
$count : int|null = 5

isTargetedAt()

Page targeting (user decision 19. 10.): an advert with `show_everywhere` is shown on every page, otherwise only on the pages checked in admin. Without a checked page it is shown nowhere.

private isTargetedAt(Advert $advert, int|null $pageId) : bool
Parameters
$advert : Advert
$pageId : int|null
Return values
bool

resolveAdvertContents()

Returns the advert content in the page language ({@see TranslationFallback}): the active translation of the page language, then the active translation of the localization default language, otherwise the advert is skipped. An advert with empty content is skipped too; an empty `<li>` would only count impressions.

private resolveAdvertContents(iterable<string|int, mixed> $adverts) : Advert>, 1: array}
Parameters
$adverts : iterable<string|int, mixed>
Return values
Advert>, 1: array} —

[adverts to render, id => HTML]

On this page

Search results