game filter

This commit is contained in:
Lars Behrends
2025-11-10 03:11:23 +01:00
parent 2da58cfbd0
commit 0530f00cbf
3 changed files with 307 additions and 31 deletions

View File

@@ -189,6 +189,14 @@ class GameController extends Controller
}
$platforms = array_filter($platforms);
$features = $queryParams['features'] ?? [];
if (!is_array($features)) {
$features = [$features];
}
$features = array_filter($features);
$playtimeFilter = $queryParams['playtime'] ?? '';
// Get view mode
$viewMode = $queryParams['view'] ?? 'grid'; // grid, list, covers
@@ -196,14 +204,15 @@ class GameController extends Controller
$sort = $queryParams['sort'] ?? 'title_asc';
// Get games with pagination, filters, and sorting
$games = Game::getGroupedGamesWithPagination($this->pdo, $page, $perPage, $search, $genres, $platforms, $sort);
$games = Game::getGroupedGamesWithPagination($this->pdo, $page, $perPage, $search, $genres, $platforms, $features, $playtimeFilter, $sort);
// Get total count for pagination
$totalCount = Game::getTotalCount($this->pdo, $search, $genres, $platforms);
$totalCount = Game::getTotalCount($this->pdo, $search, $genres, $platforms, $features, $playtimeFilter);
// Get available filter options
$availableGenres = Game::getAvailableGenres($this->pdo);
$availablePlatforms = Game::getAvailablePlatforms($this->pdo);
$availableFeatures = Game::getAvailableFeatures($this->pdo);
// Calculate pagination info
$totalPages = ceil($totalCount / $perPage);
@@ -228,11 +237,14 @@ class GameController extends Controller
'view_modes' => ['grid', 'list', 'covers'],
'filters' => [
'genres' => $genres,
'platforms' => $platforms
'platforms' => $platforms,
'features' => $features,
'playtime' => $playtimeFilter
],
'available_filters' => [
'genres' => $availableGenres,
'platforms' => $availablePlatforms
'platforms' => $availablePlatforms,
'features' => $availableFeatures
],
'sort' => $sort,
'sort_options' => [