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'});
                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,
 # 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 = ();
        $id);
 
 my @rounds = ();
@@ -39,7 +39,7 @@ for my $score (@$scores) {
        }
        if ($score->{'position'} == 1) {
                if ($score->{'chosen'}) {
        }
        if ($score->{'position'} == 1) {
                if ($score->{'chosen'}) {
-                       push @{$p->[$#$p]->{'songs'}}, '';
+                       push @{$p->[$#$p]->{'songs'}}, 'Selvvalgt';
                } else {
                        push @{$p->[$#$p]->{'songs'}}, $score->{'title'};
                }
                } else {
                        push @{$p->[$#$p]->{'songs'}}, $score->{'title'};
                }
@@ -57,7 +57,9 @@ for my $score (@$scores) {
                chosen => $score->{'chosen'},
                score => $score->{'score'}
        };
                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;
 }
 
 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)),
        
        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),
        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)
 );
 );