summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xBugzilla/Bug.pm14
-rw-r--r--Bugzilla/BugMail.pm2
-rw-r--r--docs/xml/customization.xml7
-rw-r--r--globals.pl12
-rwxr-xr-xprocess_bug.cgi12
-rwxr-xr-xquery.cgi4
6 files changed, 27 insertions, 24 deletions
diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm
index 810b1daf9..aa5ad5a83 100755
--- a/Bugzilla/Bug.pm
+++ b/Bugzilla/Bug.pm
@@ -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) = (@_);
diff --git a/Bugzilla/BugMail.pm b/Bugzilla/BugMail.pm
index ab8ca2f6f..7bfefd628 100644
--- a/Bugzilla/BugMail.pm
+++ b/Bugzilla/BugMail.pm
@@ -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)};
diff --git a/docs/xml/customization.xml b/docs/xml/customization.xml
index 03bb2b1e3..f7a08da0d 100644
--- a/docs/xml/customization.xml
+++ b/docs/xml/customization.xml
@@ -748,10 +748,9 @@
</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>
diff --git a/globals.pl b/globals.pl
index 64d35f303..eb8f2af20 100644
--- a/globals.pl
+++ b/globals.pl
@@ -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,
diff --git a/process_bug.cgi b/process_bug.cgi
index 668bff404..c6ed3ca3c 100755
--- a/process_bug.cgi
+++ b/process_bug.cgi
@@ -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;
diff --git a/query.cgi b/query.cgi
index daae265d7..b82504808 100755
--- 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') {