* 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
22 lines
1.0 KiB
PHP
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);
|
|
}
|
|
}
|