Instruct the AutoDJ to use its own generated queue for playback checking instead of SongHistory (the public playback timeline) for more accurate history.
Previously AzuraCast had two very similar `$settings` variables, one that was from environment and the other from the database. This refactor distinguishes the two much more clearly.
- Make the Analytics table in the database the primary one for handling statistics for all stations, removing the InfluxDB dependency entirely
- Expand the Analytics table to also track unique listeners per hour and day
- Properly clean up the Listeners table according to each installation's history retention settings
- Implement a cute new animated "waiting for services" startup message that avoids previous wait messages that looked more like errors
* Song database and entity overhaul, part 1.
* Remove Songs table from a number of qeries and reports.
* Fix references to Songs table; rewrite StationMedia processing.
* Remove song reference in queue page.
* Allow custom log level via environment variable.
* Add configurable time range for duplicate prevention
* Add missing belongsTo to duplicate prevention range setting
* Fix bug in calculation of least played song when duplicate can't be prevented by taking history timestamp_start into account
Create a new "StationQueue" entity that contains the upcoming song queue, and split the important AutoDJ functionality across multiple classes (Annotations, Queue and Scheduler).
- Switch to EntityManagerInterface for EM uses
- Wrap EntityManager in close-resilient wrapper
- Close/clear/reopen EM with every request
- Rework tests to be em->clear() resilient.
Implement an upgrade of the codebase to use Slim Framework version 4, which includes the following changes:
- Updating to Slim version 4 and the corresponding AzuraCore updates.
- Making all objects PSR-7 Request/Response agnostic (and creating RequestHelper and ResponseHelper objects to interact with the PSR-7 Req/Resp objects).
- Moving to PHP-DI as a DI container and implementing its autowiring support.
This fixes one significant issue in the AzuraCast system where NowPlaying responses don't respect the "always use HTTPS" or "prefer browser URL" settings.
* Initial renaming to a single global App\ namespace.
* Move CSRF/Flash under Session, move Session under Request
* Use new Request Station helper
* Unify App/Acl and App/Acl/StationAcl
* Alphabetize composer.json