]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 285534: bugs.qa_contact should allow NULL
authormkanat%kerio.com <>
Tue, 15 Mar 2005 13:20:47 +0000 (13:20 +0000)
committermkanat%kerio.com <>
Tue, 15 Mar 2005 13:20:47 +0000 (13:20 +0000)
Patch By Max Kanat-Alexander <mkanat@kerio.com> r=joel, a=justdave

Bugzilla/Bug.pm
Bugzilla/DB/Schema.pm
Bugzilla/User.pm
checksetup.pl
globals.pl
post_bug.cgi
process_bug.cgi
sanitycheck.cgi

index 62719de56947e237ea69c81796b4db894aaa3e00..6c444a0133d6b4b9c49bb10c5d8b356daf489a42 100755 (executable)
@@ -372,7 +372,7 @@ sub qa_contact () {
     my ($self) = @_;
     return $self->{'qa_contact'} if exists $self->{'qa_contact'};
 
-    if (Param('useqacontact') && $self->{'qa_contact_id'} > 0) {
+    if (Param('useqacontact') && $self->{'qa_contact_id'}) {
         $self->{'qa_contact'} = new Bugzilla::User($self->{'qa_contact_id'});
     } else {
         # XXX - This is somewhat inconsistent with the assignee/reporter 
index 9a156a1b0ebfd6571d503bb0d8c3e6f8421beb47..bf93914fc4fba04abfcf813e83e8f9cc67ed4c50 100644 (file)
@@ -145,7 +145,7 @@ use constant ABSTRACT_SCHEMA => {
             resolution          => {TYPE => 'varchar(64)', NOTNULL => 1},
             target_milestone    => {TYPE => 'varchar(20)',
                                     NOTNULL => 1, DEFAULT => "'---'"},
-            qa_contact          => {TYPE => 'INT3', NOTNULL => 1},
+            qa_contact          => {TYPE => 'INT3'},
             status_whiteboard   => {TYPE => 'MEDIUMTEXT', NOTNULL => 1,
                                     DEFAULT => "''"},
             votes               => {TYPE => 'INT3', NOTNULL => 1,
index 36179fcce31ee86314f8aa97ce68c39a007b60d6..63b2f6848d98ef379ad5194fdb5b5c187859d212 100644 (file)
@@ -359,7 +359,8 @@ sub can_see_bug {
     $sth->finish;
     $self->{sthCanSeeBug} = $sth;
     return ( (($reporter == $userid) && $reporter_access)
-           || (Param('useqacontact') && ($qacontact == $userid) && $userid)
+           || (Param('useqacontact') && $qacontact && 
+              ($qacontact == $userid))
            || ($owner == $userid)
            || ($isoncclist && $cclist_access)
            || (!$missinggroup) );
index d9e082ba7f8bc2f4410d9a825f61523cf73241e2..51a264391eb3d484075f500655ea67ad2331df52 100755 (executable)
@@ -1854,12 +1854,12 @@ unless ($sth->rows) {
     # note: since admin user is not yet known, components gets a 0 for 
     # initialowner and this is fixed during final checks.
     $dbh->do("INSERT INTO components (name, product_id, description, " .
-                                     "initialowner, initialqacontact) " .
+                                     "initialowner) " .
              "VALUES (" .
              "'TestComponent', $product_id, " .
              "'This is a test component in the test product database.  " .
              "This ought to be blown away and replaced with real stuff in " .
-             "a finished installation of Bugzilla.', 0, 0)");
+             "a finished installation of Bugzilla.', 0)");
     $dbh->do(q{INSERT INTO milestones (product_id, value, sortkey) 
                VALUES (?,?,?)},
              undef, $product_id, '---', 0);
@@ -3856,6 +3856,13 @@ if(!$dbh->bz_get_field_def('bugs', 'lastdiffed')->[2]) {
 # 2005-03-03 travis@sedsystems.ca -- Bug 41972
 add_setting ("display_quips", {"on" => 1, "off" => 2 }, "on" );
 
+# 2005-03-09 qa_contact should be NULL instead of 0, bug 285534
+if (!$dbh->bz_get_field_def('bugs', 'qa_contact')->[2]) { # if it's NOT NULL
+    $dbh->bz_change_field_type('bugs', 'qa_contact', 'mediumint');
+    $dbh->do("UPDATE bugs SET qa_contact = NULL WHERE qa_contact = 0");
+    $dbh->do("UPDATE components SET initialqacontact = NULL
+               WHERE initialqacontact = 0");
+}
 
 } # END LEGACY CHECKS
 
index 6e0ebd774ab3406898e883f5c5e4f8c82f706050..ec7d396933b0c17085e3428d4c7bff104056eef8 100644 (file)
@@ -595,6 +595,7 @@ sub ValidatePassword {
 
 sub DBID_to_name {
     my ($id) = (@_);
+    return "__UNKNOWN__" if !defined $id;
     # $id should always be a positive integer
     if ($id =~ m/^([1-9][0-9]*)$/) {
         $id = $1;
index bc8a0afc58f6030c6b2312bb92a73a5ef23aa97c..0bd3b82182adfba0702567a6b902c9f0d8fb306b 100755 (executable)
@@ -154,7 +154,7 @@ if (Param("useqacontact")) {
         $qa_contact = DBNameToIdAndCheck(trim($::FORM{'qa_contact'}));
     }
 
-    if (defined $qa_contact && $qa_contact != 0) {
+    if ($qa_contact) {
         $::FORM{'qa_contact'} = $qa_contact;
         push(@bug_fields, "qa_contact");
     }
index 0b935417175c94168c60adacdeeacd85f5fef468..219e9226dd717df3161f4362833368c81565a83c 100755 (executable)
@@ -349,6 +349,9 @@ sub CheckCanChangeField {
     # START DO_NOT_CHANGE
     my ($field, $bugid, $oldvalue, $newvalue) = (@_);
 
+    $oldvalue = defined($oldvalue) ? $oldvalue : '';
+    $newvalue = defined($newvalue) ? $newvalue : '';
+
     # Return true if they haven't changed this field at all.
     if ($oldvalue eq $newvalue) {
         return 1;
@@ -436,7 +439,7 @@ sub CheckCanChangeField {
     }
     
     # Allow the QA contact to change anything else.
-    if (Param('useqacontact') && ($qacontactid == $whoid)) {
+    if (Param('useqacontact') && $qacontactid && ($qacontactid == $whoid)) {
         return 1;
     }
     
@@ -877,13 +880,17 @@ my $qacontact;
 if (defined $::FORM{'qa_contact'}
     && $::FORM{'knob'} ne "reassignbycomponent")
 {
-    $qacontact = 0;
     my $name = trim($::FORM{'qa_contact'});
     # The QA contact cannot be deleted from show_bug.cgi for a single bug!
     if ($name ne $::FORM{'dontchange'}) {
         $qacontact = DBNameToIdAndCheck($name) if ($name ne "");
         DoComma();
-        $::query .= "qa_contact = $qacontact";
+        if($qacontact) {
+            $::query .= "qa_contact = $qacontact";
+        }
+        else {
+            $::query .= "qa_contact = NULL";
+        }
     }
 }
 
@@ -967,9 +974,14 @@ SWITCH: for ($::FORM{'knob'}) {
         if (Param("useqacontact")) {
             SendSQL("SELECT initialqacontact FROM components " .
                     "WHERE components.id = $comp_id");
-            $qacontact = FetchOneColumn() || 0;
+            $qacontact = FetchOneColumn();
             DoComma();
-            $::query .= "qa_contact = $qacontact";
+            if ($qacontact) {
+                $::query .= "qa_contact = $qacontact";
+            }
+            else {
+                $::query .= "qa_contact = NULL";
+            }
         }
         last SWITCH;
     };   
index 2a51a316963054f983be9038e2ce50d30e23df6f..c3c415312523cc216579a16fbe4c792c31390297 100755 (executable)
@@ -304,7 +304,7 @@ CrossCheck("profiles", "userid",
            ['profiles_activity', 'who'],
            ["bugs", "reporter", "bug_id"],
            ["bugs", "assigned_to", "bug_id"],
-           ["bugs", "qa_contact", "bug_id", ["0"]],
+           ["bugs", "qa_contact", "bug_id"],
            ["attachments", "submitter_id", "bug_id"],
            ['flags', 'setter_id', 'bug_id'],
            ['flags', 'requestee_id', 'bug_id'],
@@ -322,7 +322,7 @@ CrossCheck("profiles", "userid",
            ["tokens", "userid"],
            ["user_group_map", "user_id"],
            ["components", "initialowner", "name"],
-           ["components", "initialqacontact", "name", ["0"]]);
+           ["components", "initialqacontact", "name"]);
 
 CrossCheck("products", "id",
            ["bugs", "product_id", "bug_id"],