From: Steinar H. Gunderson Date: Mon, 14 Feb 2005 01:05:08 +0000 (+0000) Subject: Adding show-tournament.pl (arch is weird)... X-Git-Url: https://git.sesse.net/?p=ccbs;a=commitdiff_plain;h=ccc5e31ac4db570fce4836d6ac77d39200e19b54;ds=inline Adding show-tournament.pl (arch is weird)... --- diff --git a/html/show-tournament.pl b/html/show-tournament.pl new file mode 100755 index 0000000..fe40817 --- /dev/null +++ b/html/show-tournament.pl @@ -0,0 +1,49 @@ +#! /usr/bin/perl + +use ccbs; +use strict; +use warnings; + +my $cgi = new CGI; +my $id = $cgi->param('id'); + +my $dbh = ccbs::db_connect(); + +my $tournament = $dbh->selectrow_hashref('SELECT * FROM tournaments WHERE tournament=?', undef, $id); + +# Swoop all the data in in a big join, then order it over to quasi-sane Perl objects. +# (round -> parallel -> player -> songs -> title,chosen,score) +my $scores = ccbs::db_fetch_all($dbh, + 'SELECT round,parallel,nick,title,chosen,score FROM scores NATURAL JOIN players NATURAL JOIN songs NATURAL JOIN roundparticipation WHERE tournament=? ORDER BY round,parallel,position,songnumber', + $id); + +my @rounds = (); + +my ($round, $parallel, $player) = (-1,-1,''); +for my $score (@$scores) { + if ($score->{'round'} != $round) { + $round = $score->{'round'}; + push @rounds, { round => $round, parallels => [] }; + $parallel = -1; + } + my $p = $rounds[$#rounds]->{'parallels'}; + if ($score->{'parallel'} != $parallel) { + $parallel = $score->{'parallel'}; + push @$p, { parallel => $parallel, players => [] }; + $player = ''; + } + my $pl = $p->[$#$p]->{'players'}; + if ($score->{'nick'} ne $player) { + $player = $score->{'nick'}; + push @$pl, { nick => $player, songs => [] }; + } + + push @{$pl->[$#$pl]->{'songs'}}, { + title => $score->{'title'}, + chosen => $score->{'chosen'}, + score => $score->{'score'} + }; +} + +ccbs::print_header(); +ccbs::process_template('show-tournament.tmpl', 'Turnering', { tournament => $tournament, rounds => \@rounds });