public function search()
{
$current_user = Auth::user();
$params = [];
if (is_null($current_user)) {
$params = ['page' => Request::input('page')];
} else {
$params = ['query' => Request::input('q'), 'mode' => Request::input('m'), 'status' => Request::input('s'), 'genre' => Request::input('g'), 'language' => Request::input('l'), 'extra' => array_filter(explode('-', Request::input('e')), 'strlen'), 'rank' => array_filter(explode('-', Request::input('r')), 'strlen'), 'page' => Request::input('page'), 'sort' => explode('_', Request::input('sort'))];
if (!$current_user->isSupporter()) {
unset($params['rank']);
}
}
$params = array_filter($params, function ($v, $k) {
if (is_array($v)) {
return !empty($v);
} else {
return presence($v) !== null;
}
}, ARRAY_FILTER_USE_BOTH);
$beatmaps = Beatmapset::search($params);
return json_collection($beatmaps, new BeatmapsetTransformer(), 'beatmaps');
}