]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Fix for bug 238869: remove %FORM from votes.cgi. Does just that, free of
authorkiko%async.com.br <>
Wed, 14 Apr 2004 01:34:59 +0000 (01:34 +0000)
committerkiko%async.com.br <>
Wed, 14 Apr 2004 01:34:59 +0000 (01:34 +0000)
XXX comments. r=vladd,justdave; a=justdave.

die %FORM die!

votes.cgi

index 937149b3d69f83133a8cf0639b262008ce194428..0573040482c91403d404b44e8bcab181d387c59b 100755 (executable)
--- a/votes.cgi
+++ b/votes.cgi
@@ -44,11 +44,11 @@ my $cgi = Bugzilla->cgi;
 #
 # If no action is defined, we default to show_bug if a bug_id is given,
 # otherwise to show_user.
-my $action = $::FORM{'action'} || 
-                                 ($::FORM{'bug_id'} ? "show_bug" : "show_user");
+my $bug_id = $cgi->param('bug_id');
+my $action = $cgi->param('action') || ($bug_id ? "show_bug" : "show_user");
 
 if ($action eq "show_bug" ||
-    ($action eq "show_user" && defined($::FORM{'user'}))) 
+    ($action eq "show_user" && defined $cgi->param('user')))
 {
     Bugzilla->login();
 }
@@ -62,9 +62,8 @@ else {
 
 # Make sure the bug ID is a positive integer representing an existing
 # bug that the user is authorized to access.
-if (defined $::FORM{'bug_id'}) {
-  ValidateBugID($::FORM{'bug_id'});
-}
+
+ValidateBugID($bug_id) if defined $bug_id;
 
 ################################################################################
 # End Data/Security Validation
@@ -90,9 +89,8 @@ exit;
 sub show_bug {
     my $cgi = Bugzilla->cgi;
 
-    my $bug_id = $::FORM{'bug_id'} 
-      || ThrowCodeError("missing_bug_id");
-      
+    ThrowCodeError("missing_bug_id") unless defined $bug_id;
+
     my $total = 0;
     my @users;
     
@@ -124,9 +122,9 @@ sub show_user {
     my $cgi = Bugzilla->cgi;
 
     # If a bug_id is given, and we're editing, we'll add it to the votes list.
-    my $bug_id = $::FORM{'bug_id'} || "";
-        
-    my $name = $::FORM{'user'} || Bugzilla->user->login;
+    $bug_id ||= "";
+    
+    my $name = $cgi->param('user') || Bugzilla->user->login;
     my $who = DBNameToIdAndCheck($name);
     my $userid = Bugzilla->user ? Bugzilla->user->id : 0;
     
@@ -236,18 +234,19 @@ sub record_votes {
     # Build a list of bug IDs for which votes have been submitted.  Votes
     # are submitted in form fields in which the field names are the bug 
     # IDs and the field values are the number of votes.
-    my @buglist = grep {/^[1-9][0-9]*$/} keys(%::FORM);
+
+    my @buglist = grep {/^[1-9][0-9]*$/} $cgi->param();
 
     # If no bugs are in the buglist, let's make sure the user gets notified
     # that their votes will get nuked if they continue.
     if (scalar(@buglist) == 0) {
-        if (!defined($::FORM{'delete_all_votes'})) {
+        if (!defined $cgi->param('delete_all_votes')) {
             print $cgi->header();
             $template->process("bug/votes/delete-all.html.tmpl", $vars)
               || ThrowTemplateError($template->error());
             exit();
         }
-        elsif ($::FORM{'delete_all_votes'} == 0) {
+        elsif ($cgi->param('delete_all_votes') == 0) {
             print $cgi->redirect("votes.cgi");
             exit();
         }
@@ -258,9 +257,11 @@ sub record_votes {
     # to access, and make sure the number of votes submitted is also
     # a non-negative integer (a series of digits not preceded by a
     # minus sign).
+    my %votes;
     foreach my $id (@buglist) {
       ValidateBugID($id);
-      detaint_natural($::FORM{$id})
+      $votes{$id} = $cgi->param($id);
+      detaint_natural($votes{$id}) 
         || ThrowUserError("votes_must_be_nonnegative");
     }
 
@@ -285,14 +286,14 @@ sub record_votes {
         while (MoreSQLData()) {
             my ($id, $prod, $max) = FetchSQLData();
             $prodcount{$prod} ||= 0;
-            $prodcount{$prod} += $::FORM{$id};
+            $prodcount{$prod} += $votes{$id};
             
             # Make sure we haven't broken the votes-per-bug limit
-            ($::FORM{$id} <= $max)               
+            ($votes{$id} <= $max)               
               || ThrowUserError("too_many_votes_for_bug",
                                 {max => $max, 
                                  product => $prod, 
-                                 votes => $::FORM{$id}});
+                                 votes => $votes{$id}});
         }
 
         # Make sure we haven't broken the votes-per-product limit
@@ -326,9 +327,9 @@ sub record_votes {
     
     # Insert the new values in their place
     foreach my $id (@buglist) {
-        if ($::FORM{$id} > 0) {
+        if ($votes{$id} > 0) {
             SendSQL("INSERT INTO votes (who, bug_id, vote_count) 
-                     VALUES ($who, $id, $::FORM{$id})");
+                     VALUES ($who, $id, ".$votes{$id}.")");
         }
         
         $affected{$id} = 1;