CoolCMS API

AdvertStatistics extends BaseComponent
in package

Renders the views statistics of one advert as a ChartJS chart (`advert-statistics-chart.js`) with a granularity and date range filter.

The edit form renders it in the statistics tab as a sibling of the form (nested forms are forbidden, so the filter is a separate form).

Usage:

{control advertStatistics $advertId}

It matches the statistics tab of the front end advert edit (EditStatisticsTrait): same granularities, same aggregation buckets, same canvas markup. The admin theme already wires advert-statistics-chart.js in index.js.

Data flows through the Admin AdvertStatisticsManager and the ApiBridge get-all (admin-only privilege; the front end reads the scoped action my-list).

The filter submits over ajax (.ajax) and redraws only {snippet chart}, so the open tab stays. Without JS it falls back to a PRG redirect to #adv-tab-statistics, which is why the filter values live in Persistent properties.

Table of Contents

Properties

$container  : Container
$routerDispatcher  : RouterDispatcher
$statFrom  : string
Start of the range (Y-m-d); empty means the default range of the granularity.
$statG  : string
Chart granularity (day, week, month, year), see {@see AdvertStatisticsManager::GRANULARITIES}.
$statTo  : string
End of the range (Y-m-d); empty means the default range of the granularity.
$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
$advertId  : int
Advert whose statistics the component shows. Not a persistent parameter: the template passes it (`{control advertStatistics $advertId}`) and a hidden field carries it into the submit.
$advertStatisticsManager  : AdvertStatisticsManager

Methods

__call()  : mixed
Dispatches `renderXyz()` to `render('Xyz', ...$args)`.
__construct()  : mixed
createComponent()  : IComponent|null
filterFormSucceeded()  : void
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
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.
createComponentFilterForm()  : Form
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).
normalizeDate()  : string
Returns the date as Y-m-d, or an empty string (the default range then applies).
parseDate()  : DateTimeImmutable|null
Parses a Y-m-d date; returns null otherwise.
resolveGranularity()  : string
Validates the granularity from the persistent parameter against the allowed values.
resolveRange()  : DateTimeImmutable}
Returns the date range from the persistent parameters.

Properties

$statFrom

Start of the range (Y-m-d); empty means the default range of the granularity.

public string $statFrom = ''
Attributes
#[Persistent]

$statG

Chart granularity (day, week, month, year), see {@see AdvertStatisticsManager::GRANULARITIES}.

public string $statG = \App\UI\Admin\Bazaar\Models\Managers\AdvertStatisticsManager::GRANULARITY_DAY
Attributes
#[Persistent]

$statTo

End of the range (Y-m-d); empty means the default range of the granularity.

public string $statTo = ''
Attributes
#[Persistent]

$componentParameters

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

component parameters set by setComponentParameter()

$translatorDomain

protected string|null $translatorDomain = 'admin.bazaar.components.advertStatistics'

$advertId

Advert whose statistics the component shows. Not a persistent parameter: the template passes it (`{control advertStatistics $advertId}`) and a hidden field carries it into the submit.

private int $advertId = 0

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

filterFormSucceeded()

public filterFormSucceeded(Form $form, ArrayHash $values) : void
Parameters
$form : Form
$values : ArrayHash

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>>

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|null $advertId = null ]) : void
Parameters
$advertId : 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

normalizeDate()

Returns the date as Y-m-d, or an empty string (the default range then applies).

private normalizeDate(string $value) : string
Parameters
$value : string
Return values
string

parseDate()

Parses a Y-m-d date; returns null otherwise.

private parseDate(string $value) : DateTimeImmutable|null
Parameters
$value : string
Return values
DateTimeImmutable|null

resolveGranularity()

Validates the granularity from the persistent parameter against the allowed values.

private resolveGranularity() : string
Return values
string

resolveRange()

Returns the date range from the persistent parameters.

private resolveRange(string $granularity) : DateTimeImmutable}

When either end is missing or invalid, the default range of the granularity applies.

Parameters
$granularity : string
Return values
DateTimeImmutable} —

[from, to]

On this page

Search results