From 9659a4197cc30a1c6f2ef8cbedf85d899543b910 Mon Sep 17 00:00:00 2001 From: severak Date: Mon, 20 Jan 2020 15:56:52 +0100 Subject: [PATCH] stats: pages, browsers, platforms and references --- stats.php | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/stats.php b/stats.php index 8af3852..7dc050b 100644 --- a/stats.php +++ b/stats.php @@ -13,7 +13,7 @@ if (!empty($_GET['for'])) { // TODO - for now all stats are de-facto public, this should not be true $labels = $visits = $uniques = []; - for ($d=14; $d>0; $d--) { + for ($d=14; $d>=0; $d--) { $labels[date('Y-m-d', strtotime('-'.$d.'days'))] = date('Dd', strtotime('-'.$d.'days')); $visits[date('Y-m-d', strtotime('-'.$d.'days'))] = 0; $uniques[date('Y-m-d', strtotime('-'.$d.'days'))] = 0; @@ -35,6 +35,29 @@ GROUP BY date', [':site_id'=>$site['id'], ':date_min'=>date('Y-m-d', strtotime(' $uniques[$stat['date']] = (int) $stat['visits']; } + $totalVisits = $pdo->run('SELECT COUNT(*) FROM visits WHERE site_id=?', [$site['id']])->fetchColumn(); + $byPaths = $pdo->run('SELECT path, COUNT(*) as visits +FROM visits +WHERE site_id=? +GROUP BY path +ORDER BY visits DESC', [$site['id']])->fetchAll(); + $byBrowsers = $pdo->run('SELECT browser, COUNT(*) as visits +FROM visits +WHERE site_id=? +GROUP BY browser +ORDER BY visits DESC', [$site['id']])->fetchAll(); + $byPlatforms = $pdo->run('SELECT platform, COUNT(*) as visits +FROM visits +WHERE site_id=? +GROUP BY platform +ORDER BY visits DESC', [$site['id']])->fetchAll(); + $byRefs = $pdo->run('SELECT ref, COUNT(*) as visits +FROM visits +WHERE site_id=? AND ref!="" +GROUP BY ref +ORDER BY visits DESC', [$site['id']])->fetchAll(); + + } else { $sites = $pdo->run('SELECT host, label, COUNT(*) AS visits, stats_public FROM visits @@ -58,6 +81,10 @@ ORDER BY visits DESC'); +
@@ -114,7 +141,44 @@ ORDER BY visits DESC'); }; + + Top visited pages'; + foreach ($byPaths as $page) { + echo '
'.$page['path'].''; + echo ' ' . pct($page['visits'], $totalVisits) . '%
'; + } +} + +if (count($byBrowsers)) { + echo '

Top browsers

'; + foreach ($byBrowsers as $page) { + echo '
'.$page['browser'].''; + echo ' ' . pct($page['visits'], $totalVisits) . '%
'; + } +} + +if (count($byPlatforms)) { + echo '

Top platforms

'; + foreach ($byPlatforms as $page) { + echo '
'.$page['platform']; + echo ' ' . pct($page['visits'], $totalVisits) . '%
'; + } +} + +if (count($byRefs)) { + echo '

Top references

'; + foreach ($byRefs as $page) { + echo '
'.$page['ref']; + echo ' ' . pct($page['visits'], $totalVisits) . '%
'; + } +} + +?> + + Sitedomain#visits'; @@ -129,6 +193,7 @@ ORDER BY visits DESC'); } ?>
+ execute($args); return $stmt; } +} + +function pct($of, $total){ + $p1 = $total / 100; + return round($of / $p1); } \ No newline at end of file