diff --git a/app/Stats/Users.php b/app/Stats/Users.php
index e22260655..10a17cf15 100644
--- a/app/Stats/Users.php
+++ b/app/Stats/Users.php
@@ -382,4 +382,30 @@ class Users extends \Gazelle\Base {
");
return $this->db->affected_rows();
}
+
+ public function browserList(): array {
+ $this->db->prepared_query("
+ SELECT Browser AS name,
+ BrowserVersion AS `version`,
+ count(*) AS total
+ FROM users_sessions
+ WHERE Browser IS NOT NULL
+ GROUP BY name, version
+ ORDER BY total DESC, name, version
+ ");
+ return $this->db->to_array(false, MYSQLI_ASSOC, false);
+ }
+
+ public function operatingSystemList(): array {
+ $this->db->prepared_query("
+ SELECT OperatingSystem AS name,
+ OperatingSystemVersion AS version,
+ count(*) AS total
+ FROM users_sessions
+ WHERE OperatingSystem IS NOT NULL
+ GROUP BY name, version
+ ORDER BY total DESC, name, version
+ ");
+ return $this->db->to_array(false, MYSQLI_ASSOC, false);
+ }
}
diff --git a/sections/tools/data/platform_usage.php b/sections/tools/data/platform_usage.php
index fc2aa75a9..c2f50821a 100644
--- a/sections/tools/data/platform_usage.php
+++ b/sections/tools/data/platform_usage.php
@@ -4,51 +4,9 @@ if (!$Viewer->permitted('site_debug')) {
error(403);
}
-View::show_header('OS and Browser Usage');
+$stats = new Gazelle\Stats\Users;
-?>
-
-
-
- | OS |
- Count |
-
-
-prepared_query("SELECT OperatingSystem, OperatingSystemVersion, COUNT(*) FROM users_sessions WHERE OperatingSystem IS NOT NULL GROUP BY OperatingSystem, OperatingSystemVersion ORDER BY COUNT(*) DESC");
-while (list($OperatingSystem, $OperatingSystemVersion, $Count) = $DB->fetch_record(0, 'OperatingSystem', 1, 'OperatingSystemVersion')) {
- ?>
-
- | =$OperatingSystem?> =$OperatingSystemVersion?> |
- =$Count?> |
-
-
-
-
-
-
- | Browser |
- Count |
-
-
-prepared_query("SELECT Browser, BrowserVersion, COUNT(*) FROM users_sessions WHERE Browser IS NOT NULL GROUP BY Browser, BrowserVersion ORDER BY COUNT(*) DESC");
-while (list($Browser, $BrowserVersion, $Count) = $DB->fetch_record(0, 'Browser', 1, 'BrowserVersion')) {
- ?>
-
- | =$Browser?> =$BrowserVersion?> |
- =$Count?> |
-
-
-
-render('admin/platform-usage.twig', [
+ 'os_list' => $stats->operatingSystemList(),
+ 'browser_list' => $stats->browserList(),
+]);
diff --git a/templates/admin/platform-usage.twig b/templates/admin/platform-usage.twig
new file mode 100644
index 000000000..cbc2e0885
--- /dev/null
+++ b/templates/admin/platform-usage.twig
@@ -0,0 +1,38 @@
+{{ header('OS and Browser Usage') }}
+
+
+
+
+
+ | OS |
+ Count |
+
+{% for os in os_list %}
+
+ | {{ os.name }} {{ os.version }} |
+ {{ os.total|number_format }} |
+
+{% endfor %}
+
+
+
+
+
+ | Browser |
+ Count |
+
+{% for browser in browser_list %}
+
+ | {{ browser.name }} {{ browser.version }} |
+ {{ browser.total|number_format }} |
+
+{% endfor %}
+
+
+
+
+{{ footer() }}