From: preed%sigkill.com <> Date: Mon, 23 Sep 2002 00:51:54 +0000 (+0000) Subject: Bug 167485; group_id is wrong when usebuggroups is on; patch=joel, r=bbaetz/preed X-Git-Tag: bugzilla-2.14.4~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ed55b7c61cb2be5b8fcf030cb12ba3311e04f283;p=thirdparty%2Fbugzilla.git Bug 167485; group_id is wrong when usebuggroups is on; patch=joel, r=bbaetz/preed --- diff --git a/editproducts.cgi b/editproducts.cgi index f602c351ee..0b2c933389 100755 --- a/editproducts.cgi +++ b/editproducts.cgi @@ -326,6 +326,51 @@ if ($action eq 'new') { $votestoconfirm ||= 0; my $defaultmilestone = $::FORM{defaultmilestone} || "---"; + + # find the next bit first in case this operation fails; we don't calculate + # this by hand; table stolen from editgroups.cgi; see bug 167485 + my $bit = ""; + if(Param("usebuggroups")) { + my @bitvals = ('1','2','4','8','16','32','64','128','256','512','1024', + '2048','4096','8192','16384','32768', + + '65536','131072','262144','524288','1048576','2097152', + '4194304','8388608','16777216','33554432','67108864', + '134217728','268435456','536870912','1073741824', + '2147483648', + + '4294967296','8589934592','17179869184','34359738368', + '68719476736','137438953472','274877906944', + '549755813888','1099511627776','2199023255552', + '4398046511104','8796093022208','17592186044416', + '35184372088832','70368744177664','140737488355328', + + '281474976710656','562949953421312','1125899906842624', + '2251799813685248','4503599627370496','9007199254740992', + '18014398509481984','36028797018963968','72057594037927936', + '144115188075855872','288230376151711744', + '576460752303423488','1152921504606846976', + '2305843009213693952','4611686018427387904'); + + # First the next available bit + foreach my $bv (@bitvals) { + if ($bit eq "") { + SendSQL("SELECT bit FROM groups WHERE bit=" . SqlQuote($bv)); + if (!FetchOneColumn()) { + $bit = $bv; + } + } + } + if ($bit eq "") { + ShowError("Sorry, you already have the maximum number of groups " . + "defined.

You must delete a group first before you " . + "can add any more."); + PutTrailer("Back to the group list"); + exit; + } + } + + # Add the new product. SendSQL("INSERT INTO products ( " . "product, description, milestoneurl, disallownew, votesperuser, " . @@ -349,16 +394,6 @@ if ($action eq 'new') { # If we're using bug groups, then we need to create a group for this # product as well. -JMR, 2/16/00 if(Param("usebuggroups")) { - # First we need to figure out the bit for this group. We'll simply - # use the next highest bit available. We'll use a minimum bit of 256, - # to leave room for a few more Bugzilla operation groups at the bottom. - SendSQL("SELECT MAX(bit) FROM groups"); - my $bit = FetchOneColumn(); - if($bit < 256) { - $bit = 256; - } else { - $bit = $bit * 2; - } # Next we insert into the groups table SendSQL("INSERT INTO groups " . @@ -418,8 +453,6 @@ if ($action eq 'del') { FROM products WHERE product=" . SqlQuote($product)); my ($description, $milestoneurl, $disallownew) = FetchSQLData(); - my $milestonelink = $milestoneurl ? "$milestoneurl" - : "missing"; $description ||= "description missing"; $disallownew = $disallownew ? 'closed' : 'open'; @@ -439,7 +472,7 @@ if ($action eq 'del') { if (Param('usetargetmilestone')) { print "\n"; print " Milestone URL:\n"; - print " $milestonelink\n"; + print " $milestoneurl\n"; } # Added -JMR, 2/16/00 @@ -1009,10 +1042,10 @@ if ($action eq 'update') { SendSQL("UPDATE products SET product=$qp WHERE product=$qpold"); SendSQL("UPDATE versions SET program=$qp WHERE program=$qpold"); SendSQL("UPDATE milestones SET product=$qp WHERE product=$qpold"); - # Need to do an update to groups as well. If there is a corresponding - # bug group, whether usebuggroups is currently set or not, we want to - # update it so it will match in the future. If there is no group, this - # update statement will do nothing, so no harm done. -JMR, 3/8/00 + # Need to do an update to groups as well. If there is a corresponding + # bug group, whether usebuggroups is currently set or not, we want to + # update it so it will match in the future. If there is no group, this + # update statement will do nothing, so no harm done. -JMR, 3/8/00 SendSQL("UPDATE groups " . "SET name=$qp, " . "description=".SqlQuote($product." Bugs Access")." ".