1
0
Fork 0
app.sixfold.org/www/games/game.php
2024-11-14 04:30:20 -05:00

208 lines
8.5 KiB
PHP

<?php
$title = "Games";
$description = "View previous games.";
if (!isset($_SESSION["account"])) {
$title = "Log In";
$description = "Login to view details about this vote.";
http_response_code(401);
}
if (LOGGED_IN && isset($_GET["game"])) {
$sql = "SELECT games.id, games.name, games.status_id,
games.submitstart, games.submitend,
games.onestart, games.twostart, games.threestart, games.gameend
FROM games
JOIN game_status ON games.status_id = game_status.id
WHERE games.id = :id";
$stmt = $db["data"]->prepare($sql);
$stmt->execute([
"id" => $_GET["game"],
]);
$game = $stmt->fetch(PDO::FETCH_OBJ);
unset($stmt);
$title = "Game: " . $game->name;
$description = "View details about the " . $game->name . " vote.";
}
include "partials/head.php";
?>
<body>
<?php include "partials/header.php"; ?>
<main id="main" class="flow">
<header>
<h1><?= $title ?></h1>
</header>
<?php if (!LOGGED_IN) {
include "partials/login-form.php";
} else {
$stmt = $db["data"]->prepare(
"SELECT * FROM assignments WHERE assignments.game_id = :game_id"
);
$stmt->execute([
"game_id" => $_GET["game"],
]);
$assignments = $stmt->execute();
$stmt = $db["data"]->prepare(
"SELECT * FROM submissions WHERE game_id = :game_id AND member_id = :member_id"
);
$stmt->execute([
"game_id" => $_GET["game"],
"member_id" => $_SESSION["account"]->id,
]);
$submission = $stmt->fetch(PDO::FETCH_OBJ);
unset($stmt);
if ($game->status_id === STATUS_ENROLLING && $submission) {
$participant_state = 'GAME_OPEN_WITH_SUBMISSION';
} elseif ($game->status_id === STATUS_ENROLLING && !$submission) {
$participant_state = 'GAME_OPEN_WITHOUT_SUBMISSION';
} elseif ($submission && in_array($game->status_id, [
STATUS_ROUND_ONE,
STATUS_ROUND_TWO,
STATUS_ROUND_THREE,
STATUS_DONE,
])) {
$participant_state = 'GAME_CLOSED_WITH_SUBMISSION';
} else {
$participant_state = 'GAME_CLOSED_WITHOUT_SUBMISSION';
}
$dates = [
"submitstart" => DateTimeImmutable::createFromFormat(
"U",
$game->submitstart
)->setTimezone($time_zone),
"submitend" => DateTimeImmutable::createFromFormat(
"U",
$game->submitend
)->setTimezone($time_zone),
"onestart" => DateTimeImmutable::createFromFormat(
"U",
$game->onestart
)->setTimezone($time_zone),
"twostart" => DateTimeImmutable::createFromFormat(
"U",
$game->twostart
)->setTimezone($time_zone),
"threestart" => DateTimeImmutable::createFromFormat(
"U",
$game->threestart
)->setTimezone($time_zone),
"gameend" => DateTimeImmutable::createFromFormat(
"U",
$game->gameend
)->setTimezone($time_zone),
];
?>
<article>
<div class="flow">
<h2>Your Submission</h2>
<?php
switch ($participant_state) {
case 'GAME_OPEN_WITH_SUBMISSION': ?>
<p><a href='/docs/<?= $submission->hash ?>'><?= $submission->title ?></a></p>
<p><a href="/games/<?= $game->id ?>/update" class='call-to-action'>Update submission</a></p>
<?php break;
case 'GAME_OPEN_WITHOUT_SUBMISSION': ?>
<p>You haven't submitted work to this contest.</p>
<p><a href="/games/<?= $game->id ?>/submit" class='call-to-action'>Submit to <?= $game->name ?></a></p>
<?php break;
case 'GAME_CLOSED_WITH_SUBMISSION': ?>
<?php include "partials/submission-info.php"; ?>
<p><a href='/games/<?= $game->id ?>/update' class='call-to-action'>Update submission visibility</a></p>
<?php include "partials/feedback.php"; ?>
<?php include "partials/assignments.php"; ?>
<?php break;
case 'GAME_CLOSED_WITHOUT_SUBMISSION': ?>
<p>You didn't submit a work to this contest.</p>
<?php break;
default: ?>
<?php break;
} ?>
</div>
<hr/>
<div>
<h2>Schedule</h2>
<dl class="flow" data-game-status="<?= $game->status_id ?>">
<div data-status="<?= STATUS_ENROLLING ?>">
<dt>Submissions</dt>
<dd><span>Open: </span><time datetime="<?= $dates[
"submitstart"
]->format("c") ?>"><?= $dates["submitstart"]->format(
'l, j F, o \a\t h:i A T'
) ?></time></dd>
<dd><span>Close: </span><time datetime="<?= $dates[
"submitend"
]->format("c") ?>"><?= $dates["submitend"]->format(
'l, j F, o \a\t h:i A T'
) ?></time></dd>
</div>
<div data-status="<?= STATUS_REVIEW ?>">
<dt>Document Review</dt>
<dd><span>Start: </span><time datetime="<?= $dates[
"submitend"
]
->add($one_second)
->format("c") ?>"><?= $dates["submitend"]
->add($one_second)
->format('l, j F, o \a\t h:i A T') ?></time></dd>
<dd><span>End: </span><time datetime="<?= $dates["onestart"]
->sub($one_second)
->format("c") ?>"><?= $dates["onestart"]
->sub($one_second)
->format('l, j F, o \a\t h:i A T') ?></time></dd>
</div>
<div data-status="<?= STATUS_ROUND_ONE ?>">
<dt>Round One</dt>
<dd><span>Start: </span><time datetime="<?= $dates[
"onestart"
]->format("c") ?>"><?= $dates["onestart"]->format(
'l, j F, o \a\t h:i A T'
) ?></time></dd>
<dd><span>End: </span><time datetime="<?= $dates["twostart"]
->sub($one_second)
->format("c") ?>"><?= $dates["twostart"]
->sub($one_second)
->format('l, j F, o \a\t h:i A T') ?></time></dd>
</div>
<div data-status="<?= STATUS_ROUND_TWO ?>">
<dt>Round Two</dt>
<dd><span>Start: </span><time datetime="<?= $dates[
"twostart"
]->format("c") ?>"><?= $dates["twostart"]->format(
'l, j F, o \a\t h:i A T'
) ?></time></dd>
<dd><span>End: </span><time datetime="<?= $dates[
"threestart"
]
->sub($one_second)
->format("c") ?>"><?= $dates["threestart"]
->sub($one_second)
->format('l, j F, o \a\t h:i A T') ?></time></dd>
</div>
<div data-status="<?= STATUS_ROUND_THREE ?>">
<dt>Round Three</dt>
<dd><span>Start: </span><time datetime="<?= $dates[
"threestart"
]->format("c") ?>"><?= $dates["threestart"]->format(
'l, j F, o \a\t h:i A T'
) ?></time></dd>
<dd><span>End: </span><time datetime="<?= $dates[
"gameend"
]->format("c") ?>"><?= $dates["gameend"]->format(
'l, j F, o \a\t h:i A T'
) ?></time></dd>
</div>
</dl>
</div>
</article>
<?php
} ?>
</main>
<?php include "partials/footer.php"; ?>