From c438ff9ab01b3194ad63ad6002840c6d02db46d7 Mon Sep 17 00:00:00 2001 From: nonmakina Date: Tue, 19 Jan 2021 20:27:00 -0600 Subject: [PATCH] Per board pph --- templates/themes/categories/news.html | 59 ++++++++++++++++++++------- templates/themes/categories/theme.php | 36 +++++++++++----- 2 files changed, 70 insertions(+), 25 deletions(-) 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" %} +

+ + + + + + + + + + + + + + + {% for boardStat in stats.boards %} + + + + {{ boardStat.recent_ips }} + + + +
BoardPPHRecent IPs
+ {% trans Total %} + + {{ stats.pph }} + + {{ stats.recent_ips }} +
+ {{ boardStat.title }} + + {{ boardStat.pph }} +
+
+ {% 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; }