From 8c43fccb2cfe352bf02a82e2fbebf5d5fb77bf49 Mon Sep 17 00:00:00 2001 From: "gerv%gerv.net" <> Date: Fri, 5 Apr 2002 15:15:17 +0000 Subject: Bug 117760 - Templatise showvotes.cgi and incorporate doeditvotes.cgi. CVS removal of old CGIs. --- doeditvotes.cgi | 169 ---------------------------------------------------- showvotes.cgi | 181 -------------------------------------------------------- 2 files changed, 350 deletions(-) delete mode 100755 doeditvotes.cgi delete mode 100755 showvotes.cgi diff --git a/doeditvotes.cgi b/doeditvotes.cgi deleted file mode 100755 index 4d88e13c9..000000000 --- a/doeditvotes.cgi +++ /dev/null @@ -1,169 +0,0 @@ -#!/usr/bonsaitools/bin/perl -wT -# -*- Mode: perl; indent-tabs-mode: nil -*- -# -# The contents of this file are subject to the Mozilla Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is the Bugzilla Bug Tracking System. -# -# The Initial Developer of the Original Code is Netscape Communications -# Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): Terry Weissman -# Christopher Aillon - -use diagnostics; -use strict; - -use lib qw(.); - -require "CGI.pl"; - -ConnectToDatabase(); - -confirm_login(); - -###################################################################### -# Begin Data/Security Validation -###################################################################### - -# 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); - -# 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 (0 == @buglist) { - if (! defined $::FORM{'delete_all_votes'}) { - print "Content-type: text/html\n\n"; - PutHeader("Remove your votes?"); - print "

You are about to remove all of your bug votes. Are you sure you wish to remove your vote from every bug you've voted on?

"; - print qq{
\n}; - print qq{

Yes

\n}; - print qq{

No

\n}; - print qq{

Review your votes

\n}; - print qq{

\n}; - PutFooter(); - exit(); - } - elsif ($::FORM{'delete_all_votes'} == 0) { - print "Location: showvotes.cgi\n\n"; - exit(); - } -} - -# Call ValidateBugID on each bug ID to make sure it is a positive -# integer representing an existing bug that the user is authorized -# 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). -foreach my $id (@buglist) { - ValidateBugID($id); -} - -###################################################################### -# End Data/Security Validation -###################################################################### - -print "Content-type: text/html\n\n"; - -GetVersionTable(); - -my $who = DBNameToIdAndCheck($::COOKIE{'Bugzilla_login'}); - -if ( (! defined $who) || (!$who) ) { - PutHeader("Bad login."); - print qq| - The login info got confused. Please log - in (again) and try again.\n|; - PutFooter(); - exit(); -} - -# If the user is voting for bugs, make sure they aren't overstuffing -# the ballot box. -if (scalar(@buglist)) { - SendSQL("SELECT bugs.bug_id, bugs.product, products.maxvotesperbug " . - "FROM bugs, products " . - "WHERE products.product = bugs.product ". - " AND bugs.bug_id IN (" . join(", ", @buglist) . ")"); - - my %prodcount; - - while (MoreSQLData()) { - my ($id, $prod, $max) = (FetchSQLData()); - if (!defined $prodcount{$prod}) { - $prodcount{$prod} = 0; - } - $prodcount{$prod} += $::FORM{$id}; - if ($::FORM{$id} > $max) { - PutHeader("Don't overstuff!", "Illegal vote"); - print "You may only use at most $max votes for a single bug in the\n"; - print "$prod product, but you are trying to use $::FORM{$id}.\n"; - print "

Please click Back and try again.


\n"; - PutFooter(); - exit(); - } - } - - foreach my $prod (keys(%prodcount)) { - if ($prodcount{$prod} > $::prodmaxvotes{$prod}) { - PutHeader("Don't overstuff!", "Illegal vote"); - print "You may only use $::prodmaxvotes{$prod} votes for bugs in the\n"; - print "$prod product, but you are trying to use $prodcount{$prod}.\n"; - print "

