The existing query was not fully working as intended.
Also it did not work with proper MySQL sql_mode settings.
This is fixed by building a proper query which delivers expected and
deterministic results.
We now always have latest records first.
Also there is no need to fetch the sys_language_uid, as we only fetch
localized record if only one language is allowed. That way we can just
check configuration and use the configuration to do language overlay.
Relates: #35
BackendUtility::getRecordTitle might contain HTML tags like "span".
Those might result in broken rendering. As we don't need this markup
anyway, we remove it.
Allow integrator to limit results in widget to certain languages.
If only one language is allowed, labels will be translated.
Otherwise default system language is used.
E.g. one record will be displayed in multiple languages, it would be
confusing to show him multiple times for each language.
Add TYPO3 extension for phpstan as many things would break within tests.
Relates: #15
Allow Integrator to define rules to track views of records.
This allows to add tracking to extensions like tx_news.
Integrators are able to define matching rules on current request. If a
request matches, the record is stored as individual view beside existing
pageview.
Relates: #14
Extract operating system from user agent and store it in database
record.
Another widget is added which displays the page views per operating
system.
An command is provided which will update existing data.
10.4 introduced breaking changes for dashboard widgets.
The necessary changes to stay compatible are done within this commit.
No need anymore to configure widget through PHP, instead DI is used.
Instead only PHP to provide data is used.