From a4d1e58ad70e58c53e15ad06331535cd12a67d83 Mon Sep 17 00:00:00 2001 From: nonmakina Date: Sun, 21 Feb 2021 16:18:26 -0600 Subject: [PATCH] Adds more IP counters --- templates/themes/categories/news.html | 16 ++++++++++- templates/themes/categories/theme.php | 41 ++++++++++++++++++--------- 2 files changed, 42 insertions(+), 15 deletions(-) diff --git a/templates/themes/categories/news.html b/templates/themes/categories/news.html index eea44a15..3492995e 100644 --- a/templates/themes/categories/news.html +++ b/templates/themes/categories/news.html @@ -36,7 +36,9 @@ {% trans "Board" %} {% trans "PPH" %} - {% trans "Recent IPs" %} + {% trans "IPs last hour" %} + {% trans "IPs last 24 hours (lynxchan-style)" %} + {% trans "IPs last 72 hours (8ch-style)" %} @@ -50,6 +52,12 @@ {{ stats.recent_ips }} + + {{ stats.daily_ips }} + + + {{ stats.tridaily_ips }} + {% for boardStat in stats.boards %} @@ -62,6 +70,12 @@ {{ boardStat.recent_ips }} + + {{ board.daily_ips }} + + + {{ board.tridaily_ips }} + {% endfor %} diff --git a/templates/themes/categories/theme.php b/templates/themes/categories/theme.php index e83359b3..c68e5601 100644 --- a/templates/themes/categories/theme.php +++ b/templates/themes/categories/theme.php @@ -100,8 +100,14 @@ return null; } + $HOUR = 3600; + $DAY = $HOUR * 24; + $TRIDAY = $DAY * 3; + $stats = []; $unique = []; + $daily = []; + $tridaily = []; foreach (array_merge(... $config['boards']) as $uri) { $_board = getBoardInfo($uri); @@ -112,6 +118,10 @@ $boardStat['title'] = $_board['title']; + $boardStat['hourly_ips'] = Categories::countUniqueIps($unique, $HOUR, $_board); + $boardStat['daily_ips'] = Categories::countUniqueIps($unique, $DAY, $_board); + $boardStat['tridaily_ips'] = Categories::countUniqueIps($unique, $TRIDAY, $_board); + $pph_query = query( sprintf("SELECT COUNT(*) AS count FROM ``posts_%s`` WHERE time > %d", $_board['uri'], @@ -120,28 +130,31 @@ $boardStat['pph'] = $pph_query->fetch()['count']; - $unique_query = query( - sprintf("SELECT DISTINCT ip FROM ``posts_%s`` WHERE time > %d", - $_board['uri'], - time()-3600) - ) or error(db_error()); - - $unique_ips = $unique_query->fetchAll(); - $boardStat['recent_ips'] = count($unique_ips); - - foreach ($unique_ips as $_k => $row) { - $unique[$row['ip']] = true; - } - $stats['boards'][] = $boardStat; } - $stats['recent_ips'] = count($unique); + $stats['hourly_ips'] = count($unique); + $stats['daily_ips'] = count($unique); + $stats['tridaily_ips'] = count($unique); $stats['pph'] = array_sum(array_column($stats['boards'], 'pph')); return $stats; } + private static function countUniqueIps($markAsCounted, $timespan, $_board) { + $unique_query = query( + sprintf("SELECT DISTINCT ip FROM ``posts_%s`` WHERE time > %d", + $_board['uri'], + time()-$timespan) + ) or error(db_error()); + $uniqueIps = $unique_query->fetchAll(); + foreach ($unique_ips as $_k => $row) { + $markAsCounted[$row['ip']] = true; + } + + return count($unique_ips); + } + };