Please click Back and try again.


\n"; - PutFooter(); - exit(); - } - } -} - -# Update the user's votes in the database. If the user did not submit -# any votes, they may be using a form with checkboxes to remove all their -# votes (checkboxes are not submitted along with other form data when -# they are not checked, and Bugzilla uses them to represent single votes -# for products that only allow one vote per bug). In that case, we still -# need to clear the user's votes from the database. -my %affected; -SendSQL("lock tables bugs write, votes write"); -SendSQL("select bug_id from votes where who = $who"); -while (MoreSQLData()) { - my $id = FetchOneColumn(); - $affected{$id} = 1; -} -SendSQL("delete from votes where who = $who"); -foreach my $id (@buglist) { - if (detaint_natural($::FORM{$id}) && $::FORM{$id} > 0) { - SendSQL("insert into votes (who, bug_id, count) values ($who, $id, $::FORM{$id})"); - } - $affected{$id} = 1; -} -foreach my $id (keys %affected) { - SendSQL("select sum(count) from votes where bug_id = $id"); - my $v = FetchOneColumn(); - $v ||= 0; - SendSQL("update bugs set votes = $v, delta_ts=delta_ts where bug_id = $id"); -} -SendSQL("unlock tables"); - - -PutHeader("Voting tabulated", "Voting tabulated", $::COOKIE{'Bugzilla_login'}); -print "Your votes have been recorded.\n"; -print qq{

Review your votes


\n}; -foreach my $id (keys %affected) { - CheckIfVotedConfirmed($id, $who); -} -PutFooter(); -exit(); - - diff --git a/showvotes.cgi b/showvotes.cgi deleted file mode 100755 index 6ed4bb8e4..000000000 --- a/showvotes.cgi +++ /dev/null @@ -1,181 +0,0 @@ -#!/usr/bonsaitools/bin/perl -wT -# -*- Mode: perl; indent-tabs-mode: nil -*- -# -# The contents of this file are subject to the Mozilla Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. -# -# The Original Code is the Bugzilla Bug Tracking System. -# -# The Initial Developer of the Original Code is Netscape Communications -# Corporation. Portions created by Netscape are -# Copyright (C) 1998 Netscape Communications Corporation. All -# Rights Reserved. -# -# Contributor(s): Terry Weissman -# Stephan Niemz -# Christopher Aillon - -use diagnostics; -use strict; - -use lib qw(.); - -require "CGI.pl"; - -ConnectToDatabase(); - -if (defined $::FORM{'voteon'} || (!defined $::FORM{'bug_id'} && - !defined $::FORM{'user'})) { - confirm_login(); - $::FORM{'user'} = DBNameToIdAndCheck($::COOKIE{'Bugzilla_login'}); -} else { - # Check whether or not the user is currently logged in without throwing - # an error if the user is not logged in. This function sets the value - # of $::usergroupset, the binary number that records the set of groups - # to which the user belongs and which gets used in ValidateBugID below - # to determine whether or not the user is authorized to access the bug - # whose votes are being shown or which is being voted on. - quietly_check_login(); -} - -################################################################################ -# Begin Data/Security Validation -################################################################################ - -# 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'}); -} - -# Make sure the bug ID being voted on is a positive integer representing -# an existing bug that the user is authorized to access. -if (defined $::FORM{'voteon'}) { - ValidateBugID($::FORM{'voteon'}); -} - -# Make sure the user ID is a positive integer representing an existing user. -if (defined $::FORM{'user'}) { - detaint_natural($::FORM{'user'}) - || DisplayError("The user number is invalid.") - && exit; - SendSQL("SELECT 1 FROM profiles WHERE userid = $::FORM{'user'}"); - FetchSQLData() - || DisplayError("User #$::FORM{'user'} does not exist.") - && exit; -} - -################################################################################ -# End Data/Security Validation -################################################################################ - -print "Content-type: text/html\n\n"; - -if (defined $::FORM{'bug_id'}) { - my $id = $::FORM{'bug_id'}; - my $linkedid = qq{$id}; - PutHeader("Show votes", "Show votes", "Bug $linkedid"); - SendSQL("select profiles.login_name, votes.who, votes.count from votes, profiles where votes.bug_id = " . SqlQuote($id) . " and profiles.userid = votes.who"); - print "\n"; - print "\n"; - my $sum = 0; - while (MoreSQLData()) { - my ($name, $userid, $count) = (FetchSQLData()); - print qq{\n}; - $sum += $count; - } - print "
WhoNumber of votes
$name$count
"; - print "

