app\models\Beatmapset::sanitizeSearchParams PHP Method

sanitizeSearchParams() private static method

private static sanitizeSearchParams ( array &$params = [] )
$params array
    private static function sanitizeSearchParams(array &$params = [])
    {
        // sort param
        if (count($params['sort']) !== 2) {
            $params['sort'] = ['ranked', 'desc'];
        }
        if (!in_array((int) $params['mode'], Beatmap::MODES, true)) {
            $params['mode'] = null;
        }
        $valid_sort_fields = ['title', 'artist', 'creator', 'difficulty', 'ranked', 'rating', 'plays'];
        $valid_sort_orders = ['asc', 'desc'];
        if (!in_array($params['sort'][0], $valid_sort_fields, true) || !in_array($params['sort'][1], $valid_sort_orders, true)) {
            $params['sort'] = ['ranked', 'desc'];
        }
        // remap sort field to their db/elastic-search equivalents
        $params['sort'][0] = str_replace(['difficulty', 'ranked', 'plays'], ['difficultyrating', 'approved_date', 'playcount'], $params['sort'][0]);
        list($params['sort_field'], $params['sort_order']) = $params['sort'];
        unset($params['sort']);
        $valid_ranks = ['A', 'B', 'C', 'D', 'S', 'SH', 'X', 'XH'];
        foreach ($params['rank'] as $rank) {
            if (!in_array($rank, $valid_ranks, true)) {
                unset($params['rank'][$rank]);
            }
        }
        if ($params['query'] !== null) {
            $params['query'] = preg_replace('/\\s{2,}/', ' ', $params['query']);
            $params['query'] = trim($params['query']);
            $query_parts = explode(' ', $params['query']);
            foreach ($query_parts as $key => $value) {
                $query_parts[$key] = urlencode($value);
            }
            $params['query'] = implode(' AND ', $query_parts);
        }
    }