summaryrefslogtreecommitdiffstats
path: root/CGI.pl
diff options
context:
space:
mode:
authorterry%mozilla.org <>2000-02-17 14:15:20 +0100
committerterry%mozilla.org <>2000-02-17 14:15:20 +0100
commite9a32920f47ce268e3835b12abccc9fb2e1dd8c6 (patch)
tree8f1154745b807d4dee480e7b5c22d3ccb4b27f07 /CGI.pl
parent3c0ea11d42d7942f36e1704afefc55655811db5d (diff)
downloadbugzilla-e9a32920f47ce268e3835b12abccc9fb2e1dd8c6.tar.gz
bugzilla-e9a32920f47ce268e3835b12abccc9fb2e1dd8c6.tar.xz
Major spankage. Added a new state, UNCONFIRMED. Added new groups,
"editbugs" and "canconfirm". People without these states are now much more limited in what they can do. For backwards compatability, by default all users will have the editbugs and canconfirm bits on them. Installing this changes as is should only have one major visible effect -- an UNCONFIRMED state will appear in the query page. But no bugs will become in that state, until you tweak some of the new voting-related parameters you'll find when editing products.
Diffstat (limited to 'CGI.pl')
-rw-r--r--CGI.pl52
1 files changed, 45 insertions, 7 deletions
diff --git a/CGI.pl b/CGI.pl
index 157f7a9ff..af597f8bc 100644
--- a/CGI.pl
+++ b/CGI.pl
@@ -490,6 +490,9 @@ sub BuildPulldown {
if ($tag eq $default) {
$selectpart = " SELECTED";
}
+ if (!defined $desc) {
+ $desc = $tag;
+ }
$entry .= qq{<OPTION$selectpart VALUE="$tag">$desc\n};
}
$entry .= qq{</SELECT>};
@@ -515,28 +518,31 @@ sub quietly_check_login() {
$::usergroupset = '0';
my $loginok = 0;
$::disabledreason = '';
+ $::userid = 0;
if (defined $::COOKIE{"Bugzilla_login"} &&
defined $::COOKIE{"Bugzilla_logincookie"}) {
ConnectToDatabase();
if (!defined $ENV{'REMOTE_HOST'}) {
$ENV{'REMOTE_HOST'} = $ENV{'REMOTE_ADDR'};
}
- SendSQL("select profiles.groupset, profiles.login_name, " .
+ SendSQL("SELECT profiles.userid, profiles.groupset, " .
+ "profiles.login_name, " .
"profiles.login_name = " .
SqlQuote($::COOKIE{"Bugzilla_login"}) .
- " and profiles.cryptpassword = logincookies.cryptpassword " .
- "and logincookies.hostname = " .
+ " AND profiles.cryptpassword = logincookies.cryptpassword " .
+ "AND logincookies.hostname = " .
SqlQuote($ENV{"REMOTE_HOST"}) .
", profiles.disabledtext " .
- " from profiles,logincookies where logincookies.cookie = " .
+ " FROM profiles, logincookies WHERE logincookies.cookie = " .
SqlQuote($::COOKIE{"Bugzilla_logincookie"}) .
- " and profiles.userid = logincookies.userid");
+ " AND profiles.userid = logincookies.userid");
my @row;
if (@row = FetchSQLData()) {
- my ($groupset, $loginname, $ok, $disabledtext) = (@row);
+ my ($userid, $groupset, $loginname, $ok, $disabledtext) = (@row);
if ($ok) {
if ($disabledtext eq '') {
$loginok = 1;
+ $::userid = $userid;
$::usergroupset = $groupset;
$::COOKIE{"Bugzilla_login"} = $loginname; # Makes sure case
# is in
@@ -730,6 +736,7 @@ name=PleaseMailAPassword>
# Update the timestamp on our logincookie, so it'll keep on working.
SendSQL("update logincookies set lastused = null where cookie = $::COOKIE{'Bugzilla_logincookie'}");
+ return $::userid;
}
@@ -785,6 +792,37 @@ sub PutFooter {
}
+sub CheckIfVotedConfirmed {
+ my ($id, $who) = (@_);
+ SendSQL("SELECT bugs.votes, bugs.bug_status, products.votestoconfirm, " .
+ " bugs.everconfirmed " .
+ "FROM bugs, products " .
+ "WHERE bugs.bug_id = $id AND products.product = bugs.product");
+ my ($votes, $status, $votestoconfirm, $everconfirmed) = (FetchSQLData());
+ if ($votes >= $votestoconfirm && $status eq $::unconfirmedstate) {
+ SendSQL("UPDATE bugs SET bug_status = 'NEW', everconfirmed = 1 " .
+ "WHERE bug_id = $id");
+ my $fieldid = GetFieldID("bug_status");
+ SendSQL("INSERT INTO bugs_activity " .
+ "(bug_id,who,bug_when,fieldid,oldvalue,newvalue) VALUES " .
+ "($id,$who,now(),$fieldid,'$::unconfirmedstate','NEW')");
+ if (!$everconfirmed) {
+ $fieldid = GetFieldID("everconfirmed");
+ SendSQL("INSERT INTO bugs_activity " .
+ "(bug_id,who,bug_when,fieldid,oldvalue,newvalue) VALUES " .
+ "($id,$who,now(),$fieldid,'0','1')");
+ }
+ AppendComment($id, DBID_to_name($who),
+ "*** This bug has been confirmed by popular vote. ***");
+ print "<TABLE BORDER=1><TD><H2>Bug $id has been confirmed by votes.</H2>\n";
+ system("./processmail", $id);
+ print "<TD><A HREF=\"show_bug.cgi?id=$id\">Go To BUG# $id</A></TABLE>\n";
+ }
+
+}
+
+
+
sub DumpBugActivity {
my ($id, $starttime) = (@_);
my $datepart = "";
@@ -885,7 +923,7 @@ sub GetCommandMenu {
$html .= ", <a href=editparams.cgi>parameters</a>";
$html .= ", <a href=sanitycheck.cgi><NOBR>sanity check</NOBR></a>";
}
- if (UserInGroup("editusers")) {
+ if (UserInGroup("editusers") || UserInGroup("editgroupmembers")) {
$html .= ", <a href=editusers.cgi>users</a>";
}
if (UserInGroup("editcomponents")) {