* Page-view tracking * Unique visitor and session metrics * Content-view events * Search analytics * Conversion tracking * Form-submission events * Commerce events * Site-aware analytics * Privacy-conscious visitor hashing * Optional IP anonymisation * Do Not Track support * Configurable excluded paths * Daily metric aggregation * Top-page reporting * Recent-event activity * Report definitions * Scheduled report foundation * CSV and JSON report formats * Report execution history schema * Analytics retention and pruning * Administration navigation * Analytics permissions * Module registration * Feature test
29 lines
1.3 KiB
PHP
29 lines
1.3 KiB
PHP
<?php
|
|
namespace Modules\Analytics\Providers;
|
|
use Illuminate\Console\Scheduling\Schedule;
|
|
use Illuminate\Support\ServiceProvider;
|
|
use Modules\Analytics\Console\AggregateAnalytics;
|
|
use Modules\Analytics\Console\PruneAnalytics;
|
|
use Modules\Analytics\Console\RunScheduledReports;
|
|
final class AnalyticsServiceProvider extends ServiceProvider
|
|
{
|
|
public function register(): void
|
|
{
|
|
$this->app->register(RouteServiceProvider::class);
|
|
$this->mergeConfigFrom(module_path('Analytics', 'Config/config.php'), 'analytics');
|
|
}
|
|
public function boot(): void
|
|
{
|
|
$this->loadMigrationsFrom(module_path('Analytics', 'Database/Migrations'));
|
|
$this->loadViewsFrom(module_path('Analytics', 'Resources/views'), 'analytics');
|
|
if ($this->app->runningInConsole()) {
|
|
$this->commands([AggregateAnalytics::class, PruneAnalytics::class, RunScheduledReports::class]);
|
|
$this->callAfterResolving(Schedule::class, function (Schedule $schedule): void {
|
|
$schedule->command('analytics:aggregate')->hourly()->withoutOverlapping();
|
|
$schedule->command('analytics:reports')->everyFifteenMinutes()->withoutOverlapping();
|
|
$schedule->command('analytics:prune')->dailyAt('02:30')->withoutOverlapping();
|
|
});
|
|
}
|
|
}
|
|
}
|