Files
ABSDEV/Modules/Analytics/Http/Controllers/TrackingController.php
T
Mark Gregory 76e29fab03 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
2026-07-24 13:06:48 +01:00

22 lines
1.0 KiB
PHP

<?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);
}
}