]> jfr.im git - irc/unrealircd/unrealircd-webpanel.git/blob - api/search.php
Move plugins.php class file to Class/class-plugins.php
[irc/unrealircd/unrealircd-webpanel.git] / api / search.php
1 <?php
2
3 require_once('common_api.php');
4
5 if (!$rpc)
6 die();
7
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();
19
20 $search_results = [
21 "users" => [],
22 "channels" => [],
23 "channel_bans" => [],
24 "channel_invites" => [],
25 "channel_excepts" => [],
26 "logs" => [],
27 "server_bans" => [],
28 "excepts" => [],
29 "spamfilter" => [],
30 "name_bans" => []
31 ];
32
33 function strcasestr($haystack, $needle) : bool
34 {
35 if (strstr(strtolower($haystack), strtolower($needle)))
36 return true;
37 return false;
38 }
39 foreach ($users as $u)
40 {
41 if (strcasestr($u->name,$search_term))
42 {
43 $o = (object)[];
44 $o->name = $u->name;
45 $o->data = $u->name;
46 $o->label = "nick";
47 $search_results['users'][] = $o;
48 }
49 if (strcasestr($u->details,$search_term))
50 {
51 $o = (object)[];
52 $o->name = $u->name;
53 $o->data = $u->details;
54 $o->label = "userhost";
55 $search_results['users'][] = $o;
56 }
57 if (strcasestr($u->user->realname,$search_term))
58 {
59 $o = (object)[];
60 $o->name = $u->name;
61 $o->data = $u->user->realname;
62 $o->label = "GECOS";
63 $search_results['users'][] = $o;
64 }
65 if (strcasestr($u->user->account,$search_term))
66 {
67 $o = (object)[];
68 $o->name = $u->name;
69 $o->data = $u->name;
70 $o->label = "account";
71 $search_results['users'][] = $o;
72 }
73 }
74 foreach ($chans as $c)
75 {
76 if (strcasestr($c->name,$search_term))
77 {
78 $c->label = "channel name";
79 $search_results['channels'][] = $c;
80 }
81 if (isset($c->topic) && strcasestr($c->topic,$search_term))
82 {
83 $c->label = "channel topic";
84 $search_results['channels'][] = $c;
85 }
86 if (isset($c->bans))
87 {
88 foreach ($c->bans as $i)
89 {
90 if (!strcasestr($i->name, $search_term))
91 continue;
92
93 $new = (object)[];
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");
99 }
100 }
101 if (isset($c->ban_exemptions))
102 {
103 foreach ($c->ban_exemptions as $i)
104 {
105 if (!strcasestr($i->name, $search_term))
106 continue;
107
108 $new = (object)[];
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");
114 }
115 }
116 if (isset($c->invite_exceptions))
117 {
118 foreach ($c->invite_exceptions as $i)
119 {
120 if (!strcasestr($i->name, $search_term))
121 continue;
122
123 $new = (object)[];
124 $new->name = $c->name;
125 $new->topic = $i->name;
126 $new->label = "invite (+I)";
127 $search_results['channels'][] = $new;
128 }
129 }
130 }
131 foreach ($logs as $l)
132 if (strcasestr($l->msg,$search_term))
133 $search_results['logs'][] = $l;
134
135 foreach ($servers as $s)
136 if (strcasestr($s->name, $search_term))
137 $search_results['servers'][] = $s;
138
139 foreach ($server_bans as $ban)
140 {
141
142 if (strstr($ban->type,$search_term) || strstr($ban->type_string,$search_term))
143 {
144 $o = (object)[];
145 $o->label = $ban->type_string;
146 $o->name = $ban->name;
147 $o->data = $ban->reason;
148 $search_results['server_bans'][] = $o;
149 }
150 elseif (strstr($ban->name,$search_term))
151 {
152 $o = (object)[];
153 $o->label = $ban->type_string;
154 $o->name = "<code>$ban->name</code>";
155 $o->data = $ban->reason;
156 $search_results['server_bans'][] = $o;
157 }
158
159 elseif (strcasestr($ban->reason,$search_term))
160 {
161 $o = (object)[];
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;
166 }
167 }
168
169 foreach ($excepts as $ban)
170 {
171 if (strstr($ban->type,$search_term) || strstr($ban->type_string,$search_term))
172 {
173 $o = (object)[];
174 $o->label = $ban->type_string;
175 $o->name = $ban->name;
176 $o->data = $ban->reason;
177 $search_results['excepts'][] = $o;
178 }
179 elseif (strstr($ban->name,$search_term))
180 {
181 $o = (object)[];
182 $o->label = $ban->type_string;
183 $o->name = "<code>$ban->name</code>";
184 $o->data = $ban->reason;
185 $search_results['excepts'][] = $o;
186 }
187 elseif (strcasestr($ban->reason,$search_term))
188 {
189 $o = (object)[];
190 $o->label = $ban->type_string." reason";
191 $o->name = $ban->name;
192 $o->data = $ban->reason;
193 $search_results['excepts'][] = $o;
194 }
195 }
196
197
198 foreach ($name_bans as $ban)
199 {
200 if (strstr($ban->type,$search_term) || strstr($ban->type_string,$search_term))
201 {
202 $o = (object)[];
203 $o->label = $ban->type_string;
204 $o->name = $ban->name;
205 $o->data = $ban->reason;
206 $search_results['name_bans'][] = $o;
207 }
208 elseif (strstr($ban->name,$search_term))
209 {
210 $o = (object)[];
211 $o->label = $ban->type_string;
212 $o->name = "<code>$ban->name</code>";
213 $o->data = $ban->reason;
214 $search_results['name_bans'][] = $o;
215 }
216 elseif (strcasestr($ban->reason,$search_term))
217 {
218 $o = (object)[];
219 $o->label = $ban->type_string." reason";
220 $o->name = $ban->name;
221 $o->data = $ban->reason;
222 $search_results['name_bans'][] = $o;
223 }
224 }
225
226 foreach ($spamfilter as $ban)
227 {
228 if (strstr($ban->type,$search_term) || strstr($ban->type_string,$search_term))
229 {
230 $o = (object)[];
231 $o->label = $ban->type_string;
232 $o->name = $ban->name;
233 $o->data = $ban->reason;
234 $search_results['spamfilter'][] = $o;
235 }
236 elseif (strstr($ban->name,$search_term))
237 {
238 $o = (object)[];
239 $o->label = $ban->type_string;
240 $o->name = "<code>$ban->name</code>";
241 $o->data = $ban->reason;
242 $search_results['spamfilter'][] = $o;
243 }
244 elseif (strcasestr($ban->reason,$search_term))
245 {
246 $o = (object)[];
247 $o->label = $ban->type_string." reason";
248 $o->name = $ban->name;
249 $o->data = $ban->reason;
250 $search_results['spamfilter'][] = $o;
251 }
252 }
253
254
255
256 echo json_encode($search_results);