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 Usage

-
- - - - - - -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')) { - ?> - - - - - -
OSCount
-
-

Browser Usage

-
- - - - - - -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')) { - ?> - - - - - -
BrowserCount
-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 Usage

+
+ + + + + +{% for os in os_list %} + + + + +{% endfor %} +
OSCount
{{ os.name }} {{ os.version }}{{ os.total|number_format }}
+ +
+

Browser Usage

+
+ + + + + +{% for browser in browser_list %} + + + + +{% endfor %} +
BrowserCount
{{ browser.name }} {{ browser.version }}{{ browser.total|number_format }}
+
+
+ +{{ footer() }}