]> jfr.im git - irc/unrealircd/unrealircd-webpanel.git/blob - index.php
Merge branch 'main' of https://github.com/unrealircd/unrealircd-webpanel
[irc/unrealircd/unrealircd-webpanel.git] / index.php
1 <?php
2 require_once "common.php";
3 require_once "header.php";
4
5 $stats = $rpc->query("stats.get", []);
6 ?>
7
8 <h2>Network Overview</h2>
9
10 <?php
11 $array_of_stats = (array)$stats;
12
13 /* What if someone wants to add their own stats... */
14 Hook::run(HOOKTYPE_PRE_OVERVIEW_CARD, $array_of_stats);
15
16 /* This makes sure that a plugin which called the parameter
17 * by reference can add/update the stats for display here.
18 */
19 $stats = (object) $array_of_stats;
20
21 $userlist = [];
22 Hook::run(HOOKTYPE_GET_USER_LIST, $userlist);
23 $num_of_panel_admins = count($userlist);
24
25 ?>
26 <div class="container">
27
28 <div class="row mt-3">
29 <div class="col-sm mb-3">
30 <div class="card text-center">
31 <div class="card-header bg-success text-white">
32 <div class="row">
33 <div class="col">
34 <i class="fa fa-users fa-3x"></i><span class="position-absolute badge rounded-pill badge-warning">
35 <?php echo "Record: ".$stats->user->record; ?>
36 </span>
37 </div>
38 <div class="col">
39 <h3 class="display-4"><?php echo $stats->user->total; ?></h3>
40 </div>
41 </div>
42 </div>
43 <div class="card-body">
44 <div class="row">
45 <div class="col">
46 <h6>Users Online</h6>
47 </div>
48 <div class="col"> <a class="btn btn-primary" href="<?php echo BASE_URL; ?>users">View</a></div>
49 </div>
50 </div>
51 </div>
52
53
54 </div>
55 <div class="col-sm mb-3">
56 <div class="card text-center">
57 <div class="card-header bg-primary text-white">
58 <div class="row">
59 <div class="col">
60 <i class="fa fa-hashtag fa-3x"></i>
61 </div>
62 <div class="col">
63 <h3 class="display-4"><?php echo $stats->channel->total; ?></h3>
64 </div>
65 </div>
66 </div>
67 <div class="card-body">
68 <div class="row">
69 <div class="col">
70 <h6>Channels</h6>
71 </div>
72 <div class="col"><a class="btn btn-primary" href="<?php echo BASE_URL; ?>channels">View</a></div>
73 </div>
74 </div>
75 </div>
76 </div>
77 <div class="col-sm mb-3">
78 <div class="card text-center">
79 <div class="card-header bg-warning">
80 <div class="row">
81 <div class="col">
82 <i class="fa fa-shield-halved fa-3x"></i>
83 </div>
84 <div class="col">
85 <h3 class="display-4"><?php echo $stats->user->oper; ?></h3>
86 </div>
87 </div>
88 </div>
89 <div class="card-body">
90 <div class="row">
91 <div class="col">
92 <h6>Opers</h6>
93 </div>
94 <div class="col"><a class="btn btn-primary" href="<?php echo BASE_URL."users/?operonly"; ?>">View</a></div>
95 </div>
96 </div>
97 </div>
98 </div>
99
100 <div class="col-sm mb-3">
101 <div class="card text-center">
102 <div class="card-header bg-secondary text-white">
103 <div class="row">
104 <div class="col">
105 <i class="fa fa-network-wired fa-3x"></i>
106 </div>
107 <div class="col">
108 <h3 class="display-4"><?php echo $stats->server->total; ?></h3>
109 </div>
110 </div>
111 </div>
112 <div class="card-body">
113 <div class="row">
114 <div class="col">
115 <h6>Servers</h6>
116 </div>
117 <div class="col"> <a class="btn btn-primary" href="<?php echo BASE_URL; ?>servers">View</a></div>
118 </div>
119 </div>
120 </div>
121 </div>
122 </div>
123 </div>
124 <div class="container mt-3">
125
126 <div class="row">
127 <div class="col-sm mb-3">
128 <div class="card text-center">
129 <div class="card-header bg-danger text-white">
130 <div class="row">
131 <div class="col">
132 <i class="fa fa-ban fa-3x"></i>
133 </div>
134 <div class="col">
135 <h3 class="display-4"><?php echo $stats->server_ban->server_ban; ?></h3>
136 </div>
137 </div>
138 </div>
139 <div class="card-body">
140 <div class="row">
141 <div class="col">
142 <h6>Server Bans</h6>
143 </div>
144 <div class="col"> <a class="btn btn-primary" href="<?php echo BASE_URL; ?>server-bans">View</a></div>
145 </div>
146 </div>
147 </div>
148 </div>
149 <div class="col-sm mb-3">
150 <div class="card text-center">
151 <div class="card-header bg-secondary text-white">
152 <div class="row">
153 <div class="col">
154 <i class="fa fa-filter fa-3x"></i>
155 </div>
156 <div class="col">
157 <h3 class="display-4"><?php echo $stats->server_ban->spamfilter; ?></h3>
158 </div>
159 </div>
160 </div>
161 <div class="card-body">
162 <div class="row">
163 <div class="col">
164 <h6>Spamfilter</h6>
165 </div>
166 <div class="col"> <a class="btn btn-primary" href="<?php echo BASE_URL; ?>spamfilter.php">View</a></div>
167 </div>
168 </div>
169 </div>
170 </div>
171 <div class="col-sm mb-3">
172 <div class="card text-center">
173 <div class="card-header bg-primary text-white">
174 <div class="row">
175 <div class="col">
176 <i class="fa fa-door-open fa-3x"></i>
177 </div>
178 <div class="col">
179 <h3 class="display-4"><?php echo $stats->server_ban->server_ban_exception; ?></h3>
180 </div>
181 </div>
182 </div>
183
184 <div class="card-body">
185 <div class="row">
186 <div class="col">
187 <h6>Server Ban Exceptions</h6>
188 </div>
189 <div class="col"> <a class="btn btn-primary" href="<?php echo BASE_URL; ?>server-bans/ban-exceptions.php">View</a></div>
190 </div>
191 </div>
192 </div>
193 </div>
194 <?php
195 if ($stats->server->ulined) {
196 $bg = "bg-success";
197
198 /* honestly can't think of a case where there would actually be only one uline... but... well here we are, worrying over the small stuff =] */
199 $user_noun = ($stats->user->ulined == 1) ? "user" : "users"; // use "users" even if 0, sounds better.
200 $is_are = ($stats->user->ulined == 1) ? "is" : "are";
201 $server_noun = ($stats->server->ulined == 1) ? "server" : "servers";
202 $tooltip = "There $is_are " . $stats->user->ulined . " U-Lined $user_noun over " . $stats->server->ulined . " U-Lined $server_noun";
203 }
204 else
205 $bg = "bg-warning";
206 ?>
207 <div class="col-sm mb-3">
208 <div class="card text-center">
209 <div class="card-header <?php echo $bg; ?> text-white">
210 <div class="row">
211 <div class="col">
212 <i class="fa fa-database fa-3x"> </i>
213 </div>
214 <div class="col">
215 <span data-toggle="tooltip" title="<?php echo $tooltip; ?>" style="border-bottom: 1px dotted #000000"><h3 class="display-4"><?php echo $stats->user->ulined; ?>/<?php echo $stats->server->ulined; ?></h3>
216 </div>
217 </div>
218 </div>
219 <div class="card-body">
220 <div class="row">
221 <div class="col">
222 <h6>Services Online</h6>
223 </div>
224 <div class="col"> <a class="btn btn-primary" href="<?php echo BASE_URL."users/?servicesonly"; ?>">View</a></div>
225 </div>
226 </div>
227
228 </div>
229 </div>
230 </div>
231 </div>
232 <div class="container mt-3">
233
234 <div class="row">
235 <div class="col-sm-3">
236 <div class="card text-center">
237 <div class="card-header bg-success text-white">
238 <div class="row">
239 <div class="col">
240 <i class="fa fa-lock-open fa-3x"></i>
241 </div>
242 <div class="col">
243 <h3 class="display-4"><?php echo $num_of_panel_admins; ?></h3>
244 </div>
245 </div>
246 </div>
247 <div class="card-body">
248 <div class="row">
249 <div class="col">
250 <h6>Panel Users</h6>
251 </div>
252 <div class="col"> <a class="btn btn-primary" href="<?php echo BASE_URL; ?>settings">View</a></div>
253 </div>
254 </div>
255 </div>
256 </div>
257 </div>
258 </div>
259 <?php
260
261 Hook::run(HOOKTYPE_OVERVIEW_CARD, $stats);
262
263 require_once "footer.php";