summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authortravis%sedsystems.ca <>2005-02-02 01:26:25 +0100
committertravis%sedsystems.ca <>2005-02-02 01:26:25 +0100
commit9e865838666f08c5505c1028a346f871559dbd90 (patch)
treecfb1cea250e120dc6a6ae9e8104a6eb0c67da149
parentb21f214cf515f005382183beb72d70e58e0a87e5 (diff)
downloadbugzilla-9e865838666f08c5505c1028a346f871559dbd90.tar.gz
bugzilla-9e865838666f08c5505c1028a346f871559dbd90.tar.xz
Bug 279748 : Move GetFieldDefs out of globals.pl (to Bugzilla::DB)
Patch by Max Kanat-Alexander <mkanat@kerio.com> r=vladd a=justdave
-rw-r--r--Bugzilla/DB.pm40
-rwxr-xr-xconfig.cgi3
-rw-r--r--globals.pl20
-rwxr-xr-xquery.cgi2
4 files changed, 43 insertions, 22 deletions
diff --git a/Bugzilla/DB.pm b/Bugzilla/DB.pm
index dcd419915..b500d748b 100644
--- a/Bugzilla/DB.pm
+++ b/Bugzilla/DB.pm
@@ -183,6 +183,26 @@ sub server_version {
return $cached_server_version;
}
+sub GetFieldDefs {
+ my $dbh = Bugzilla->dbh;
+
+ my $extra = "";
+ if (!&::UserInGroup(Param('timetrackinggroup'))) {
+ $extra = "WHERE name NOT IN ('estimated time', 'remaining_time', " .
+ "'work_time', 'percentage_complete', 'deadline')";
+ }
+
+ my @fields;
+ my $sth = $dbh->prepare("SELECT name, description
+ FROM fielddefs $extra
+ ORDER BY sortkey");
+ $sth->execute();
+ while (my $field_ref = $sth->fetchrow_hashref()) {
+ push(@fields, $field_ref);
+ }
+ return(@fields);
+}
+
1;
__END__
@@ -193,9 +213,14 @@ Bugzilla::DB - Database access routines, using L<DBI>
=head1 SYNOPSIS
+ # Connection
my $dbh = Bugzilla::DB->connect_main;
my $shadow = Bugzilla::DB->connect_shadow;
+ # Schema Information
+ my @fields = GetFieldDefs();
+
+ # Deprecated
SendSQL("SELECT COUNT(*) FROM bugs");
my $cnt = FetchOneColumn();
@@ -209,6 +234,9 @@ Access to the old SendSQL-based database routines are also provided by
importing the C<:deprecated> tag. These routines should not be used in new
code.
+The only functions that should be used by modern, regular Bugzilla code
+are the "Schema Information" functions.
+
=head1 CONNECTION
A new database handle to the required database can be created using this
@@ -228,6 +256,18 @@ no shadow database is configured.
=back
+=head1 SCHEMA INFORMATION
+
+Bugzilla::DB also contains routines to get schema information about the
+database.
+
+=over 4
+
+=item C<GetFieldDefs>
+
+Returns a list of all the "bug" fields in Bugzilla. The list contains
+hashes, with a 'name' key and a 'description' key.
+
=head1 DEPRECATED ROUTINES
Several database routines are deprecated. They should not be used in new code,
diff --git a/config.cgi b/config.cgi
index a2c22d001..2d0505db8 100755
--- a/config.cgi
+++ b/config.cgi
@@ -32,6 +32,7 @@ use strict;
# Include the Bugzilla CGI and general utility library.
use lib qw(.);
require "CGI.pl";
+use Bugzilla::DB;
# Retrieve this installation's configuration.
GetVersionTable();
@@ -82,7 +83,7 @@ $vars->{'open_status'} = \@open_status;
$vars->{'closed_status'} = \@closed_status;
# Generate a list of fields that can be queried.
-$vars->{'field'} = [GetFieldDefs()];
+$vars->{'field'} = [Bugzilla::DB::GetFieldDefs()];
# Determine how the user would like to receive the output;
# default is JavaScript.
diff --git a/globals.pl b/globals.pl
index c97467b36..1529a0f6a 100644
--- a/globals.pl
+++ b/globals.pl
@@ -636,26 +636,6 @@ sub GetSelectableClassifications {
return (@selectable_classes);
}
-sub GetFieldDefs {
- my $extra = "";
- if (!UserInGroup(Param('timetrackinggroup'))) {
- $extra = "WHERE name NOT IN ('estimated time', 'remaining_time', " .
- "'work_time', 'percentage_complete', 'deadline')";
- }
-
- my @fields;
- PushGlobalSQLState();
- SendSQL("SELECT name, description FROM fielddefs $extra ORDER BY sortkey");
- while (MoreSQLData()) {
- my ($name, $description) = FetchSQLData();
- push(@fields, { name => $name, description => $description });
- }
- PopGlobalSQLState();
-
- return(@fields);
-}
-
-
sub ValidatePassword {
# Determines whether or not a password is valid (i.e. meets Bugzilla's
diff --git a/query.cgi b/query.cgi
index 2de7e1727..cfe7702de 100755
--- a/query.cgi
+++ b/query.cgi
@@ -351,7 +351,7 @@ $vars->{'bug_severity'} = \@::legal_severity;
# Boolean charts
my @fields;
push(@fields, { name => "noop", description => "---" });
-push(@fields, GetFieldDefs());
+push(@fields, Bugzilla::DB::GetFieldDefs());
$vars->{'fields'} = \@fields;
# Creating new charts - if the cmd-add value is there, we define the field