2 require_once "common.php";
3 require_once "header.php";
4 require_once "connection.php";
6 $stats = $rpc->stats()->get();
9 <h2
>Network Overview
</h2
><div data
-toggle
="tooltip" data
-placement
="top" title
="The stats on this page are updated in real-time"
10 class="card text-center row font-weight-bold"
11 style
="margin-left:5%;height:26px;width:60px;background-color:red;color:white">
12 <small style
="margin-left:-40px;padding-top:3px;margin-right:-50px">⚪
</small
>LIVE
</div
>
15 $array_of_stats = (array)$stats;
17 /* What if someone wants to add their own stats... */
18 Hook
::run(HOOKTYPE_PRE_OVERVIEW_CARD
, $array_of_stats);
20 /* This makes sure that a plugin which called the parameter
21 * by reference can add/update the stats for display here.
23 $stats = (object) $array_of_stats;
26 Hook
::run(HOOKTYPE_GET_USER_LIST
, $userlist);
27 $num_of_panel_admins = count($userlist);
35 <div
class="container card-container" style
="margin-left:40px;margin-top:30px">
37 <div
class="row mt-3">
38 <div
class="col-sm mb-3">
39 <div
class="card text-center">
40 <div
class="card-header bg-success text-white">
43 <i
class="fa fa-users fa-3x"></i
><span
class="position-absolute badge rounded-pill badge-warning">
44 <?php
echo "Record: ".$stats->user
->record
; ?>
48 <h3 id
="stats_user_total" class="display-4"><?php
echo $stats->user
->total
; ?></h3
>
52 <div
class="card-body">
57 <div
class="col"> <a
class="btn btn-primary" href
="<?php echo get_config("base_url
"); ?>users">View
</a
></div
>
64 <div
class="col-sm mb-3">
65 <div
class="card text-center">
66 <div
class="card-header bg-primary text-white">
69 <i
class="fa fa-hashtag fa-3x"></i
>
72 <h3 id
="stats_channel_total" class="display-4"><?php
echo $stats->channel
->total
; ?></h3
>
76 <div
class="card-body">
81 <div
class="col"><a
class="btn btn-primary" href
="<?php echo get_config("base_url
"); ?>channels">View
</a
></div
>
86 <div
class="col-sm mb-3">
87 <div
class="card text-center">
88 <div
class="card-header bg-warning">
91 <i
class="fa fa-shield-halved fa-3x"></i
>
94 <h3 id
="stats_oper_total" class="display-4"><?php
echo $stats->user
->oper
; ?></h3
>
98 <div
class="card-body">
103 <div
class="col"><a
class="btn btn-primary" href
="<?php echo get_config("base_url
")."users
/?operonly
"; ?>">View
</a
></div
>
109 <div
class="col-sm mb-3">
110 <div
class="card text-center">
111 <div
class="card-header bg-secondary text-white">
114 <i
class="fa fa-network-wired fa-3x"></i
>
117 <h3 id
="stats_server_total" class="display-4"><?php
echo $stats->server
->total
; ?></h3
>
121 <div
class="card-body">
126 <div
class="col"> <a
class="btn btn-primary" href
="<?php echo get_config("base_url
"); ?>servers">View
</a
></div
>
133 <div
class="container card-container" style
="margin-left:40px;margin-top:30px">
136 <div
class="col-sm mb-3">
137 <div
class="card text-center">
138 <div
class="card-header bg-danger text-white">
141 <i
class="fa fa-ban fa-3x"></i
>
144 <h3 id
="num_server_bans" class="display-4"><?php
echo $stats->server_ban
->server_ban
; ?></h3
>
148 <div
class="card-body">
153 <div
class="col"> <a
class="btn btn-primary" href
="<?php echo get_config("base_url
"); ?>server-bans">View
</a
></div
>
158 <div
class="col-sm mb-3">
159 <div
class="card text-center">
160 <div
class="card-header bg-secondary text-white">
163 <i
class="fa fa-filter fa-3x"></i
>
166 <h3 id
="num_spamfilter_entries" class="display-4"><?php
echo $stats->server_ban
->spamfilter
; ?></h3
>
170 <div
class="card-body">
175 <div
class="col"> <a
class="btn btn-primary" href
="<?php echo get_config("base_url
"); ?>spamfilter.php">View
</a
></div
>
180 <div
class="col-sm mb-3">
181 <div
class="card text-center">
182 <div
class="card-header bg-primary text-white">
185 <i
class="fa fa-door-open fa-3x"></i
>
188 <h3 id
="num_ban_exceptions" class="display-4"><?php
echo $stats->server_ban
->server_ban_exception
; ?></h3
>
193 <div
class="card-body">
196 <h6
>Server Ban Exceptions
</h6
>
198 <div
class="col"> <a
class="btn btn-primary" href
="<?php echo get_config("base_url
"); ?>server-bans/ban-exceptions.php">View
</a
></div
>
204 if ($stats->server
->ulined
) {
206 $tooltip = "Users / Servers";
211 <div
class="col-sm mb-3">
212 <div
class="card text-center">
213 <div
class="card-header <?php echo $bg; ?> text-white">
216 <i
class="fa fa-database fa-3x"> </i
>
219 <span data
-toggle
="tooltip" title
="<?php echo $tooltip; ?>" style
="border-bottom: 1px dotted #000000">
220 <h3 id
="stats_uline_total" class="display-4"><?php
echo $stats->user
->ulined
; ?>/<?php
echo $stats->server
->ulined
; ?></h3
>
224 <div
class="card-body">
227 <h6
>Services Online
</h6
>
229 <div
class="col"> <a
class="btn btn-primary" href
="<?php echo get_config("base_url
")."users
/?servicesonly
"; ?>">View
</a
></div
>
240 function updateStats(e
)
244 data
= JSON
.parse(e
.data
);
248 document
.getElementById("stats_user_total").innerHTML
= data
.user
.total
;
249 document
.getElementById("stats_channel_total").innerHTML
= data
.channel
.total
;
250 document
.getElementById("stats_oper_total").innerHTML
= data
.user
.oper
;
251 document
.getElementById("stats_server_total").innerHTML
= data
.server
.total
;
252 document
.getElementById("num_server_bans").innerHTML
= data
.server_ban
.server_ban
;
253 document
.getElementById("num_spamfilter_entries").innerHTML
= data
.server_ban
.spamfilter
;
254 document
.getElementById("num_ban_exceptions").innerHTML
= data
.server_ban
.server_ban_exception
;
255 document
.getElementById("stats_uline_total").innerHTML
= data
.user
.ulined +
"/" + data
.server
.ulined
;
259 if (!!window
.EventSource
) {
260 var source
= new EventSource('api/overview.php');
261 source
.addEventListener('message', updateStats
, false);
265 //setInterval(updateStats, 1000); // Update stats every second
266 // ^ commented out but may want to restart initStats() when connection is lost.
269 window
.addEventListener('resize', function() {
270 var containers
= document
.querySelectorAll('.card-container');
271 var width
= window
.innerWidth
;
274 containers
.forEach((container
) => {
275 container
.removeAttribute('style');
280 containers
.forEach((container
) => {
281 container
.style
.marginLeft
= "40px";
282 container
.style
.marginTop
= "30px";
289 <div
class="container card-container card-container" style
="margin-left:40px;margin-top:10px">
292 <div
class="col-sm-3">
293 <div
class="card text-center">
294 <div
class="card-header bg-success text-white">
297 <i
class="fa fa-lock-open fa-3x"></i
>
300 <h3
class="display-4"><?php
echo $num_of_panel_admins; ?></h3
>
304 <div
class="card-body">
307 <h6
>Panel Accounts
</h6
>
309 <div
class="col"> <a
class="btn btn-primary" href
="<?php echo get_config("base_url
"); ?>settings">View
</a
></div
>
318 Hook
::run(HOOKTYPE_OVERVIEW_CARD
, $stats);
320 require_once "footer.php";