"No search query"]);
$search_term = $_GET['search'];
$users = $rpc->user()->getAll();
$chans = $rpc->channel()->getAll(2);
$logs = $rpc->log()->getAll();
$servers = $rpc->server()->getAll();
$server_bans = $rpc->serverban()->getAll();
$excepts = $rpc->serverbanexception()->getAll();
$spamfilter = $rpc->spamfilter()->getAll();
$name_bans = $rpc->nameban()->getAll();
$search_results = [
"users" => [],
"channels" => [],
"channel_bans" => [],
"channel_invites" => [],
"channel_excepts" => [],
"logs" => [],
"server_bans" => [],
"excepts" => [],
"spamfilter" => [],
"name_bans" => []
];
function strcasestr($haystack, $needle) : bool
{
if (strstr(strtolower($haystack), strtolower($needle)))
return true;
return false;
}
foreach ($users as $u)
{
if (strcasestr($u->name,$search_term))
{
$o = (object)[];
$o->name = $u->name;
$o->data = $u->name;
$o->label = "nick";
$search_results['users'][] = $o;
}
if (strcasestr($u->details,$search_term))
{
$o = (object)[];
$o->name = $u->name;
$o->data = $u->details;
$o->label = "userhost";
$search_results['users'][] = $o;
}
if (strcasestr($u->user->realname,$search_term))
{
$o = (object)[];
$o->name = $u->name;
$o->data = $u->user->realname;
$o->label = "GECOS";
$search_results['users'][] = $o;
}
if (strcasestr($u->user->account,$search_term))
{
$o = (object)[];
$o->name = $u->name;
$o->data = $u->name;
$o->label = "account";
$search_results['users'][] = $o;
}
}
foreach ($chans as $c)
{
if (strcasestr($c->name,$search_term))
{
$c->label = "channel name";
$search_results['channels'][] = $c;
}
if (isset($c->topic) && strcasestr($c->topic,$search_term))
{
$c->label = "channel topic";
$search_results['channels'][] = $c;
}
if (isset($c->bans))
{
foreach ($c->bans as $i)
{
if (!strcasestr($i->name, $search_term))
continue;
$new = (object)[];
$new->name = $c->name;
$new->topic = $i->name;
$new->label = "ban (+b)";
$search_results['channels'][] = $new;
error_log("$new->label for $i->name");
}
}
if (isset($c->ban_exemptions))
{
foreach ($c->ban_exemptions as $i)
{
if (!strcasestr($i->name, $search_term))
continue;
$new = (object)[];
$new->name = $c->name;
$new->topic = $i->name;
$new->label = "exempt (+e)";
$search_results['channels'][] = $new;
error_log("$new->label for $i->name");
}
}
if (isset($c->invite_exceptions))
{
foreach ($c->invite_exceptions as $i)
{
if (!strcasestr($i->name, $search_term))
continue;
$new = (object)[];
$new->name = $c->name;
$new->topic = $i->name;
$new->label = "invite (+I)";
$search_results['channels'][] = $new;
}
}
}
foreach ($logs as $l)
if (strcasestr($l->msg,$search_term))
$search_results['logs'][] = $l;
foreach ($servers as $s)
if (strcasestr($s->name, $search_term))
$search_results['servers'][] = $s;
foreach ($server_bans as $ban)
{
if (strstr($ban->type,$search_term) || strstr($ban->type_string,$search_term))
{
$o = (object)[];
$o->label = $ban->type_string;
$o->name = $ban->name;
$o->data = $ban->reason;
$search_results['server_bans'][] = $o;
}
elseif (strstr($ban->name,$search_term))
{
$o = (object)[];
$o->label = $ban->type_string;
$o->name = "$ban->name
";
$o->data = $ban->reason;
$search_results['server_bans'][] = $o;
}
elseif (strcasestr($ban->reason,$search_term))
{
$o = (object)[];
$o->label = $ban->type_string." reason";
$o->name = "$ban->name
";
$o->data = $ban->reason;
$search_results['server_bans'][] = $o;
}
}
foreach ($excepts as $ban)
{
if (strstr($ban->type,$search_term) || strstr($ban->type_string,$search_term))
{
$o = (object)[];
$o->label = $ban->type_string;
$o->name = $ban->name;
$o->data = $ban->reason;
$search_results['excepts'][] = $o;
}
elseif (strstr($ban->name,$search_term))
{
$o = (object)[];
$o->label = $ban->type_string;
$o->name = "$ban->name
";
$o->data = $ban->reason;
$search_results['excepts'][] = $o;
}
elseif (strcasestr($ban->reason,$search_term))
{
$o = (object)[];
$o->label = $ban->type_string." reason";
$o->name = $ban->name;
$o->data = $ban->reason;
$search_results['excepts'][] = $o;
}
}
foreach ($name_bans as $ban)
{
if (strstr($ban->type,$search_term) || strstr($ban->type_string,$search_term))
{
$o = (object)[];
$o->label = $ban->type_string;
$o->name = $ban->name;
$o->data = $ban->reason;
$search_results['name_bans'][] = $o;
}
elseif (strstr($ban->name,$search_term))
{
$o = (object)[];
$o->label = $ban->type_string;
$o->name = "$ban->name
";
$o->data = $ban->reason;
$search_results['name_bans'][] = $o;
}
elseif (strcasestr($ban->reason,$search_term))
{
$o = (object)[];
$o->label = $ban->type_string." reason";
$o->name = $ban->name;
$o->data = $ban->reason;
$search_results['name_bans'][] = $o;
}
}
foreach ($spamfilter as $ban)
{
if (strstr($ban->type,$search_term) || strstr($ban->type_string,$search_term))
{
$o = (object)[];
$o->label = $ban->type_string;
$o->name = $ban->name;
$o->data = $ban->reason;
$search_results['spamfilter'][] = $o;
}
elseif (strstr($ban->name,$search_term))
{
$o = (object)[];
$o->label = $ban->type_string;
$o->name = "$ban->name
";
$o->data = $ban->reason;
$search_results['spamfilter'][] = $o;
}
elseif (strcasestr($ban->reason,$search_term))
{
$o = (object)[];
$o->label = $ban->type_string." reason";
$o->name = $ban->name;
$o->data = $ban->reason;
$search_results['spamfilter'][] = $o;
}
}
echo json_encode($search_results);