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);
+ }
+
};