diff --git a/templates/themes/categories/news.html b/templates/themes/categories/news.html
index 8f96de7f..54797185 100644
--- a/templates/themes/categories/news.html
+++ b/templates/themes/categories/news.html
@@ -24,22 +24,51 @@
{% endfor %}
{% endif %}
-
-
-
- {% trans "Post Statistics" %}
-
-
- {{ stats.pph }} {% trans "posts in the last hour." %}
- {{ stats.unique_ip_count }} {% trans "unique posters in the last hour." %}
-
-
-
+ {% if stats %}
+
+
+ {% trans "Post Statistics" %}
+
+
+
+
+ Board |
+ PPH |
+ Recent IPs |
+
+
+
+
+
+ {% trans Total %}
+ |
+
+ {{ stats.pph }}
+ |
+
+ {{ stats.recent_ips }}
+ |
+
+ {% for boardStat in stats.boards %}
+
+
+ {{ boardStat.title }}
+ |
+
+ {{ boardStat.pph }}
+ |
+ {{ boardStat.recent_ips }}
+
+
+
+
+
+ {% endif %}
diff --git a/templates/themes/categories/theme.php b/templates/themes/categories/theme.php
index 4877f88b..9806421f 100644
--- a/templates/themes/categories/theme.php
+++ b/templates/themes/categories/theme.php
@@ -24,7 +24,7 @@
file_write($config['dir']['home'] . $settings['file_main'], Categories::homepage($settings));
file_write($config['dir']['home'] . $settings['file_news'], Categories::news($settings));
}
-
+
if ($action == 'all'){
file_write($config['dir']['home'] . $settings['file_sidebar'], Categories::sidebar($settings));
}
@@ -94,33 +94,49 @@
}
private static function getPostStatistics($settings) {
- $boards = query("SELECT uri FROM ``boards``");
- $unique = Array();
- $pph = 0;
+ if (!isset($config['boards'])) {
+ return null;
+ }
+
+ $stats = [];
+
+ foreach (array_merge(... $config['boards']) as $_board) {
+ $title = boardTitle($board);
+ if (!$title) {
+ // board doesn't exist.
+ continue;
+ }
+
+ $boardStat['title'] = $title;
- foreach ($boards->fetchAll() as $_board) {
$pph_query = query(
sprintf("SELECT COUNT(*) AS count FROM ``posts_%s`` WHERE time > %d",
$_board['uri'],
time()-3600)
) or error(db_error());
- $pph += $pph_query->fetch()['count'];
+ $boardStat['pph'] = $pph_query->fetch()['count'];
$unique_query = query(
- sprintf("SELECT ip FROM ``posts_%s`` WHERE time > %d",
+ sprintf("SELECT DISTINCT ip FROM ``posts_%s`` WHERE time > %d",
$_board['uri'],
time()-3600)
) or error(db_error());
- foreach ($unique_query->fetchAll() as $_k => $row) {
+ $unique_ips = $unique_query->fetchAll();
+ $boardStat['recent_ips'] = count($unique_ips);
+
+ foreach ( as $_k => $row) {
$unique[$row['ip']] = true;
}
+
+ $stats['boards'][] = $boardStat;
}
- $unique_ip_count = count($unique);
+ $stats['recent_ips'] = count($unique);
+ $stats['pph'] = count(array_column($stats['board'], 'pph'));
- return Array('pph' => $pph, 'unique_ip_count' => $unique_ip_count);
+ return $stats;
}