Files
wevads-platform/scripts/api_analytics.php
2026-02-26 04:53:11 +01:00

68 lines
3.5 KiB
PHP
Executable File

<?php
header('Content-Type: application/json');
error_reporting(0);
$pdo = new PDO("pgsql:host=localhost;dbname=adx_system", "admin", "admin123", [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
$action = $_GET['action'] ?? '';
switch ($action) {
case 'overview':
$today = date('Y-m-d');
$week = date('Y-m-d', strtotime('-7 days'));
$month = date('Y-m-d', strtotime('-30 days'));
$todaySent = $pdo->query("SELECT COALESCE(SUM(total_sent), 0) FROM admin.campaigns WHERE DATE(started_at) = '$today'")->fetchColumn() ?: 0;
$todayCamp = $pdo->query("SELECT COUNT(*) FROM admin.campaigns WHERE DATE(started_at) = '$today'")->fetchColumn() ?: 0;
$weekSent = $pdo->query("SELECT COALESCE(SUM(total_sent), 0) FROM admin.campaigns WHERE started_at >= '$week'")->fetchColumn() ?: 0;
$weekCamp = $pdo->query("SELECT COUNT(*) FROM admin.campaigns WHERE started_at >= '$week'")->fetchColumn() ?: 0;
$monthSent = $pdo->query("SELECT COALESCE(SUM(total_sent), 0) FROM admin.campaigns WHERE started_at >= '$month'")->fetchColumn() ?: 0;
$monthCamp = $pdo->query("SELECT COUNT(*) FROM admin.campaigns WHERE started_at >= '$month'")->fetchColumn() ?: 0;
$totalSent = $pdo->query("SELECT COALESCE(SUM(total_sent), 0) FROM admin.campaigns")->fetchColumn() ?: 0;
$totalCamp = $pdo->query("SELECT COUNT(*) FROM admin.campaigns")->fetchColumn() ?: 0;
echo json_encode([
'today' => ['sent' => $todaySent, 'campaigns' => $todayCamp],
'week' => ['sent' => $weekSent, 'campaigns' => $weekCamp],
'month' => ['sent' => $monthSent, 'campaigns' => $monthCamp],
'total' => ['sent' => $totalSent, 'campaigns' => $totalCamp]
]);
break;
case 'campaign':
$cid = intval($_GET['campaign_id'] ?? 0);
$opens = $pdo->query("SELECT COUNT(*) FROM admin.tracking_opens WHERE campaign_id = $cid")->fetchColumn() ?: 0;
$clicks = $pdo->query("SELECT COUNT(*) FROM admin.tracking_clicks WHERE campaign_id = $cid")->fetchColumn() ?: 0;
$bounces = $pdo->query("SELECT COUNT(*) FROM admin.bounces WHERE campaign_id = $cid")->fetchColumn() ?: 0;
$stmt = $pdo->prepare("SELECT * FROM admin.campaigns WHERE id = ?");
$stmt->execute([$cid]);
$campaign = $stmt->fetch(PDO::FETCH_ASSOC);
$sent = $campaign['total_sent'] ?? 0;
echo json_encode([
'campaign' => $campaign,
'sent' => $sent,
'opens' => $opens,
'open_rate' => $sent > 0 ? round(($opens / $sent) * 100, 2) : 0,
'clicks' => $clicks,
'click_rate' => $sent > 0 ? round(($clicks / $sent) * 100, 2) : 0,
'bounces' => $bounces,
'bounce_rate' => $sent > 0 ? round(($bounces / $sent) * 100, 2) : 0
]);
break;
case 'top':
$campaigns = $pdo->query("SELECT id, name, total_sent, inbox_rate, created_at FROM admin.campaigns ORDER BY total_sent DESC LIMIT 10")->fetchAll(PDO::FETCH_ASSOC);
echo json_encode(['campaigns' => $campaigns]);
break;
case 'by_isp':
$data = $pdo->query("SELECT isp, COUNT(*) as campaigns, COALESCE(SUM(total_sent),0) as total_sent FROM admin.campaigns GROUP BY isp ORDER BY total_sent DESC")->fetchAll(PDO::FETCH_ASSOC);
echo json_encode(['data' => $data]);
break;
default:
echo json_encode(['actions' => ['overview','campaign','top','by_isp']]);
}