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'); }