Total votes: $sum

\n"; -} elsif (defined $::FORM{'user'}) { - quietly_check_login(); - GetVersionTable(); - my $who = $::FORM{'user'}; - my $name = DBID_to_name($who); - PutHeader("Show votes", "Show votes", $name); - print qq{

\n}; - print "\n"; - SendSQL("lock tables bugs read, products read, votes write"); - if (defined($::FORM{'voteon'})) { - # Oh, boy, what a hack. Make sure there is an entry for this bug - # in the vote table, just so that things display right. - # Yuck yuck yuck.### - SendSQL("select votes.count from votes where votes.bug_id = $::FORM{'voteon'} and votes.who = $who"); - if (!MoreSQLData()) { - SendSQL("insert into votes (who, bug_id, count) values ($who, $::FORM{'voteon'}, 0)"); - } - } - my $canedit = (defined $::COOKIE{'Bugzilla_login'} && - $::COOKIE{'Bugzilla_login'} eq $name); - my %maxvotesperbug; - if( $canedit ) { - SendSQL("SELECT products.product, products.maxvotesperbug FROM products"); - while (MoreSQLData()) { - my ($prod, $max) = (FetchSQLData()); - $maxvotesperbug{$prod}= $max; - } - } - foreach my $product (sort(keys(%::prodmaxvotes))) { - if ($::prodmaxvotes{$product} <= 0) { - next; - } - my $qprod = value_quote($product); - SendSQL("select votes.bug_id, votes.count, bugs.short_desc, bugs.bug_status from votes, bugs where votes.who = $who and votes.bug_id = bugs.bug_id and bugs.product = " . SqlQuote($product) . "order by votes.bug_id"); - next if !MoreSQLData(); # don't show products without any votes - my $sum = 0; - print ""; - while (MoreSQLData()) { - my ($id, $count, $summary, $status) = (FetchSQLData()); - if (!defined $status) { - next; - } - my $opened = IsOpenedState($status); - my $strike = $opened ? "" : ""; - my $endstrike = $opened ? "" : ""; - $summary = html_quote($summary); - $sum += $count; - if ($canedit) { - my $min = min($::prodmaxvotes{$product}, $maxvotesperbug{$product}); - if ($min < 2) { # checkbox - my $checked = $count ? ' checked="checked"' : ''; - $count = qq{}; - } - else { # text input - my $maxlength = length $min; - $count = qq{}; - } - } - print qq{ - - - - - - -}; - } - my $plural = (($sum == 1) ? "" : "s"); - print "\n"; - } - print "
Bug \#SummaryVotes
$product
$strike$id$endstrike$summary$count
$sum vote$plural used out of\n"; - print "$::prodmaxvotes{$product} allowed.
\n"; - if ($canedit) { - print qq{\n}; - print "
To change your votes, type in new numbers (using zero to\n"; - print "mean no votes) or change the checkbox, and then click Submit.\n"; - } - print ""; - print "
\n"; - SendSQL("delete from votes where count <= 0"); - SendSQL("unlock tables"); -} - -print qq{Help! I don't understand this voting stuff}; - -PutFooter(); -- cgit v1.2.3-24-g4f1b