213 lines
		
	
	
	
		
			8.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			213 lines
		
	
	
	
		
			8.8 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
 | 
						|
                $IS_PAID = $submission->transaction_id !== NULL;
 | 
						|
                switch ($participant_state) {
 | 
						|
                    case 'GAME_OPEN_WITH_SUBMISSION': ?>
 | 
						|
                    <p><a href='/docs/<?= $submission->hash ?>'><?= $submission->title ?></a></p>
 | 
						|
                    <?php if (!$IS_PAID) { ?><p>You have not yet paid for your submission.</p><?php } ?>
 | 
						|
                    <p><a href="/games/<?= $game->id ?>/update" class='call-to-action'>Update submission</a></p>
 | 
						|
                    <?php if (!$IS_PAID) { ?>
 | 
						|
                        <p><a href="/games/<?= $game->id ?>/submit" class='call-to-action'>Pay submission fee</a></p>
 | 
						|
                    <?php } ?>
 | 
						|
                    <?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"; ?>
 |