Fix more stuff related to making new groups.
authorSteinar H. Gunderson <sesse@samfundet.no>
Mon, 14 Feb 2005 21:46:25 +0000 (21:46 +0000)
committerSteinar H. Gunderson <sesse@samfundet.no>
Mon, 14 Feb 2005 21:46:25 +0000 (21:46 +0000)
html/do-start-round.pl
html/show-tournament.pl
sql/ccbs.sql

index 2e503bb..ff0a417 100755 (executable)
@@ -55,6 +55,17 @@ for my $g (1..$num_groups) {
                my $ref = $dbh->selectrow_hashref('SELECT * FROM songs ORDER BY random() LIMIT 1');
                $dbh->do('INSERT INTO roundrandomsongs (tournament, round, parallel, song) VALUES (?,?,?,?)',
                        undef, $tournament, $round, $g, $ref->{'song'});
+
+               $dbh->do('INSERT INTO scores SELECT tournament,round,parallel,player,?,?,NULL,NULL,\'f\',NULL FROM roundparticipation WHERE tournament=? AND round=? AND parallel=?', undef,
+                       $s, $ref->{'song'}, $tournament, $round, $g);
+       }
+}
+
+# Add empty "score" records for the chosen songs.
+for my $g (1..$num_groups) {
+       for my $s (1..$num_chosen) {
+               $dbh->do('INSERT INTO scores SELECT tournament,round,parallel,player,?,NULL,NULL,NULL,\'t\',NULL FROM roundparticipation WHERE tournament=? AND round=? AND parallel=?', undef,
+                       $s + $num_random, $tournament, $round, $g);
        }
 }
 
index 8ff04c3..b4b6e04 100755 (executable)
@@ -15,7 +15,7 @@ my $rankings = ccbs::db_fetch_all($dbh, 'SELECT ranking,nick,COALESCE(points,-1)
 # 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,position,nick,title,chosen,score FROM roundparticipation NATURAL LEFT JOIN roundrandomsongs NATURAL LEFT JOIN scores NATURAL JOIN songs NATURAL JOIN players WHERE tournament=? ORDER BY round,parallel,position,songnumber',
+       'SELECT round,parallel,position,nick,title,chosen,score FROM roundparticipation NATURAL JOIN players NATURAL JOIN scores NATURAL LEFT JOIN songs WHERE tournament=? ORDER BY round,parallel,position,songnumber',
        $id);
 
 my @rounds = ();
@@ -39,7 +39,7 @@ for my $score (@$scores) {
        }
        if ($score->{'position'} == 1) {
                if ($score->{'chosen'}) {
-                       push @{$p->[$#$p]->{'songs'}}, '';
+                       push @{$p->[$#$p]->{'songs'}}, 'Selvvalgt';
                } else {
                        push @{$p->[$#$p]->{'songs'}}, $score->{'title'};
                }
@@ -57,7 +57,9 @@ for my $score (@$scores) {
                chosen => $score->{'chosen'},
                score => $score->{'score'}
        };
-       $pl->[$#$pl]->{'total'} += $score->{'score'};
+       if (defined($score->{'score'})) {
+               $pl->[$#$pl]->{'total'} += $score->{'score'};
+       }
 }
 
 my $num_rounds = scalar @rounds;
index 374af67..45897b3 100644 (file)
@@ -143,9 +143,7 @@ CREATE TABLE scores (
        chosen BOOLEAN,
        score INTEGER CHECK (score IS NULL OR (score >= 0 AND score <= 10000)),
        
-       FOREIGN KEY (song) REFERENCES songs (song),
        FOREIGN KEY (song, playmode, difficulty) REFERENCES songratings (song, playmode, difficulty),
        FOREIGN KEY (tournament, round, parallel, player) REFERENCES roundparticipation (tournament, round, parallel, player),
-       UNIQUE (tournament, round, parallel, player, songnumber),
-       PRIMARY KEY (tournament, round, parallel, player, song)
+       PRIMARY KEY (tournament, round, parallel, player, songnumber)
 );