]> git.ipfire.org Git - thirdparty/bugzilla.git/commitdiff
Bug 328438: Eliminate @::log_columns - Patch by Max Kanat-Alexander <mkanat@bugzilla...
authorlpsolit%gmail.com <>
Fri, 16 Jun 2006 20:37:49 +0000 (20:37 +0000)
committerlpsolit%gmail.com <>
Fri, 16 Jun 2006 20:37:49 +0000 (20:37 +0000)
Bugzilla/Bug.pm
Bugzilla/BugMail.pm
docs/xml/customization.xml
globals.pl
process_bug.cgi
query.cgi

index 810b1daf991e107ee701ae388a5b17ef17058ada..aa5ad5a83e1103a35854082accc96e0a8e4251a2 100755 (executable)
@@ -54,6 +54,7 @@ use base qw(Exporter);
     RemoveVotes CheckIfVotedConfirmed
     LogActivityEntry
     is_open_state
+    editable_bug_fields
 );
 
 #####################################################################
@@ -731,6 +732,19 @@ sub AppendComment {
     $dbh->do("UPDATE bugs SET delta_ts = ? WHERE bug_id = ?",
              undef, $timestamp, $bugid);
 }
+
+# Represents which fields from the bugs table are handled by process_bug.cgi.
+sub editable_bug_fields {
+    my @fields = Bugzilla->dbh->bz_table_columns('bugs');
+    foreach my $remove ("bug_id", "creation_ts", "delta_ts", "lastdiffed") {
+        my $location = lsearch(\@fields, $remove);
+        splice(@fields, $location, 1);
+    }
+    # Sorted because the old @::log_columns variable, which this replaces,
+    # was sorted.
+    return sort(@fields);
+}
+
 # This method is private and is not to be used outside of the Bug class.
 sub EmitDependList {
     my ($myfield, $targetfield, $bug_id) = (@_);
index ab8ca2f6f89cf0e11253712789402240b9a1f328..7bfefd628dd46d897d384c92848638d3af7b42f0 100644 (file)
@@ -131,7 +131,7 @@ sub ProcessOneBug {
     }
 
     my %values = %{$dbh->selectrow_hashref(
-        'SELECT ' . join(',', @::log_columns) . ',
+        'SELECT ' . join(',', editable_bug_fields()) . ',
                 lastdiffed AS start, LOCALTIMESTAMP(0) AS end
            FROM bugs WHERE bug_id = ?',
         undef, $id)};
index 03bb2b1e3187faff8a440c1065de9bc58da51856..f7a08da0dbfd33a5330f013d5a493c49811b3d68 100644 (file)
     </warning>
     
     <para>
-      For a list of possible field names, look in 
-      <filename>data/versioncache</filename> for the list called 
-      <filename>@::log_columns</filename>. If you need help writing custom
-      rules for your organization, ask in the newsgroup.
+      For a list of possible field names, look at the bugs table in the 
+      database. If you need help writing custom rules for your organization,
+      ask in the newsgroup.
     </para>    
   </section>   
   
index 64d35f303c41f68b3616da801bc28292aeda09fe..eb8f2af20076626ec0f0bcf7a3fef3c1a03d419f 100644 (file)
@@ -72,16 +72,6 @@ use File::Spec;
 sub GenerateVersionTable {
     my $dbh = Bugzilla->dbh;
 
-    @::log_columns = $dbh->bz_table_columns('bugs');
-
-    foreach my $i ("bug_id", "creation_ts", "delta_ts", "lastdiffed") {
-        my $w = lsearch(\@::log_columns, $i);
-        if ($w >= 0) {
-            splice(@::log_columns, $w, 1);
-        }
-    }
-    @::log_columns = (sort(@::log_columns));
-
     @::legal_priority   = get_legal_field_values("priority");
     @::legal_severity   = get_legal_field_values("bug_severity");
     @::legal_platform   = get_legal_field_values("rep_platform");
@@ -116,8 +106,6 @@ sub GenerateVersionTable {
     print $fh "#\n";
 
     require Data::Dumper;
-    print $fh (Data::Dumper->Dump([\@::log_columns],
-                                  ['*::log_columns']));
 
     print $fh (Data::Dumper->Dump([\@::legal_priority, \@::legal_severity,
                                    \@::legal_platform, \@::legal_opsys,
index 668bff4046c89c63c3da3119ca7bb08a216ed5af..c6ed3ca3c1f3cea664361729979a4a798d22f1d6 100755 (executable)
@@ -83,6 +83,8 @@ my $template = Bugzilla->template;
 my $vars = {};
 $vars->{'use_keywords'} = 1 if Bugzilla::Keyword::keyword_count();
 
+my @editable_bug_fields = editable_bug_fields();
+
 my $requiremilestone = 0;
 
 ######################################################################
@@ -1380,7 +1382,7 @@ my $delta_ts;
 sub SnapShotBug {
     my ($id) = (@_);
     my @row = $dbh->selectrow_array(q{SELECT delta_ts, } .
-                join(',', @::log_columns).q{ FROM bugs WHERE bug_id = ?},
+                join(',', @editable_bug_fields).q{ FROM bugs WHERE bug_id = ?},
                 undef, $id);
     $delta_ts = shift @row;
 
@@ -1544,7 +1546,7 @@ foreach my $id (@idlist) {
     my @oldvalues = SnapShotBug($id);
     my %oldhash;
     my %formhash;
-    foreach my $col (@::log_columns) {
+    foreach my $col (@editable_bug_fields) {
         # Consider NULL db entries to be equivalent to the empty string
         $oldvalues[$i] = defined($oldvalues[$i]) ? $oldvalues[$i] : '';
         # Convert the deadline taken from the DB into the YYYY-MM-DD format
@@ -1570,7 +1572,7 @@ foreach my $id (@idlist) {
             $formhash{'bug_status'} = $oldhash{'bug_status'};
         }
     }
-    foreach my $col (@::log_columns) {
+    foreach my $col (@editable_bug_fields) {
         # The 'resolution' field is checked by ChangeResolution(),
         # i.e. only if we effectively use it.
         next if ($col eq 'resolution');
@@ -2046,7 +2048,7 @@ foreach my $id (@idlist) {
     my @newvalues = SnapShotBug($id);
     my %newhash;
     $i = 0;
-    foreach my $col (@::log_columns) {
+    foreach my $col (@editable_bug_fields) {
         # Consider NULL db entries to be equivalent to the empty string
         $newvalues[$i] = defined($newvalues[$i]) ? $newvalues[$i] : '';
         # Convert the deadline to the YYYY-MM-DD format.
@@ -2065,7 +2067,7 @@ foreach my $id (@idlist) {
     # $msgs will store emails which have to be sent to voters, if any.
     my $msgs;
 
-    foreach my $c (@::log_columns) {
+    foreach my $c (@editable_bug_fields) {
         my $col = $c;           # We modify it, don't want to modify array
                                 # values in place.
         my $old = shift @oldvalues;
index daae265d72500f470b62a585878dd2d7a0e0ec36..b8250480893271a0deb16f1a30b07c5c099271c1 100755 (executable)
--- a/query.cgi
+++ b/query.cgi
@@ -30,6 +30,7 @@ use lib ".";
 
 require "globals.pl";
 
+use Bugzilla::Bug;
 use Bugzilla::Constants;
 use Bugzilla::Search;
 use Bugzilla::User;
@@ -44,7 +45,6 @@ use vars qw(
     @legal_platform
     @legal_priority
     @legal_severity
-    @log_columns
 );
 
 my $cgi = Bugzilla->cgi;
@@ -253,7 +253,7 @@ push @chfields, "[Bug creation]";
 
 # This is what happens when you have variables whose definition depends
 # on the DB schema, and then the underlying schema changes...
-foreach my $val (@::log_columns) {
+foreach my $val (editable_bug_fields()) {
     if ($val eq 'classification_id') {
         $val = 'classification';
     } elsif ($val eq 'product_id') {