aboutsummaryrefslogtreecommitdiffstats
path: root/editproducts.cgi
diff options
context:
space:
mode:
authorbugreport%peshkin.net <>2002-09-23 00:14:48 +0000
committerbugreport%peshkin.net <>2002-09-23 00:14:48 +0000
commit65d3dc0ec33fd76229dc02536a74ccac5408876b (patch)
treebcacbb27e99c73f9548e92408fadb2e369f0543b /editproducts.cgi
parentcf9b4ba2e757925eeb18bb63411ae30c8600c643 (diff)
downloadbugs-65d3dc0ec33fd76229dc02536a74ccac5408876b.tar
bugs-65d3dc0ec33fd76229dc02536a74ccac5408876b.tar.gz
bugs-65d3dc0ec33fd76229dc02536a74ccac5408876b.tar.bz2
bugs-65d3dc0ec33fd76229dc02536a74ccac5408876b.tar.xz
bugs-65d3dc0ec33fd76229dc02536a74ccac5408876b.zip
bug 157756 - Groups_20020716_Branch Tracking : > 55 groups now supported
r=bbaetz, gerv
Diffstat (limited to 'editproducts.cgi')
-rwxr-xr-xeditproducts.cgi185
1 files changed, 17 insertions, 168 deletions
diff --git a/editproducts.cgi b/editproducts.cgi
index 5b4c3c249..18ad4216d 100755
--- a/editproducts.cgi
+++ b/editproducts.cgi
@@ -79,9 +79,9 @@ sub CheckProduct ($)
# Displays the form to edit a products parameters
#
-sub EmitFormElements ($$$$$$$$$)
+sub EmitFormElements ($$$$$$$$)
{
- my ($product, $description, $milestoneurl, $userregexp, $disallownew,
+ my ($product, $description, $milestoneurl, $disallownew,
$votesperuser, $maxvotesperbug, $votestoconfirm, $defaultmilestone)
= @_;
@@ -110,13 +110,6 @@ sub EmitFormElements ($$$$$$$$$)
print qq{<INPUT TYPE=HIDDEN NAME="defaultmilestone" VALUE="$defaultmilestone">\n};
}
- # Added -JMR, 2/16/00
- if (Param("usebuggroups")) {
- $userregexp = value_quote($userregexp);
- print "</TR><TR>\n";
- print " <TH ALIGN=\"right\">User Regexp for Bug Group:</TH>\n";
- print " <TD><INPUT TYPE=TEXT SIZE=64 MAXLENGTH=255 NAME=\"userregexp\" VALUE=\"$userregexp\"></TD>\n";
- }
print "</TR><TR>\n";
print " <TH ALIGN=\"right\">Closed for bug entry:</TH>\n";
@@ -263,7 +256,7 @@ if ($action eq 'add') {
print "<FORM METHOD=POST ACTION=editproducts.cgi>\n";
print "<TABLE BORDER=0 CELLPADDING=4 CELLSPACING=0><TR>\n";
- EmitFormElements('', '', '', '', 0, 0, 10000, 0, "---");
+ EmitFormElements('', '', '', 0, 0, 10000, 0, "---");
print "</TR><TR>\n";
print " <TH ALIGN=\"right\">Version:</TH>\n";
@@ -315,7 +308,6 @@ if ($action eq 'new') {
my $description = trim($::FORM{description} || '');
my $milestoneurl = trim($::FORM{milestoneurl} || '');
- my $userregexp = trim($::FORM{userregexp} || '');
my $disallownew = 0;
$disallownew = 1 if $::FORM{disallownew};
my $votesperuser = $::FORM{votesperuser};
@@ -351,48 +343,20 @@ 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 " .
- "(bit, name, description, isbuggroup, userregexp) " .
+ "(name, description, isbuggroup, last_changed) " .
"VALUES (" .
- $bit . ", " .
SqlQuote($product) . ", " .
- SqlQuote($product . " Bugs Access") . ", " .
- "1, " .
- SqlQuote($userregexp) . ")");
+ SqlQuote("Access to bugs in the $product product") . ", 1, NOW())");
+ SendSQL("SELECT last_insert_id()");
+ my $gid = FetchOneColumn();
+ my $admin = GroupNameToId('admin');
+ SendSQL("INSERT INTO group_group_map (member_id, grantor_id, isbless)
+ VALUES ($admin, $gid, 0)");
+ SendSQL("INSERT INTO group_group_map (member_id, grantor_id, isbless)
+ VALUES ($admin, $gid, 1)");
- # And last, we need to add any existing users that match the regexp
- # to the group.
- # There may be a better way to do this in MySql, but I need to compare
- # the login_names to this regexp, and the only way I can think of to
- # do that is to get the list of login_names, and then update them
- # one by one if they match. Furthermore, I need to do it with two
- # separate loops, since opening a new SQL statement to do the update
- # seems to clobber the previous one.
-
- # Modified, 7/17/00, Joe Robins
- # If the userregexp is left empty, then no users should be added to
- # the bug group. As is, it was adding all users, since they all
- # matched the empty pattern.
- # In addition, I've replaced the rigamarole I was going through to
- # find matching users with a much simpler statement that lets the
- # mySQL database do the work.
- unless($userregexp eq "") {
- SendSQL("UPDATE profiles ".
- "SET groupset = groupset | " . $bit . " " .
- "WHERE LOWER(login_name) REGEXP LOWER(" . SqlQuote($userregexp) . ")");
- }
}
# Make versioncache flush
@@ -444,22 +408,6 @@ if ($action eq 'del') {
print " <TD VALIGN=\"top\">$milestonelink</TD>\n";
}
- # Added -JMR, 2/16/00
- if(Param('usebuggroups')) {
- # Get the regexp for this product.
- SendSQL("SELECT userregexp
- FROM groups
- WHERE name=" . SqlQuote($product));
- my $userregexp = FetchOneColumn();
- if(!defined $userregexp) {
- $userregexp = "<FONT COLOR=\"red\">undefined</FONT>";
- } elsif ($userregexp eq "") {
- $userregexp = "<FONT COLOR=\"blue\">blank</FONT>";
- }
- print "</TR><TR>\n";
- print " <TD VALIGN=\"top\">User Regexp for Bug Group:</TD>\n";
- print " <TD VALIGN=\"top\">$userregexp</TD>\n";
- }
print "</TR><TR>\n";
print " <TD VALIGN=\"top\">Closed for bugs:</TD>\n";
@@ -637,30 +585,6 @@ if ($action eq 'delete') {
WHERE id=$product_id");
print "Product '$product' deleted.<BR>\n";
- # Added -JMR, 2/16/00
- if (Param("usebuggroups")) {
- # We need to get the bit of the group from the table, then update the
- # groupsets of members of that group and remove the group.
- SendSQL("SELECT bit, description FROM groups " .
- "WHERE name = " . SqlQuote($product));
- my ($bit, $group_desc) = FetchSQLData();
-
- # Make sure there is a group before we try to do any deleting...
- if($bit) {
- # I'm kludging a bit so that I don't break superuser access;
- # I'm merely checking to make sure that the groupset is not
- # the superuser groupset in doing this update...
- SendSQL("UPDATE profiles " .
- "SET groupset = groupset - $bit " .
- "WHERE (groupset & $bit) " .
- "AND (groupset != 9223372036854710271)");
- print "Users dropped from group '$group_desc'.<BR>\n";
-
- SendSQL("DELETE FROM groups " .
- "WHERE bit = $bit");
- print "Group '$group_desc' deleted.<BR>\n";
- }
- }
SendSQL("UNLOCK TABLES");
@@ -690,18 +614,10 @@ if ($action eq 'edit') {
$votesperuser, $maxvotesperbug, $votestoconfirm, $defaultmilestone) =
FetchSQLData();
- my $userregexp = '';
- if(Param("usebuggroups")) {
- SendSQL("SELECT userregexp
- FROM groups
- WHERE name=" . SqlQuote($product));
- $userregexp = FetchOneColumn() || "";
- }
-
print "<FORM METHOD=POST ACTION=editproducts.cgi>\n";
print "<TABLE BORDER=0 CELLPADDING=4 CELLSPACING=0><TR>\n";
- EmitFormElements($product, $description, $milestoneurl, $userregexp,
+ EmitFormElements($product, $description, $milestoneurl,
$disallownew, $votesperuser, $maxvotesperbug,
$votestoconfirm, $defaultmilestone);
@@ -787,10 +703,6 @@ if ($action eq 'edit') {
value_quote($description) . "\">\n";
print "<INPUT TYPE=HIDDEN NAME=\"milestoneurlold\" VALUE=\"" .
value_quote($milestoneurl) . "\">\n";
- if(Param("usebuggroups")) {
- print "<INPUT TYPE=HIDDEN NAME=\"userregexpold\" VALUE=\"" .
- value_quote($userregexp) . "\">\n";
- }
print "<INPUT TYPE=HIDDEN NAME=\"disallownewold\" VALUE=\"$disallownew\">\n";
print "<INPUT TYPE=HIDDEN NAME=\"votesperuserold\" VALUE=\"$votesperuser\">\n";
print "<INPUT TYPE=HIDDEN NAME=\"maxvotesperbugold\" VALUE=\"$maxvotesperbug\">\n";
@@ -826,8 +738,6 @@ if ($action eq 'update') {
my $milestoneurlold = trim($::FORM{milestoneurlold} || '');
my $votesperuser = trim($::FORM{votesperuser} || 0);
my $votesperuserold = trim($::FORM{votesperuserold} || 0);
- my $userregexp = trim($::FORM{userregexp} || '');
- my $userregexpold = trim($::FORM{userregexpold} || '');
my $maxvotesperbug = trim($::FORM{maxvotesperbug} || 0);
my $maxvotesperbugold = trim($::FORM{maxvotesperbugold} || 0);
my $votestoconfirm = trim($::FORM{votestoconfirm} || 0);
@@ -883,68 +793,6 @@ if ($action eq 'update') {
print "Updated mile stone URL.<BR>\n";
}
- # Added -JMR, 2/16/00
- if (Param("usebuggroups") && $userregexp ne $userregexpold) {
- # This will take a little bit of work here, since there may not be
- # an existing bug group for this product, and we will also have to
- # update users groupsets.
- # First we find out if there's an existing group for this product, and
- # get its bit if there is.
- SendSQL("SELECT bit " .
- "FROM groups " .
- "WHERE name = " . SqlQuote($productold));
- my $bit = FetchOneColumn();
- if($bit) {
- # Group exists, so we do an update statement.
- SendSQL("UPDATE groups " .
- "SET userregexp = " . SqlQuote($userregexp) . " " .
- "WHERE name = " . SqlQuote($productold));
- print "Updated user regexp for bug group.<BR>\n";
- } else {
- # Group doesn't exist. Let's make it, the same way as we make a
- # group for a new product above.
- SendSQL("SELECT MAX(bit) FROM groups");
- my $tmp_bit = FetchOneColumn();
- if($tmp_bit < 256) {
- $bit = 256;
- } else {
- $bit = $tmp_bit * 2;
- }
- SendSQL("INSERT INTO groups " .
- "(bit, name, description, isbuggroup, userregexp) " .
- "values (" . $bit . ", " .
- SqlQuote($productold) . ", " .
- SqlQuote($productold . " Bugs Access") . ", " .
- "1, " .
- SqlQuote($userregexp) . ")");
- print "Created bug group.<BR>\n";
- }
-
- # And now we have to update the profiles again to add any users who
- # match the new regexp to the group. I'll do this the same way as
- # when I create a new group above. Note that I'm not taking out
- # users who matched the old regexp and not the new one; that would
- # be insanely messy. Use the group administration page for that
- # instead.
- SendSQL("SELECT login_name FROM profiles");
- my @login_list = ();
- my $this_login;
- while($this_login = FetchOneColumn()) {
- push @login_list, $this_login;
- }
- my $updated_profiles = 0;
- foreach $this_login (@login_list) {
- if($this_login =~ /$userregexp/) {
- SendSQL("UPDATE profiles " .
- "SET groupset = groupset | " . $bit . " " .
- "WHERE login_name = " . SqlQuote($this_login));
- $updated_profiles = 1;
- }
- }
- if($updated_profiles) {
- print "Added users matching regexp to group.<BR>\n";
- }
- }
if ($votesperuser ne $votesperuserold) {
SendSQL("UPDATE products
@@ -1012,9 +860,10 @@ if ($action eq 'update') {
# 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")." ".
- "WHERE name=$qpold");
+ "SET name = $qp, " .
+ "description = " .
+ SqlQuote("Access to bugs in the $product product") .
+ " WHERE name = $qpold");
print "Updated product name.<BR>\n";
}