From 4aa03da5994e4e138734f518ab3f85471a6031c8 Mon Sep 17 00:00:00 2001
From: "terry%mozilla.org" <>
Date: Fri, 24 Mar 2000 02:22:34 +0000
Subject: Added the concept of a "default milstone" for products, and make sure
that all products have at least that milestone defined.
---
checksetup.pl | 40 ++++++++++++++++++++---
editmilestones.cgi | 18 ++++++++++-
editproducts.cgi | 94 +++++++++++++++++++++++++++++++++++++-----------------
post_bug.cgi | 11 ++++++-
4 files changed, 127 insertions(+), 36 deletions(-)
diff --git a/checksetup.pl b/checksetup.pl
index a5aa6e8c2..9a11dc588 100755
--- a/checksetup.pl
+++ b/checksetup.pl
@@ -660,7 +660,8 @@ $table{products} =
disallownew tinyint not null,
votesperuser smallint not null,
maxvotesperbug smallint not null default 10000,
- votestoconfirm smallint not null
+ votestoconfirm smallint not null,
+ defaultmilestone varchar(20) not null default "---"
';
@@ -1073,8 +1074,15 @@ sub ChangeFieldType ($$$)
my $ref = GetFieldDef($table, $field);
#print "0: $$ref[0] 1: $$ref[1] 2: $$ref[2] 3: $$ref[3] 4: $$ref[4]\n";
- if ($$ref[1] ne $newtype) {
+ my $oldtype = $ref->[1];
+ if ($ref->[4]) {
+ $oldtype .= qq{ default "$ref->[4]"};
+ }
+
+ if ($oldtype ne $newtype) {
print "Updating field type $field in table $table ...\n";
+ print "old: $oldtype\n";
+ print "new: $newtype\n";
$newtype .= " NOT NULL" if $$ref[3];
$dbh->do("ALTER TABLE $table
CHANGE $field
@@ -1543,8 +1551,31 @@ if (!($sth->fetchrow_arrayref()->[0])) {
# the size of the target_milestone field in the bugs table.
ChangeFieldType('bugs', 'target_milestone',
- 'varchar(20) not null default "---"');
-ChangeFieldType('milestones', 'value', 'varchar(20) not null');
+ 'varchar(20) default "---"');
+ChangeFieldType('milestones', 'value', 'varchar(20)');
+
+
+# 2000-03-23 Added a defaultmilestone field to the products table, so that
+# we know which milestone to initially assign bugs to.
+
+if (!GetFieldDef('products', 'defaultmilestone')) {
+ AddField('products', 'defaultmilestone',
+ 'varchar(20) not null default "---"');
+ $sth = $dbh->prepare("SELECT product, defaultmilestone FROM products");
+ $sth->execute();
+ while (my ($product, $defaultmilestone) = $sth->fetchrow_array()) {
+ $product = $dbh->quote($product);
+ $defaultmilestone = $dbh->quote($defaultmilestone);
+ my $s2 = $dbh->prepare("SELECT value FROM milestones " .
+ "WHERE value = $defaultmilestone " .
+ "AND product = $product");
+ $s2->execute();
+ if (!$s2->fetchrow_array()) {
+ $dbh->do("INSERT INTO milestones(value, product) " .
+ "VALUES ($defaultmilestone, $product)");
+ }
+ }
+}
#
@@ -1563,3 +1594,4 @@ if ($regenerateshadow) {
print "Now regenerating the shadow database for all bugs.\n";
system("./processmail regenerate");
}
+unlink "data/versioncache";
diff --git a/editmilestones.cgi b/editmilestones.cgi
index b2c67e571..fcd81ea09 100755
--- a/editmilestones.cgi
+++ b/editmilestones.cgi
@@ -336,6 +336,10 @@ if ($action eq 'del') {
AND target_milestone=" . SqlQuote($milestone));
my $bugs = FetchOneColumn();
+ SendSQL("SELECT defaultmilestone FROM products " .
+ "WHERE product=" . SqlQuote($product));
+ my $defaultmilestone = FetchOneColumn();
+
print "
\n";
print "
\n";
print "
Part
\n";
@@ -369,6 +373,13 @@ one.";
"
\n";
}
+ if ($defaultmilestone eq $milestone) {
+ print "Sorry; this is the default milestone for this product, and " .
+ "so it can not be deleted.";
+ PutTrailer($localtrailer);
+ exit;
+ }
+
print "