]>
jfr.im git - irc/unrealircd/unrealircd-webpanel.git/blob - api/search.php
3 require_once('common_api.php');
8 if (!$_GET || !isset($_GET['search']))
10 echo json_encode(["error" => "No search query"]);
13 $search_term = $_GET['search'];
14 $users = $rpc->user()->getAll();
15 $chans = $rpc->channel()->getAll(2);
16 $logs = $rpc->log()->getAll();
17 $servers = $rpc->server()->getAll();
18 $server_bans = $rpc->serverban()->getAll();
19 $excepts = $rpc->serverbanexception()->getAll();
20 $spamfilter = $rpc->spamfilter()->getAll();
21 $name_bans = $rpc->nameban()->getAll();
27 "channel_invites" => [],
28 "channel_excepts" => [],
36 function strcasestr($haystack, $needle) : bool
38 if (strstr(strtolower($haystack), strtolower($needle)))
42 foreach ($users as $u)
44 if (strcasestr($u->name
,$search_term))
50 $search_results['users'][] = $o;
52 if (strcasestr($u->details
,$search_term))
56 $o->data
= $u->details
;
57 $o->label
= "userhost";
58 $search_results['users'][] = $o;
60 if (strcasestr($u->user
->realname
,$search_term))
64 $o->data
= $u->user
->realname
;
66 $search_results['users'][] = $o;
68 if (@strcasestr($u->user
->account
,$search_term))
73 $o->label
= "account";
74 $search_results['users'][] = $o;
78 error_log("It's set");
79 if (@strcasestr($u->geoip
->asn
,$search_term))
85 $search_results['users'][] = $o;
87 if (@strcasestr($u->geoip
->asname
,$search_term))
92 $o->label
= "ASN Name";
93 $search_results['users'][] = $o;
95 if (@strcasestr($u->geoip
->country_code
,$search_term))
100 $o->label
= "Country Code";
101 $search_results['users'][] = $o;
105 error_log(json_encode($u));
108 foreach ($chans as $c)
110 if (strcasestr($c->name
,$search_term))
112 $c->label
= "channel name";
113 $search_results['channels'][] = $c;
115 if (isset($c->topic
) && strcasestr($c->topic
,$search_term))
117 $c->label
= "channel topic";
118 $search_results['channels'][] = $c;
122 foreach ($c->bans
as $i)
124 if (!strcasestr($i->name
, $search_term))
128 $new->name
= $c->name
;
129 $new->topic
= $i->name
;
130 $new->label
= "ban (+b)";
131 $search_results['channels'][] = $new;
132 error_log("$new->label for $i->name");
135 if (isset($c->ban_exemptions
))
137 foreach ($c->ban_exemptions
as $i)
139 if (!strcasestr($i->name
, $search_term))
143 $new->name
= $c->name
;
144 $new->topic
= $i->name
;
145 $new->label
= "exempt (+e)";
146 $search_results['channels'][] = $new;
147 error_log("$new->label for $i->name");
150 if (isset($c->invite_exceptions
))
152 foreach ($c->invite_exceptions
as $i)
154 if (!strcasestr($i->name
, $search_term))
158 $new->name
= $c->name
;
159 $new->topic
= $i->name
;
160 $new->label
= "invite (+I)";
161 $search_results['channels'][] = $new;
165 foreach ($logs as $l)
166 if (strcasestr($l->msg
,$search_term))
167 $search_results['logs'][] = $l;
169 foreach ($servers as $s)
170 if (strcasestr($s->name
, $search_term))
171 $search_results['servers'][] = $s;
173 foreach ($server_bans as $ban)
176 if (strstr($ban->type
,$search_term) || strstr($ban->type_string
,$search_term))
179 $o->label
= $ban->type_string
;
180 $o->name
= $ban->name
;
181 $o->data
= $ban->reason
;
182 $search_results['server_bans'][] = $o;
184 elseif (strstr($ban->name
,$search_term))
187 $o->label
= $ban->type_string
;
188 $o->name
= "<code>$ban->name</code>";
189 $o->data
= $ban->reason
;
190 $search_results['server_bans'][] = $o;
193 elseif (strcasestr($ban->reason
,$search_term))
196 $o->label
= $ban->type_string
." reason";
197 $o->name
= "<code>$ban->name</code>";
198 $o->data
= $ban->reason
;
199 $search_results['server_bans'][] = $o;
203 foreach ($excepts as $ban)
205 if (strstr($ban->type
,$search_term) || strstr($ban->type_string
,$search_term))
208 $o->label
= $ban->type_string
;
209 $o->name
= $ban->name
;
210 $o->data
= $ban->reason
;
211 $search_results['excepts'][] = $o;
213 elseif (strstr($ban->name
,$search_term))
216 $o->label
= $ban->type_string
;
217 $o->name
= "<code>$ban->name</code>";
218 $o->data
= $ban->reason
;
219 $search_results['excepts'][] = $o;
221 elseif (strcasestr($ban->reason
,$search_term))
224 $o->label
= $ban->type_string
." reason";
225 $o->name
= $ban->name
;
226 $o->data
= $ban->reason
;
227 $search_results['excepts'][] = $o;
232 foreach ($name_bans as $ban)
234 if (strstr($ban->type
,$search_term) || strstr($ban->type_string
,$search_term))
237 $o->label
= $ban->type_string
;
238 $o->name
= $ban->name
;
239 $o->data
= $ban->reason
;
240 $search_results['name_bans'][] = $o;
242 elseif (strstr($ban->name
,$search_term))
245 $o->label
= $ban->type_string
;
246 $o->name
= "<code>$ban->name</code>";
247 $o->data
= $ban->reason
;
248 $search_results['name_bans'][] = $o;
250 elseif (strcasestr($ban->reason
,$search_term))
253 $o->label
= $ban->type_string
." reason";
254 $o->name
= $ban->name
;
255 $o->data
= $ban->reason
;
256 $search_results['name_bans'][] = $o;
260 foreach ($spamfilter as $ban)
262 if (strstr($ban->type
,$search_term) || strstr($ban->type_string
,$search_term))
265 $o->label
= $ban->type_string
;
266 $o->name
= $ban->name
;
267 $o->data
= $ban->reason
;
268 $search_results['spamfilter'][] = $o;
270 elseif (strstr($ban->name
,$search_term))
273 $o->label
= $ban->type_string
;
274 $o->name
= "<code>$ban->name</code>";
275 $o->data
= $ban->reason
;
276 $search_results['spamfilter'][] = $o;
278 elseif (strcasestr($ban->reason
,$search_term))
281 $o->label
= $ban->type_string
." reason";
282 $o->name
= $ban->name
;
283 $o->data
= $ban->reason
;
284 $search_results['spamfilter'][] = $o;
290 echo json_encode($search_results);