diff --git a/mozilla/webtools/bugzilla/checksetup.pl b/mozilla/webtools/bugzilla/checksetup.pl
index 5fdc19a20e0..14c52d71b89 100755
--- a/mozilla/webtools/bugzilla/checksetup.pl
+++ b/mozilla/webtools/bugzilla/checksetup.pl
@@ -190,7 +190,7 @@ unless (have_vers("Data::Dumper",0)) { push @missing,"Data::Dumper" }
unless (have_vers("DBD::mysql","1.2209")) { push @missing,"DBD::mysql" }
unless (have_vers("Date::Parse",0)) { push @missing,"Date::Parse" }
unless (have_vers("AppConfig","1.52")) { push @missing,"AppConfig" }
-unless (have_vers("Template","2.06")) { push @missing,"Template" }
+unless (have_vers("Template","2.04")) { push @missing,"Template" }
unless (have_vers("Text::Wrap","2001.0131")) { push @missing,"Text::Wrap" }
# If CGI::Carp was loaded successfully for version checking, it changes the
@@ -282,6 +282,21 @@ sub LocalVar ($$)
# Set up the defaults for the --LOCAL-- variables below:
#
+LocalVar('index_html', <<'END');
+#
+# With the introduction of a configurable index page using the
+# template toolkit, Bugzilla's main index page is now index.cgi.
+# Most web servers will allow you to use index.cgi as a directory
+# index and many come preconfigured that way, however if yours
+# doesn't you'll need an index.html file that provides redirection
+# to index.cgi. Setting $index_html to 1 below will allow
+# checksetup.pl to create one for you if it doesn't exist.
+# NOTE: checksetup.pl will not replace an existing file, so if you
+# wish to have checksetup.pl create one for you, you must
+# make sure that there isn't already an index.html
+$index_html = 0;
+END
+
my $mysql_binaries = `which mysql`;
if ($mysql_binaries =~ /no mysql/) {
# If which didn't find it, just provide a reasonable default
@@ -473,6 +488,7 @@ my $my_db_port = ${*{$main::{'db_port'}}{SCALAR}};
my $my_db_name = ${*{$main::{'db_name'}}{SCALAR}};
my $my_db_user = ${*{$main::{'db_user'}}{SCALAR}};
my $my_db_pass = ${*{$main::{'db_pass'}}{SCALAR}};
+my $my_index_html = ${*{$main::{'index_html'}}{SCALAR}};
my $my_create_htaccess = ${*{$main::{'create_htaccess'}}{SCALAR}};
my $my_webservergroup = ${*{$main::{'webservergroup'}}{SCALAR}};
my @my_severities = @{*{$main::{'severities'}}{ARRAY}};
@@ -637,6 +653,34 @@ END
}
+if ($my_index_html) {
+ if (!-e "index.html") {
+ print "Creating index.html...\n";
+ open HTML, ">index.html";
+ print HTML <<'END';
+
+
+
+
+
+
+I think you are looking for index.cgi
+
+
+END
+ close HTML;
+ }
+ else {
+ open HTML, "index.html";
+ if (! grep /index\.cgi/, ) {
+ print "\n\n";
+ print "*** It appears that you still have an old index.html hanging\n";
+ print " around. The contents of this file should be moved into a\n";
+ print " template and placed in the 'template/custom' directory.\n\n";
+ }
+ close HTML;
+ }
+}
# Just to be sure ...
unlink "data/versioncache";
@@ -2609,6 +2653,67 @@ AddField("bugs", "cclist_accessible", "tinyint not null default 1");
# using the attachment manager can record changes to attachments.
AddField("bugs_activity", "attach_id", "mediumint null");
+# 2002-01-20 dkl@redhat.com 68022
+# Drop bit, groupset, blessgroupset fields from certain tables after converting
+# all users and bugs to new group schema
+if (GetFieldDef('groups', 'bit')) {
+ my $superusergroupset = '';
+ my %bit_groups = ();
+ my $currentgroupid = 1;
+ AddField('groups', 'group_id', 'mediumint auto_increment not null');
+ AddField('profiles', 'admin', 'smallint default(0)');
+ SendSQL("select bit from groups order by bit");
+ while (my ($bit) = FetchSQLData()) {
+ $bit_groups{$bit} = $currentgroupid++;
+ }
+
+ foreach my $bit (sort keys %bit_groups) {
+ # Fix profiles table first
+ SendSQL("select userid from profiles where groupset & $bit != 0 order by userid");
+ while (my ($userid) = FetchSQLData()) {
+ PushGlobalSQLState();
+ SendSQL("insert into user_group_map values ($userid, $bit_groups{$bit}, 0)");
+ PopGlobalSQLState();
+ }
+ SendSQL("select userid from profiles where blessgroupset & $bit != 0 order by userid");
+ while (my ($userid) = FetchSQLData()) {
+ PushGlobalSQLState();
+ SendSQL("select user_id from user_group_map where user_id = $userid " .
+ "and group_id = $bit_groups{$bit}");
+ if (MoreSQLdata()) {
+ SendSQL("update user_group_map set canbless = 1 where user_id = $userid " .
+ "and group_id = $bit_groups{$bit}");
+ } else {
+ SendSQL("insert into user_group_map values ($userid, $bit_groups{$bit}, 1)");
+ }
+ PopGlobalSQLState();
+ }
+ }
+
+ # Fix super users
+ SendSQL("select userid from profiles where groupset = $superusergroupset order by userid");
+ while (my ($userid) = FetchSQLData()) {
+ PushGlobalSQLState();
+ SendSQL("update profiles set admin = 1 where userid = $userid");
+ PopGlobalSQLState();
+ }
+
+ # Fix bug groupsets
+ foreach my $bit (sort keys %bit_groups) {
+ SendSQL("select bug_id from bugs where groupset & $bit != 0 order by bug_id");
+ while (my ($id) = FetchSQLData()) {
+ PushGlobalSQLState();
+ SendSQL("insert into bug_group_map values ($id, $bit_groups{$bit})");
+ PopGlobalSQLState();
+ }
+ }
+
+ DropField('bugs', 'groupset');
+ DropField('profiles', 'groupset');
+ DropField('profiles', 'blessgroupset');
+ DropField('groups', 'bit');
+}
+
# If you had to change the --TABLE-- definition in any way, then add your
# differential change code *** A B O V E *** this comment.
#