for my $sr (@$srounds) {
# only accept strict ordering
last if (defined($last_sround) && $sr->{'round'} != $last_sround - 1);
+ $last_sround = $sr->{'round'};
# Grab the highscore list from this round
my $scores = ccbs::db_fetch_all($dbh, 'SELECT player,SUM(score) AS score FROM scores WHERE tournament=? AND round=? GROUP BY parallel,player ORDER BY SUM(score) DESC',
ccbs::user_error("Forsøk på å avslutte en turnering med flere grupper aktive.");
}
+# Grab all the remaining groups; we order by the simple criteria:
+# 1. If player A has gone to group X and player B hasn't, player A is higher.
+# 2. If player A has higher max score than player B, player A is higher.
+my $scores = ccbs::db_fetch_all($dbh, 'SELECT player FROM scores WHERE tournament=? AND round < ? GROUP BY round,player ORDER BY round DESC,MAX(score) DESC',
+ $tournament, $last_sround);
+for my $s (@$scores) {
+ next if ($already_ordered{$s->{'player'}});
+ $dbh->do('INSERT INTO tournamentrankings (tournament, ranking, player, points) VALUES (?,?,?,?)',
+ undef, $tournament, $ranking, $s->{'player'}, points_for_place($ranking));
+ $ranking++;
+ $already_ordered{$s->{'player'}} = 1;
+}
+
$dbh->commit;
$dbh->disconnect;