CoolCMS API

AdvertList extends BaseComponent
in package
uses InitTrait, InMultiplierTrait

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'

Properties

$container  : Container
$routerDispatcher  : RouterDispatcher
$translator  : ITranslator
$appContext  : AppContext
$componentParameters  : array<string, mixed>
$currencyContext  : CurrencyContext|null
$deviceDetector  : DeviceDetector|null
$languageContext  : LanguageContext|null
$localizationContext  : LocalizationContext|null
$settingContext  : SettingContext
$themeContext  : ThemeContext|null
$translatorDomain  : string|null
$advertManager  : AdvertManager
$advertPlaceManager  : AdvertPlaceManager

Methods

__call()  : mixed
Dispatches `renderXyz()` to `render('Xyz', ...$args)`.
__construct()  : mixed
createComponent()  : IComponent|null
getAppContext()  : AppContext
getComponentParameter()  : mixed
Returns a component parameter, or null when it is not set.
getContainer()  : Container
getCurrencyContext()  : CurrencyContext|null
getLanguageContext()  : LanguageContext|null
getLocalizationContext()  : LocalizationContext|null
getRouterDispatcher()  : RouterDispatcher
getSettingContext()  : SettingContext
getSettings()  : array<int, array<string, mixed>>
getThemeContext()  : ThemeContext|null
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`).
hasServiceByType()  : bool
Returns whether the container has a service of the given type.
initializeAllContexts()  : void
injectDeviceDetector()  : void
onCreate()  : void
render()  : void
setAppContext()  : $this
setComponentParameter()  : void
Sets a component parameter.
setCurrencyContext()  : $this
setLanguageContext()  : $this
setLocalizationContext()  : $this
setSettingContext()  : $this
setThemeContext()  : $this
setup()  : void
setupAppContext()  : void
typedComponent()  : T
Returns a subcomponent with a verified type.
frontPresenter()  : BasePresenter|null
Returns the front presenter the component is attached to (null outside the front end or when detached).
getTranslator()  : ITranslator
setTemplateFile()  : void
setTranslator()  : self
createMultiplierComponent()  : Multiplier<string|int, IComponent>
Creates a multiplier for the component.
createNewComponentInstance()  : IComponent|null
Creates a new component instance without adding it to the presenter; used by the multiplier.
createStandardComponent()  : IComponent|null
Creates a standard component (not a multiplier).
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'

Properties

$componentParameters

protected array<string, mixed> $componentParameters = []

component parameters set by setComponentParameter()

$translatorDomain

protected string|null $translatorDomain = 'front.base.components.advertList'

Methods

__call()

Dispatches `renderXyz()` to `render('Xyz', ...$args)`.

public __call(string $name, array<string|int, mixed> $args) : mixed

Called only when the component has no renderXyz() method of its own.

Parameters
$name : string
$args : array<string|int, mixed>

createComponent()

public createComponent(string $name) : IComponent|null
Parameters
$name : string
Return values
IComponent|null

getComponentParameter()

Returns a component parameter, or null when it is not set.

public getComponentParameter(string $name) : mixed
Parameters
$name : string

getContainer()

public getContainer() : Container
Return values
Container

getSettings()

public getSettings() : array<int, array<string, mixed>>
Return values
array<int, array<string, mixed>>

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

hasServiceByType()

Returns whether the container has a service of the given type.

public hasServiceByType(string $className) : bool

The name is composed dynamically (module plus component), so class_exists() runs first, and a true result guarantees a valid type.

Parameters
$className : string
Tags
phpstan-assert-if-true

class-string $className

Return values
bool

render()

public render([int $advertPlaceId = 0 ][, string $style = "Style_1" ][, int|null $count = null ]) : void
Parameters
$advertPlaceId : int = 0
$style : string = "Style_1"
$count : int|null = null

setComponentParameter()

Sets a component parameter.

public setComponentParameter(string $name, mixed $value) : void
Parameters
$name : string
$value : mixed

typedComponent()

Returns a subcomponent with a verified type.

public typedComponent(string $name, T> $type) : T

Use it instead of an inline @var above $this['x'] (which does not narrow the type) and instead of the generic IComponent that $this['x'] returns. See Form::typedComponent().

Parameters
$name : string
$type : T>
Tags
template
Return values
T

frontPresenter()

Returns the front presenter the component is attached to (null outside the front end or when detached).

protected frontPresenter() : BasePresenter|null
Return values
BasePresenter|null

getTranslator()

protected getTranslator() : ITranslator
Return values
ITranslator

setTemplateFile()

protected setTemplateFile(string $dir, string $filename) : void
Parameters
$dir : string
$filename : string

setTranslator()

protected setTranslator(ITranslator $translator) : self
Parameters
$translator : ITranslator
Return values
self

createMultiplierComponent()

Creates a multiplier for the component.

private createMultiplierComponent(string $name) : Multiplier<string|int, IComponent>
Parameters
$name : string
Return values
Multiplier<string|int, IComponent>

createNewComponentInstance()

Creates a new component instance without adding it to the presenter; used by the multiplier.

private createNewComponentInstance(string $baseName[, int|string|null $uniqueKey = null ]) : IComponent|null
Parameters
$baseName : string
$uniqueKey : int|string|null = null
Return values
IComponent|null

createStandardComponent()

Creates a standard component (not a multiplier).

private createStandardComponent(string $name) : IComponent|null
Parameters
$name : string
Return values
IComponent|null

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