]> git.sesse.net Git - ccbs/blobdiff - html/do-edit-scores.pl
Check for scores out of range, instead of giving SQL errors.
[ccbs] / html / do-edit-scores.pl
index 997d9659be23eaf5582237b44007c31b6b509ff8..be93df0536c9ef0871822406f37b1dd92bb1195a 100755 (executable)
@@ -8,7 +8,41 @@ my $dbh = ccbs::db_connect();
 my $cgi = new CGI;
 
 my $tournament = $cgi->param('tournament');
+my $round = $cgi->param('round');
+my $group = $cgi->param('group');
 
+$dbh->{AutoCommit} = 0;
+
+# Loop through all parameters and see what parameters differ between old- and current
+# versions
+for my $p ($cgi->param()) {
+       next if ($p =~ /^old-(.*?)$/);
+       next unless (defined($cgi->param('old-' . $p)));
+       next if ($cgi->param($p) eq $cgi->param('old-' . $p));
+
+       my $val = $cgi->param($p);
+       undef $val if ($val =~ /^\s*$/);
+
+       if ($p =~ /^score(\d+)-(\d+)/) {
+               if (defined($val) && ($val < 0 || $val > 10000)) {
+                       ccbs::user_error("Alle poengsummer må være mellom 0 og 10000 (inklusive).");
+               }
+       
+               $dbh->do('UPDATE scores SET score=? WHERE tournament=? AND round=? AND parallel=? AND player=? AND songnumber=?', undef,
+                       $val, $tournament, $round, $group, $1, $2);
+       } elsif ($p =~ /^playmode(\d+)-(\d+)/) {
+               $dbh->do('UPDATE scores SET playmode=? WHERE tournament=? AND round=? AND parallel=? AND player=? AND songnumber=?', undef,
+                       $val, $tournament, $round, $group, $1, $2);
+       } elsif ($p =~ /^difficulty(\d+)-(\d+)/) {
+               $dbh->do('UPDATE scores SET difficulty=? WHERE tournament=? AND round=? AND parallel=? AND player=? AND songnumber=?', undef,
+                       $val, $tournament, $round, $group, $1, $2);
+       } elsif ($p =~ /^song(\d+)-(\d+)/) {
+               $dbh->do('UPDATE scores SET song=? WHERE tournament=? AND round=? AND parallel=? AND player=? AND songnumber=? AND chosen=\'t\'', undef,
+                       $val, $tournament, $round, $group, $1, $2);
+       }
+}
+
+$dbh->commit;
 $dbh->disconnect;
 
 ccbs::print_see_other('show-tournament.pl?id=' . $tournament);