flash.moe/public/collection/games.php
2020-08-20 00:02:37 +00:00

130 lines
4.2 KiB
PHP

<?php
require_once '_inc.php';
$sysId = filter_input(INPUT_GET, 'sys', FILTER_SANITIZE_NUMBER_INT);
$showAllGames = $sysId === null;
$getSystem = $pdo->prepare('
SELECT s.*, (
SELECT COUNT(`game_id`)
FROM `col_games`
WHERE `sys_id` = s.`sys_id`
) AS `sys_games`,
(
SELECT COUNT(`game_id`)
FROM `col_games_ownership`
WHERE `game_id` IN (
SELECT `game_id`
FROM `col_games`
WHERE `sys_id` = s.`sys_id`
)
) AS `sys_games_owned`
FROM `col_systems` AS s
WHERE `sys_id` = :sys
');
if(!$showAllGames) {
$getSystem->bindValue('sys', $sysId);
$getSystem->execute();
$system = $getSystem->fetch(PDO::FETCH_OBJ);
if(empty($system)) {
http_response_code(404);
die('No such system.');
}
}
$getGames = $pdo->prepare(sprintf(
'
SELECT g.*, (
SELECT COUNT(`game_id`) > 0
FROM `col_games_ownership`
WHERE `game_id` = g.`game_id`
) AS `game_owned`
FROM `col_games` AS g
%s
ORDER BY %s`game_owned` DESC, g.`sys_id`, COALESCE(`game_title_order`, `game_title`)
',
$showAllGames ? '' : 'WHERE `sys_id` = :sys',
$showAllGames ? '(
SELECT COUNT(`game_id`)
FROM `col_games`
WHERE `sys_id` = g.`sys_id`
) DESC, ' : ''
));
if(!$showAllGames)
$getGames->bindValue('sys', $sysId);
$getGames->execute();
$games = $getGames->fetchAll(PDO::FETCH_OBJ);
$title = $showAllGames
? 'All Games'
: $system->sys_name;
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<title><?=$title;?> - Game Collection</title>
<link href="assets/style.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript">
var _paq = window._paq || [];
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
_paq.push(['setTrackerUrl', '//uiharu.railgun.sh/mtm']);
_paq.push(['setSiteId', 'w4PqjBGmOL5l']);
var g = document.createElement('script');
g.type = 'text/javascript'; g.async = true;
g.defer = true; g.src = '//uiharu.railgun.sh/mtm.js';
document.head.appendChild(g);
})();
</script>
</head>
<body>
<div class="wrapper">
<h1><a href="./">Game Collection</a></h1>
<?php
foreach($games as $game):
if(empty($system->sys_id) || $system->sys_id !== $game->sys_id || (!$showAllGames && empty($headerPrinted))):
$headerPrinted = true;
if($showAllGames) {
$getSystem->bindValue('sys', $game->sys_id);
$getSystem->execute();
}
if($showAllGames) {
if(isset($system)):
?>
</div>
<?php
endif;
$system = $getSystem->fetch(PDO::FETCH_OBJ);
}
?>
<div class="syshead" id="<?=$system->sys_short;?>">
<div class="syshead-pic">
<img src="<?=sprintf('assets/systems/%s.jpg', $system->sys_short);?>" alt=""/>
</div>
<div class="syshead-cont">
<h2><a href="?sys=<?=$system->sys_id;?>"><?=$system->sys_name;?></a></h2>
<p><?=number_format($system->sys_games_owned);?> of <?=number_format($system->sys_games);?> game<?=($system->sys_games !== 1 ? 's' : '');?></p>
</div>
</div>
<div class="gamelist">
<?php endif; ?>
<div class="gamebox gamebox--<?=$system->sys_short;?><?php if(!$game->game_owned) { ?> gamebox--missing<?php } ?>">
<img src="<?=sprintf('assets/games/%s/%s.jpg', $system->sys_short, $game->game_short);?>" alt="" class="gamebox-art"/>
<a class="gamebox-link" href="<?=sprintf('game.php?id=%d', $game->game_id);?>"></a>
<div class="gamebox-cont">
<h3><?=$game->game_title;?></h3>
<p><?=$game->game_region;?></p>
</div>
</div>
<?php endforeach; ?>
</div>
</div>
</body>
</html>