Analytics administration dashboard

* 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
This commit is contained in:
Mark Gregory
2026-07-24 13:06:48 +01:00
parent 5dbb04e3ad
commit 76e29fab03
22 changed files with 305 additions and 1 deletions
@@ -0,0 +1,21 @@
<?php
namespace Modules\Analytics\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Illuminate\Validation\Rule;
use Modules\Analytics\Services\AnalyticsTracker;
final class TrackingController extends Controller
{
public function store(Request $request, AnalyticsTracker $tracker): JsonResponse
{
$data=$request->validate([
'event_type'=>['required',Rule::in(['page_view','search','conversion','content_view','form_submit','commerce'])],
'path'=>['nullable','string','max:2048'],'title'=>['nullable','string','max:255'],'referrer'=>['nullable','string','max:2048'],
'visitor_id'=>['nullable','string','max:255'],'session_id'=>['nullable','string','max:255'],
'subject_type'=>['nullable','string','max:255'],'subject_id'=>['nullable','integer'],'properties'=>['nullable','array'],
]);
$event=$tracker->track($request,$data);
return response()->json(['recorded'=>(bool)$event],$event?201:202);
}
}