summaryrefslogtreecommitdiffstats
path: root/checksetup.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 /checksetup.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 'checksetup.pl')
-rwxr-xr-xchecksetup.pl82
1 files changed, 69 insertions, 13 deletions
diff --git a/checksetup.pl b/checksetup.pl
index 05bcf31ac..16f2a9c19 100755
--- a/checksetup.pl
+++ b/checksetup.pl
@@ -547,7 +547,7 @@ $table{bugs} =
assigned_to mediumint not null, # This is a comment.
bug_file_loc text,
bug_severity enum($severities) not null,
- bug_status enum("NEW", "ASSIGNED", "REOPENED", "RESOLVED", "VERIFIED", "CLOSED") not null,
+ bug_status enum("UNCONFIRMED", "NEW", "ASSIGNED", "REOPENED", "RESOLVED", "VERIFIED", "CLOSED") not null,
creation_ts datetime not null,
delta_ts timestamp,
short_desc mediumtext,
@@ -567,6 +567,7 @@ $table{bugs} =
# the real data comes from the keywords table.
. '
lastdiffed datetime not null,
+ everconfirmed tinyint not null,
index (assigned_to),
index (creation_ts),
@@ -656,7 +657,10 @@ $table{products} =
description mediumtext,
milestoneurl tinytext not null,
disallownew tinyint not null,
- votesperuser smallint not null';
+ votesperuser smallint not null,
+ maxvotesperbug smallint not null default 10000,
+ votestoconfirm smallint not null
+';
$table{profiles} =
@@ -670,10 +674,25 @@ $table{profiles} =
disabledtext mediumtext not null,
newemailtech tinyint not null,
mybugslink tinyint not null default 1,
+ blessgroupset bigint not null,
+
unique(login_name)';
+$table{profiles_activity} =
+ 'userid mediumint not null,
+ who mediumint not null,
+ profiles_when datetime not null,
+ fieldid mediumint not null,
+ oldvalue tinytext,
+ newvalue tinytext,
+
+ index (userid),
+ index (profiles_when),
+ index (fieldid)';
+
+
$table{namedqueries} =
'userid mediumint not null,
name varchar(64) not null,
@@ -775,22 +794,31 @@ while (my ($tabname, $fielddef) = each %table) {
# Populate groups table
###########################################################################
+sub GroupExists ($)
+{
+ my ($name) = @_;
+ my $sth = $dbh->prepare("SELECT name FROM groups WHERE name='$name'");
+ $sth->execute;
+ if ($sth->rows) {
+ return 1;
+ }
+ return 0;
+}
+
+
#
# This subroutine checks if a group exist. If not, it will be automatically
# created with the next available bit set
#
-sub AddGroup ($$)
-{
- my ($name, $desc) = @_;
+sub AddGroup {
+ my ($name, $desc, $userregexp) = @_;
+ $userregexp ||= "";
- # does the group exist?
- my $sth = $dbh->prepare("SELECT name FROM groups WHERE name='$name'");
- $sth->execute;
- return if $sth->rows;
+ return if GroupExists($name);
# get highest bit number
- $sth = $dbh->prepare("SELECT bit FROM groups ORDER BY bit DESC");
+ my $sth = $dbh->prepare("SELECT bit FROM groups ORDER BY bit DESC");
$sth->execute;
my @row = $sth->fetchrow_array;
@@ -807,21 +835,31 @@ sub AddGroup ($$)
$sth = $dbh->prepare('INSERT INTO groups
(bit, name, description, userregexp)
VALUES (?, ?, ?, ?)');
- $sth->execute($bit, $name, $desc, "");
+ $sth->execute($bit, $name, $desc, $userregexp);
+ return $bit;
}
#
-# BugZilla uses --GROUPS-- to assign various rights to it's users.
+# BugZilla uses --GROUPS-- to assign various rights to its users.
#
AddGroup 'tweakparams', 'Can tweak operating parameters';
AddGroup 'editusers', 'Can edit or disable users';
-AddGroup 'editgroupmembers', 'Can put people in and out of groups that they are members of.';
AddGroup 'creategroups', 'Can create and destroy groups.';
AddGroup 'editcomponents', 'Can create, destroy, and edit components.';
AddGroup 'editkeywords', 'Can create, destroy, and edit keywords.';
+if (!GroupExists("editbugs")) {
+ my $id = AddGroup('editbugs', 'Can edit all aspects of any bug.', ".*");
+ $dbh->do("UPDATE profiles SET groupset = groupset | $id");
+}
+
+if (!GroupExists("canconfirm")) {
+ my $id = AddGroup('canconfirm', 'Can confirm a bug.', ".*");
+ $dbh->do("UPDATE profiles SET groupset = groupset | $id");
+}
+
@@ -1427,6 +1465,24 @@ AddField('profiles', 'mybugslink', 'tinyint not null default 1');
AddField('namedqueries', 'linkinfooter', 'tinyint not null');
+# 2000-02-12 Added a new state to bugs, UNCONFIRMED. Added ability to confirm
+# a vote via bugs. Added user bits to control which users can confirm bugs
+# by themselves, and which users can edit bugs without their names on them.
+# Added a user field which controls which groups a user can put other users
+# into.
+
+my @states = ("UNCONFIRMED", "NEW", "ASSIGNED", "REOPENED", "RESOLVED",
+ "VERIFIED", "CLOSED");
+CheckEnumField('bugs', 'bug_status', @states);
+if (!GetFieldDef('bugs', 'everconfirmed')) {
+ AddField('bugs', 'everconfirmed', 'tinyint not null');
+ $dbh->do("UPDATE bugs SET everconfirmed = 1");
+}
+AddField('products', 'maxvotesperbug', 'smallint not null default 10000');
+AddField('products', 'votestoconfirm', 'smallint not null');
+AddField('profiles', 'blessgroupset', 'bigint not null');
+
+
#
# If you had to change the --TABLE-- definition in any way, then add your
# differential change code *** A B O V E *** this comment.