]> jfr.im git - irc/unrealircd/unrealircd-webpanel.git/blame - index.php
Add the beginning of user roles
[irc/unrealircd/unrealircd-webpanel.git] / index.php
CommitLineData
709b97f3 1<?php
d3697d8f 2require_once "common.php";
e77b1514 3require_once "connection.php";
d3697d8f 4require_once "header.php";
26971737 5
9ac271b0 6$stats = $rpc->stats()->get();
709b97f3 7?>
82f5bcbf 8
ce8122f0
VP
9<h2>Network Overview</h2>
10
bdf7619a
VP
11<?php
12$array_of_stats = (array)$stats;
13
14/* What if someone wants to add their own stats... */
15Hook::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
4fc503d8
VP
22$userlist = [];
23Hook::run(HOOKTYPE_GET_USER_LIST, $userlist);
24$num_of_panel_admins = count($userlist);
bdf7619a
VP
25
26?>
e76c47e1
VP
27<style>
28 .card {
29 min-height: 100%;
30 }
31 </style>
711c63bc 32<div class="container card-container" style="margin-left:40px;margin-top:30px">
440ff671 33
9e2a2ac0 34 <div class="row mt-3">
33f512fa 35 <div class="col-sm mb-3">
ce8122f0
VP
36 <div class="card text-center">
37 <div class="card-header bg-success text-white">
38 <div class="row">
39 <div class="col">
79ed2176
VP
40 <i class="fa fa-users fa-3x"></i><span class="position-absolute badge rounded-pill badge-warning">
41 <?php echo "Record: ".$stats->user->record; ?>
42 </span>
ce8122f0
VP
43 </div>
44 <div class="col">
56164221 45 <h3 id="stats_user_total" class="display-4"><?php echo $stats->user->total; ?></h3>
ce8122f0
VP
46 </div>
47 </div>
48 </div>
75c101fd
VP
49 <div class="card-body">
50 <div class="row">
51 <div class="col">
52 <h6>Users Online</h6>
53 </div>
ea90b321 54 <div class="col"> <a class="btn btn-primary" href="<?php echo get_config("base_url"); ?>users">View</a></div>
75c101fd
VP
55 </div>
56 </div>
ce8122f0 57 </div>
79ed2176
VP
58
59
ce8122f0 60 </div>
33f512fa 61 <div class="col-sm mb-3">
ce8122f0
VP
62 <div class="card text-center">
63 <div class="card-header bg-primary text-white">
64 <div class="row">
65 <div class="col">
66 <i class="fa fa-hashtag fa-3x"></i>
67 </div>
68 <div class="col">
56164221 69 <h3 id="stats_channel_total" class="display-4"><?php echo $stats->channel->total; ?></h3>
75c101fd
VP
70 </div>
71 </div>
72 </div>
73 <div class="card-body">
74 <div class="row">
75 <div class="col">
ce8122f0
VP
76 <h6>Channels</h6>
77 </div>
ea90b321 78 <div class="col"><a class="btn btn-primary" href="<?php echo get_config("base_url"); ?>channels">View</a></div>
ce8122f0
VP
79 </div>
80 </div>
81 </div>
82 </div>
33f512fa 83 <div class="col-sm mb-3">
ce8122f0
VP
84 <div class="card text-center">
85 <div class="card-header bg-warning">
86 <div class="row">
87 <div class="col">
88 <i class="fa fa-shield-halved fa-3x"></i>
89 </div>
90 <div class="col">
56164221 91 <h3 id="stats_oper_total" class="display-4"><?php echo $stats->user->oper; ?></h3>
75c101fd
VP
92 </div>
93 </div>
94 </div>
95 <div class="card-body">
96 <div class="row">
97 <div class="col">
ce8122f0
VP
98 <h6>Opers</h6>
99 </div>
ea90b321 100 <div class="col"><a class="btn btn-primary" href="<?php echo get_config("base_url")."users/?operonly"; ?>">View</a></div>
ce8122f0
VP
101 </div>
102 </div>
103 </div>
104 </div>
75c101fd 105
33f512fa 106 <div class="col-sm mb-3">
ce8122f0 107 <div class="card text-center">
28d5eb87 108 <div class="card-header bg-secondary text-white">
ce8122f0
VP
109 <div class="row">
110 <div class="col">
111 <i class="fa fa-network-wired fa-3x"></i>
112 </div>
113 <div class="col">
56164221 114 <h3 id="stats_server_total" class="display-4"><?php echo $stats->server->total; ?></h3>
75c101fd
VP
115 </div>
116 </div>
117 </div>
118 <div class="card-body">
119 <div class="row">
120 <div class="col">
ce8122f0
VP
121 <h6>Servers</h6>
122 </div>
ea90b321 123 <div class="col"> <a class="btn btn-primary" href="<?php echo get_config("base_url"); ?>servers">View</a></div>
ce8122f0
VP
124 </div>
125 </div>
126 </div>
127 </div>
128 </div>
129</div>
711c63bc 130<div class="container card-container" style="margin-left:40px;margin-top:30px">
ce8122f0
VP
131
132 <div class="row">
33f512fa 133 <div class="col-sm mb-3">
ce8122f0
VP
134 <div class="card text-center">
135 <div class="card-header bg-danger text-white">
136 <div class="row">
137 <div class="col">
138 <i class="fa fa-ban fa-3x"></i>
139 </div>
140 <div class="col">
56164221 141 <h3 id="num_server_bans" class="display-4"><?php echo $stats->server_ban->server_ban; ?></h3>
75c101fd
VP
142 </div>
143 </div>
144 </div>
145 <div class="card-body">
146 <div class="row">
147 <div class="col">
ce8122f0
VP
148 <h6>Server Bans</h6>
149 </div>
ea90b321 150 <div class="col"> <a class="btn btn-primary" href="<?php echo get_config("base_url"); ?>server-bans">View</a></div>
ce8122f0
VP
151 </div>
152 </div>
153 </div>
154 </div>
33f512fa 155 <div class="col-sm mb-3">
ce8122f0
VP
156 <div class="card text-center">
157 <div class="card-header bg-secondary text-white">
158 <div class="row">
159 <div class="col">
160 <i class="fa fa-filter fa-3x"></i>
161 </div>
162 <div class="col">
56164221 163 <h3 id="num_spamfilter_entries" class="display-4"><?php echo $stats->server_ban->spamfilter; ?></h3>
ce8122f0
VP
164 </div>
165 </div>
166 </div>
75c101fd
VP
167 <div class="card-body">
168 <div class="row">
169 <div class="col">
170 <h6>Spamfilter</h6>
171 </div>
ea90b321 172 <div class="col"> <a class="btn btn-primary" href="<?php echo get_config("base_url"); ?>spamfilter.php">View</a></div>
75c101fd
VP
173 </div>
174 </div>
ce8122f0
VP
175 </div>
176 </div>
33f512fa 177 <div class="col-sm mb-3">
ce8122f0
VP
178 <div class="card text-center">
179 <div class="card-header bg-primary text-white">
180 <div class="row">
181 <div class="col">
182 <i class="fa fa-door-open fa-3x"></i>
183 </div>
184 <div class="col">
56164221 185 <h3 id="num_ban_exceptions" class="display-4"><?php echo $stats->server_ban->server_ban_exception; ?></h3>
ce8122f0
VP
186 </div>
187 </div>
188 </div>
75c101fd
VP
189
190 <div class="card-body">
191 <div class="row">
192 <div class="col">
193 <h6>Server Ban Exceptions</h6>
194 </div>
ea90b321 195 <div class="col"> <a class="btn btn-primary" href="<?php echo get_config("base_url"); ?>server-bans/ban-exceptions.php">View</a></div>
75c101fd
VP
196 </div>
197 </div>
ce8122f0
VP
198 </div>
199 </div>
200 <?php
79ed2176 201 if ($stats->server->ulined) {
ce8122f0 202 $bg = "bg-success";
05f01f6d 203 $tooltip = "Users / Servers";
79ed2176
VP
204 }
205 else
206 $bg = "bg-warning";
207 ?>
33f512fa 208 <div class="col-sm mb-3">
ce8122f0
VP
209 <div class="card text-center">
210 <div class="card-header <?php echo $bg; ?> text-white">
211 <div class="row">
212 <div class="col">
213 <i class="fa fa-database fa-3x"> </i>
214 </div>
215 <div class="col">
56164221
VP
216 <span data-toggle="tooltip" title="<?php echo $tooltip; ?>" style="border-bottom: 1px dotted #000000">
217 <h3 id="stats_uline_total" class="display-4"><?php echo $stats->user->ulined; ?>/<?php echo $stats->server->ulined; ?></h3>
75c101fd
VP
218 </div>
219 </div>
220 </div>
221 <div class="card-body">
222 <div class="row">
223 <div class="col">
ce8122f0
VP
224 <h6>Services Online</h6>
225 </div>
ea90b321 226 <div class="col"> <a class="btn btn-primary" href="<?php echo get_config("base_url")."users/?servicesonly"; ?>">View</a></div>
ce8122f0
VP
227 </div>
228 </div>
229
230 </div>
231 </div>
232 </div>
809f7483 233</div>
56164221
VP
234
235
236<script>
fd4848e4
BM
237 function updateStats(e)
238 {
239 var data;
240 try {
241 data = JSON.parse(e.data);
242 } catch(e) {
243 return;
244 }
245 document.getElementById("stats_user_total").innerHTML = data.user.total;
246 document.getElementById("stats_channel_total").innerHTML = data.channel.total;
247 document.getElementById("stats_oper_total").innerHTML = data.user.oper;
248 document.getElementById("stats_server_total").innerHTML = data.server.total;
249 document.getElementById("num_server_bans").innerHTML = data.server_ban.server_ban;
250 document.getElementById("num_spamfilter_entries").innerHTML = data.server_ban.spamfilter;
251 document.getElementById("num_ban_exceptions").innerHTML = data.server_ban.server_ban_exception;
252 document.getElementById("stats_uline_total").innerHTML = data.user.ulined + "/" + data.server.ulined;
253 }
254 function initStats()
255 {
256 if (!!window.EventSource) {
257 var source = new EventSource('api/overview.php');
258 source.addEventListener('message', updateStats, false);
259 }
260 }
261 initStats();
262 //setInterval(updateStats, 1000); // Update stats every second
263 // ^ commented out but may want to restart initStats() when connection is lost.
711c63bc
VP
264
265
266 window.addEventListener('resize', function() {
267 var containers = document.querySelectorAll('.card-container');
268 var width = window.innerWidth;
269 if (width < 768)
270 {
271 containers.forEach((container) => {
272 container.removeAttribute('style');
273
274 });
275 } else
276 {
277 containers.forEach((container) => {
278 container.style.marginLeft = "40px";
279 container.style.marginTop = "30px";
280
281 });
282 }
283 });
56164221
VP
284</script>
285
711c63bc 286<div class="container card-container card-container" style="margin-left:40px;margin-top:10px">
fdc0088f
VP
287
288 <div class="row">
289 <div class="col-sm-3">
290 <div class="card text-center">
291 <div class="card-header bg-success text-white">
292 <div class="row">
293 <div class="col">
294 <i class="fa fa-lock-open fa-3x"></i>
295 </div>
296 <div class="col">
297 <h3 class="display-4"><?php echo $num_of_panel_admins; ?></h3>
298 </div>
299 </div>
300 </div>
301 <div class="card-body">
302 <div class="row">
303 <div class="col">
6210ec48 304 <h6>Panel Accounts</h6>
fdc0088f 305 </div>
ea90b321 306 <div class="col"> <a class="btn btn-primary" href="<?php echo get_config("base_url"); ?>settings">View</a></div>
fdc0088f
VP
307 </div>
308 </div>
309 </div>
310 </div>
311 </div>
312 </div>
809f7483
VP
313<?php
314
440ff671
VP
315Hook::run(HOOKTYPE_OVERVIEW_CARD, $stats);
316
809f7483 317require_once "footer.php";