]>
jfr.im git - irc/unrealircd/unrealircd-webpanel.git/blob - api/search.php
3 require_once('common_api.php');
8 if (!$_GET || !isset($_GET['search']))
9 die_json(["error" => "No search query"]);
10 $search_term = $_GET['search'];
11 $users = $rpc->user()->getAll();
12 $chans = $rpc->channel()->getAll(2);
13 $logs = $rpc->log()->getAll();
14 $servers = $rpc->server()->getAll();
15 $server_bans = $rpc->serverban()->getAll();
16 $excepts = $rpc->serverbanexception()->getAll();
17 $spamfilter = $rpc->spamfilter()->getAll();
18 $name_bans = $rpc->nameban()->getAll();
24 "channel_invites" => [],
25 "channel_excepts" => [],
33 function strcasestr($haystack, $needle) : bool
35 if (strstr(strtolower($haystack), strtolower($needle)))
39 foreach ($users as $u)
41 if (strcasestr($u->name
,$search_term))
47 $search_results['users'][] = $o;
49 if (strcasestr($u->details
,$search_term))
53 $o->data
= $u->details
;
54 $o->label
= "userhost";
55 $search_results['users'][] = $o;
57 if (strcasestr($u->user
->realname
,$search_term))
61 $o->data
= $u->user
->realname
;
63 $search_results['users'][] = $o;
65 if (strcasestr($u->user
->account
,$search_term))
70 $o->label
= "account";
71 $search_results['users'][] = $o;
74 foreach ($chans as $c)
76 if (strcasestr($c->name
,$search_term))
78 $c->label
= "channel name";
79 $search_results['channels'][] = $c;
81 if (isset($c->topic
) && strcasestr($c->topic
,$search_term))
83 $c->label
= "channel topic";
84 $search_results['channels'][] = $c;
88 foreach ($c->bans
as $i)
90 if (!strcasestr($i->name
, $search_term))
94 $new->name
= $c->name
;
95 $new->topic
= $i->name
;
96 $new->label
= "ban (+b)";
97 $search_results['channels'][] = $new;
98 error_log("$new->label for $i->name");
101 if (isset($c->ban_exemptions
))
103 foreach ($c->ban_exemptions
as $i)
105 if (!strcasestr($i->name
, $search_term))
109 $new->name
= $c->name
;
110 $new->topic
= $i->name
;
111 $new->label
= "exempt (+e)";
112 $search_results['channels'][] = $new;
113 error_log("$new->label for $i->name");
116 if (isset($c->invite_exceptions
))
118 foreach ($c->invite_exceptions
as $i)
120 if (!strcasestr($i->name
, $search_term))
124 $new->name
= $c->name
;
125 $new->topic
= $i->name
;
126 $new->label
= "invite (+I)";
127 $search_results['channels'][] = $new;
131 foreach ($logs as $l)
132 if (strcasestr($l->msg
,$search_term))
133 $search_results['logs'][] = $l;
135 foreach ($servers as $s)
136 if (strcasestr($s->name
, $search_term))
137 $search_results['servers'][] = $s;
139 foreach ($server_bans as $ban)
142 if (strstr($ban->type
,$search_term) || strstr($ban->type_string
,$search_term))
145 $o->label
= $ban->type_string
;
146 $o->name
= $ban->name
;
147 $o->data
= $ban->reason
;
148 $search_results['server_bans'][] = $o;
150 elseif (strstr($ban->name
,$search_term))
153 $o->label
= $ban->type_string
;
154 $o->name
= "<code>$ban->name</code>";
155 $o->data
= $ban->reason
;
156 $search_results['server_bans'][] = $o;
159 elseif (strcasestr($ban->reason
,$search_term))
162 $o->label
= $ban->type_string
." reason";
163 $o->name
= "<code>$ban->name</code>";
164 $o->data
= $ban->reason
;
165 $search_results['server_bans'][] = $o;
169 foreach ($excepts as $ban)
171 if (strstr($ban->type
,$search_term) || strstr($ban->type_string
,$search_term))
174 $o->label
= $ban->type_string
;
175 $o->name
= $ban->name
;
176 $o->data
= $ban->reason
;
177 $search_results['excepts'][] = $o;
179 elseif (strstr($ban->name
,$search_term))
182 $o->label
= $ban->type_string
;
183 $o->name
= "<code>$ban->name</code>";
184 $o->data
= $ban->reason
;
185 $search_results['excepts'][] = $o;
187 elseif (strcasestr($ban->reason
,$search_term))
190 $o->label
= $ban->type_string
." reason";
191 $o->name
= $ban->name
;
192 $o->data
= $ban->reason
;
193 $search_results['excepts'][] = $o;
198 foreach ($name_bans as $ban)
200 if (strstr($ban->type
,$search_term) || strstr($ban->type_string
,$search_term))
203 $o->label
= $ban->type_string
;
204 $o->name
= $ban->name
;
205 $o->data
= $ban->reason
;
206 $search_results['name_bans'][] = $o;
208 elseif (strstr($ban->name
,$search_term))
211 $o->label
= $ban->type_string
;
212 $o->name
= "<code>$ban->name</code>";
213 $o->data
= $ban->reason
;
214 $search_results['name_bans'][] = $o;
216 elseif (strcasestr($ban->reason
,$search_term))
219 $o->label
= $ban->type_string
." reason";
220 $o->name
= $ban->name
;
221 $o->data
= $ban->reason
;
222 $search_results['name_bans'][] = $o;
226 foreach ($spamfilter as $ban)
228 if (strstr($ban->type
,$search_term) || strstr($ban->type_string
,$search_term))
231 $o->label
= $ban->type_string
;
232 $o->name
= $ban->name
;
233 $o->data
= $ban->reason
;
234 $search_results['spamfilter'][] = $o;
236 elseif (strstr($ban->name
,$search_term))
239 $o->label
= $ban->type_string
;
240 $o->name
= "<code>$ban->name</code>";
241 $o->data
= $ban->reason
;
242 $search_results['spamfilter'][] = $o;
244 elseif (strcasestr($ban->reason
,$search_term))
247 $o->label
= $ban->type_string
." reason";
248 $o->name
= $ban->name
;
249 $o->data
= $ban->reason
;
250 $search_results['spamfilter'][] = $o;
256 echo json_encode($search_results);