fix(analytics): UTM from query string, iOS before macOS detection, remove dead referer fallback
parent
66e559173c
commit
86f767a626
|
|
@ -20,6 +20,7 @@ class RecordClickJob implements ShouldQueue
|
|||
public readonly string $ip,
|
||||
public readonly ?string $userAgent,
|
||||
public readonly array $headers,
|
||||
public readonly array $queryParams = [],
|
||||
) {}
|
||||
|
||||
public function handle(): void
|
||||
|
|
@ -40,10 +41,10 @@ class RecordClickJob implements ShouldQueue
|
|||
'device' => $device,
|
||||
'os' => $this->detectOs($this->userAgent ?? ''),
|
||||
'browser' => $this->detectBrowser($this->userAgent ?? ''),
|
||||
'referrer_host' => $this->extractHost($this->headers['referer'][0] ?? $this->headers['Referer'][0] ?? null),
|
||||
'utm_source' => $this->headers['utm_source'][0] ?? null,
|
||||
'utm_medium' => $this->headers['utm_medium'][0] ?? null,
|
||||
'utm_campaign' => $this->headers['utm_campaign'][0] ?? null,
|
||||
'referrer_host' => $this->extractHost($this->headers['referer'][0] ?? null),
|
||||
'utm_source' => $this->queryParams['utm_source'] ?? null,
|
||||
'utm_medium' => $this->queryParams['utm_medium'] ?? null,
|
||||
'utm_campaign' => $this->queryParams['utm_campaign'] ?? null,
|
||||
'language' => substr($this->headers['accept-language'][0] ?? 'de', 0, 10),
|
||||
]);
|
||||
|
||||
|
|
@ -82,10 +83,10 @@ class RecordClickJob implements ShouldQueue
|
|||
|
||||
private function detectOs(string $ua): ?string
|
||||
{
|
||||
if (stripos($ua, 'Windows') !== false) return 'windows';
|
||||
if (stripos($ua, 'Mac OS') !== false) return 'macos';
|
||||
if (stripos($ua, 'iPhone') !== false || stripos($ua, 'iPad') !== false) return 'ios';
|
||||
if (stripos($ua, 'Android') !== false) return 'android';
|
||||
if (stripos($ua, 'Windows') !== false) return 'windows';
|
||||
if (stripos($ua, 'Mac OS') !== false) return 'macos';
|
||||
if (stripos($ua, 'Linux') !== false) return 'linux';
|
||||
return null;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,9 +44,10 @@ class RedirectController extends Controller
|
|||
// 4. RecordClickJob dispatched in Task 7
|
||||
\App\Domains\Analytics\Jobs\RecordClickJob::dispatch(
|
||||
(int) $data['link_id'],
|
||||
$request->ip(),
|
||||
$request->ip() ?? '',
|
||||
$request->userAgent() ?? '',
|
||||
$request->headers->all()
|
||||
$request->headers->all(),
|
||||
$request->query(),
|
||||
)->onQueue('clicks');
|
||||
|
||||
// 5. 302 redirect
|
||||
|
|
|
|||
Loading…
Reference in New Issue