prepare("SELECT name FROM games WHERE id = :id"); $stmt->execute([ "id" => $_GET["game"], ]); $game_name = $stmt->fetch(PDO::FETCH_COLUMN); $title = "Results: $game_name"; $description = "View the results of particular issue's voting."; // use new weights for Winter 2024 and later // i want to normalise the old and new ranking formulas, but for now // this will have to do if (intval($_GET['game']) >= 381): /** === START new display query === */ $temp = ""; $view = 'CREATE TEMPORARY VIEW round_%2$d AS SELECT submissions.id AS submission_id, SUM(score) AS total_score, COUNT(completed) AS num_scores, AVG(score) AS average_score FROM submissions LEFT JOIN assignments ON submissions.id = assignments.submission_id WHERE submissions.game_id = %1$d AND round_number = %2$d GROUP BY submission_id;' . PHP_EOL; $temp .= sprintf($view, $_GET["game"], 1); $temp .= sprintf($view, $_GET["game"], 2); $temp .= sprintf($view, $_GET["game"], 3); $temp .= sprintf( 'CREATE TEMPORARY VIEW participants AS SELECT member_id, COUNT(completed) != COUNT(id) AS disqualified FROM assignments WHERE game_id = %d GROUP BY member_id;', $_GET["game"] ); $db["data"]->exec($temp); $stmt = $db["data"]->query( 'SELECT submissions.id AS id, submissions.hash, members.name, members.handle, CASE WHEN name_is_public = 1 AND name IS NOT NULL THEN name ELSE CONCAT("Member ", submissions.member_id) END AS author, CASE WHEN doc_is_public = 1 THEN title ELSE CONCAT("Entry ", submissions.id) END AS title , doc_is_public, name_is_public, participants.disqualified, row_number() OVER(ORDER BY round_1.average_score DESC, round_1.num_scores DESC) AS rank_round_1, iif(round_1.average_score, format("%.2f", round_1.average_score), NULL) AS score_round_1, round_1.num_scores AS round_1_num_scores, row_number() OVER(ORDER BY round_2.average_score DESC, round_2.num_scores DESC, round_1.average_score DESC, round_1.num_scores DESC) AS rank_round_2, iif(round_2.average_score, format("%.2f", round_2.average_score), NULL) AS score_round_2, round_2.num_scores AS round_2_num_scores, row_number() OVER(ORDER BY round_3.average_score DESC, round_3.num_scores DESC, round_2.average_score DESC, round_2.num_scores DESC, round_1.average_score DESC, round_1.num_scores DESC) AS rank_round_3, iif(round_3.average_score, format("%.2f", round_3.average_score), NULL) AS score_round_3, round_3.num_scores AS round_3_num_scores FROM submissions LEFT JOIN members ON submissions.member_id = members.id JOIN round_1 ON submissions.id = round_1.submission_id LEFT JOIN round_2 ON submissions.id = round_2.submission_id LEFT JOIN round_3 ON submissions.id = round_3.submission_id LEFT JOIN participants ON participants.member_id = submissions.member_id GROUP BY submissions.id, submissions.member_id ORDER BY rank_round_3;'); /** === END new display query === */ else: /** === START old display query === */ $stmt = $db["data"] ->prepare('SELECT submissions.id AS id, submissions.hash, members.name, members.handle, CASE WHEN name_is_public = 1 AND name IS NOT NULL THEN name ELSE CONCAT("Member ", submissions.member_id) END AS author, CASE WHEN doc_is_public = 1 THEN title ELSE CONCAT("Entry ", submissions.id) END AS title, doc_is_public, name_is_public, score_round_1, rank_round_1, score_round_2, rank_round_2, score_round_3, rank_round_3, rank_final, votes_round_1, votes_round_2, votes_round_3, num_assignments_round_1, num_assignments_round_2, num_assignments_round_3 FROM submissions JOIN members ON submissions.member_id = members.id WHERE submissions.game_id = :id AND rank_final IS NOT NULL AND submissions.transaction_id IS NOT NULL ORDER BY rank_final ASC'); $stmt->execute([ "id" => $_GET["game"], ]); /** === END old display query === */ endif; $row = $stmt->fetch(PDO::FETCH_OBJ); if (!$row) { $title = "No Results Found"; $description = "We couldn't find the game results you requested."; } include "partials/head.php"; ?>

doc_is_public || IS_ADMIN; $doc_title = htmlspecialchars( $row->title, ENT_QUOTES ); $doc_url = sprintf("/docs/%s", $row->hash); $author = htmlspecialchars($row->author, ENT_QUOTES); $profile_url = "/members/" . $row->handle; $is_disqualified = $row->disqualified ?? ($row->rank_round_1 && $row->num_assignments_round_1 && !$row->votes_round_1) || ($row->rank_round_2 && $row->num_assignments_round_2 && !$row->votes_round_2) || ($row->rank_round_3 && $row->num_assignments_round_3 && !$row->votes_round_3) ? true : false; ?> > fetch(PDO::FETCH_OBJ)); ?>
Results for
Title Author Score Rank
Round One Round Two Round Three Round One Round Two Round Three
$doc_title" : $doc_title ?> (disqualified) name_is_public ? "$author" : $author ?> score_round_1) ? 'class="empty"' : "" ?>>score_round_1) ? 0 : $row->score_round_1 ?> score_round_2) ? 'class="empty"' : "" ?>>score_round_2) ? 0 : $row->score_round_2 ?> score_round_3) ? 'class="empty"' : "" ?>>score_round_3) ? 0 : $row->score_round_3 ?> rank_round_1 ?> rank_round_2 ?> rank_round_3 ?>