]> jfr.im git - irc/unrealircd/unrealircd-webpanel.git/blob - index.php
Convert the stats calls from raw to $rpc->stats()->get();
[irc/unrealircd/unrealircd-webpanel.git] / index.php
1 <?php
2 require_once "common.php";
3 require_once "connection.php";
4 require_once "header.php";
5
6 $stats = $rpc->stats()->get();
7 ?>
8
9 <h2>Network Overview</h2>
10
11 <?php
12 $array_of_stats = (array)$stats;
13
14 /* What if someone wants to add their own stats... */
15 Hook::run(HOOKTYPE_PRE_OVERVIEW_CARD, $array_of_stats);
16
17 /* This makes sure that a plugin which called the parameter
18 * by reference can add/update the stats for display here.
19 */
20 $stats = (object) $array_of_stats;
21
22 $userlist = [];
23 Hook::run(HOOKTYPE_GET_USER_LIST, $userlist);
24 $num_of_panel_admins = count($userlist);
25
26 ?>
27 <div class="container">
28
29 <div class="row mt-3">
30 <div class="col-sm mb-3">
31 <div class="card text-center">
32 <div class="card-header bg-success text-white">
33 <div class="row">
34 <div class="col">
35 <i class="fa fa-users fa-3x"></i><span class="position-absolute badge rounded-pill badge-warning">
36 <?php echo "Record: ".$stats->user->record; ?>
37 </span>
38 </div>
39 <div class="col">
40 <h3 id="stats_user_total" class="display-4"><?php echo $stats->user->total; ?></h3>
41 </div>
42 </div>
43 </div>
44 <div class="card-body">
45 <div class="row">
46 <div class="col">
47 <h6>Users Online</h6>
48 </div>
49 <div class="col"> <a class="btn btn-primary" href="<?php echo get_config("base_url"); ?>users">View</a></div>
50 </div>
51 </div>
52 </div>
53
54
55 </div>
56 <div class="col-sm mb-3">
57 <div class="card text-center">
58 <div class="card-header bg-primary text-white">
59 <div class="row">
60 <div class="col">
61 <i class="fa fa-hashtag fa-3x"></i>
62 </div>
63 <div class="col">
64 <h3 id="stats_channel_total" class="display-4"><?php echo $stats->channel->total; ?></h3>
65 </div>
66 </div>
67 </div>
68 <div class="card-body">
69 <div class="row">
70 <div class="col">
71 <h6>Channels</h6>
72 </div>
73 <div class="col"><a class="btn btn-primary" href="<?php echo get_config("base_url"); ?>channels">View</a></div>
74 </div>
75 </div>
76 </div>
77 </div>
78 <div class="col-sm mb-3">
79 <div class="card text-center">
80 <div class="card-header bg-warning">
81 <div class="row">
82 <div class="col">
83 <i class="fa fa-shield-halved fa-3x"></i>
84 </div>
85 <div class="col">
86 <h3 id="stats_oper_total" class="display-4"><?php echo $stats->user->oper; ?></h3>
87 </div>
88 </div>
89 </div>
90 <div class="card-body">
91 <div class="row">
92 <div class="col">
93 <h6>Opers</h6>
94 </div>
95 <div class="col"><a class="btn btn-primary" href="<?php echo get_config("base_url")."users/?operonly"; ?>">View</a></div>
96 </div>
97 </div>
98 </div>
99 </div>
100
101 <div class="col-sm mb-3">
102 <div class="card text-center">
103 <div class="card-header bg-secondary text-white">
104 <div class="row">
105 <div class="col">
106 <i class="fa fa-network-wired fa-3x"></i>
107 </div>
108 <div class="col">
109 <h3 id="stats_server_total" class="display-4"><?php echo $stats->server->total; ?></h3>
110 </div>
111 </div>
112 </div>
113 <div class="card-body">
114 <div class="row">
115 <div class="col">
116 <h6>Servers</h6>
117 </div>
118 <div class="col"> <a class="btn btn-primary" href="<?php echo get_config("base_url"); ?>servers">View</a></div>
119 </div>
120 </div>
121 </div>
122 </div>
123 </div>
124 </div>
125 <div class="container mt-3">
126
127 <div class="row">
128 <div class="col-sm mb-3">
129 <div class="card text-center">
130 <div class="card-header bg-danger text-white">
131 <div class="row">
132 <div class="col">
133 <i class="fa fa-ban fa-3x"></i>
134 </div>
135 <div class="col">
136 <h3 id="num_server_bans" class="display-4"><?php echo $stats->server_ban->server_ban; ?></h3>
137 </div>
138 </div>
139 </div>
140 <div class="card-body">
141 <div class="row">
142 <div class="col">
143 <h6>Server Bans</h6>
144 </div>
145 <div class="col"> <a class="btn btn-primary" href="<?php echo get_config("base_url"); ?>server-bans">View</a></div>
146 </div>
147 </div>
148 </div>
149 </div>
150 <div class="col-sm mb-3">
151 <div class="card text-center">
152 <div class="card-header bg-secondary text-white">
153 <div class="row">
154 <div class="col">
155 <i class="fa fa-filter fa-3x"></i>
156 </div>
157 <div class="col">
158 <h3 id="num_spamfilter_entries" class="display-4"><?php echo $stats->server_ban->spamfilter; ?></h3>
159 </div>
160 </div>
161 </div>
162 <div class="card-body">
163 <div class="row">
164 <div class="col">
165 <h6>Spamfilter</h6>
166 </div>
167 <div class="col"> <a class="btn btn-primary" href="<?php echo get_config("base_url"); ?>spamfilter.php">View</a></div>
168 </div>
169 </div>
170 </div>
171 </div>
172 <div class="col-sm mb-3">
173 <div class="card text-center">
174 <div class="card-header bg-primary text-white">
175 <div class="row">
176 <div class="col">
177 <i class="fa fa-door-open fa-3x"></i>
178 </div>
179 <div class="col">
180 <h3 id="num_ban_exceptions" class="display-4"><?php echo $stats->server_ban->server_ban_exception; ?></h3>
181 </div>
182 </div>
183 </div>
184
185 <div class="card-body">
186 <div class="row">
187 <div class="col">
188 <h6>Server Ban Exceptions</h6>
189 </div>
190 <div class="col"> <a class="btn btn-primary" href="<?php echo get_config("base_url"); ?>server-bans/ban-exceptions.php">View</a></div>
191 </div>
192 </div>
193 </div>
194 </div>
195 <?php
196 if ($stats->server->ulined) {
197 $bg = "bg-success";
198 $tooltip = "Users / Servers";
199 }
200 else
201 $bg = "bg-warning";
202 ?>
203 <div class="col-sm mb-3">
204 <div class="card text-center">
205 <div class="card-header <?php echo $bg; ?> text-white">
206 <div class="row">
207 <div class="col">
208 <i class="fa fa-database fa-3x"> </i>
209 </div>
210 <div class="col">
211 <span data-toggle="tooltip" title="<?php echo $tooltip; ?>" style="border-bottom: 1px dotted #000000">
212 <h3 id="stats_uline_total" class="display-4"><?php echo $stats->user->ulined; ?>/<?php echo $stats->server->ulined; ?></h3>
213 </div>
214 </div>
215 </div>
216 <div class="card-body">
217 <div class="row">
218 <div class="col">
219 <h6>Services Online</h6>
220 </div>
221 <div class="col"> <a class="btn btn-primary" href="<?php echo get_config("base_url")."users/?servicesonly"; ?>">View</a></div>
222 </div>
223 </div>
224
225 </div>
226 </div>
227 </div>
228 </div>
229
230
231 <script>
232 function updateStats() {
233 var xhttp = new XMLHttpRequest();
234 xhttp.onreadystatechange = function() {
235 if (this.readyState == 4 && this.status == 200) {
236 var data = JSON.parse(this.responseText);
237 document.getElementById("stats_user_total").innerHTML = data.user.total;
238 document.getElementById("stats_channel_total").innerHTML = data.channel.total;
239 document.getElementById("stats_oper_total").innerHTML = data.user.oper;
240 document.getElementById("stats_server_total").innerHTML = data.server.total;
241 document.getElementById("num_server_bans").innerHTML = data.server_ban.server_ban;
242 document.getElementById("num_spamfilter_entries").innerHTML = data.server_ban.spamfilter;
243 document.getElementById("num_ban_exceptions").innerHTML = data.server_ban.server_ban_exception;
244 document.getElementById("stats_uline_total").innerHTML = data.user.ulined + "/" + data.server.ulined;
245 }
246 };
247 xhttp.open("GET", "api/overview.php", true);
248 xhttp.send();
249 }
250 updateStats();
251 setInterval(updateStats, 1000); // Update stats every second
252 </script>
253
254 <div class="container mt-3">
255
256 <div class="row">
257 <div class="col-sm-3">
258 <div class="card text-center">
259 <div class="card-header bg-success text-white">
260 <div class="row">
261 <div class="col">
262 <i class="fa fa-lock-open fa-3x"></i>
263 </div>
264 <div class="col">
265 <h3 class="display-4"><?php echo $num_of_panel_admins; ?></h3>
266 </div>
267 </div>
268 </div>
269 <div class="card-body">
270 <div class="row">
271 <div class="col">
272 <h6>Panel Access</h6>
273 </div>
274 <div class="col"> <a class="btn btn-primary" href="<?php echo get_config("base_url"); ?>settings">View</a></div>
275 </div>
276 </div>
277 </div>
278 </div>
279 </div>
280 </div>
281 <?php
282
283 Hook::run(HOOKTYPE_OVERVIEW_CARD, $stats);
284
285 require_once "footer.php";