diff options
author | 2005-02-02 00:26:25 +0000 | |
---|---|---|
committer | 2005-02-02 00:26:25 +0000 | |
commit | 9e865838666f08c5505c1028a346f871559dbd90 (patch) | |
tree | cfb1cea250e120dc6a6ae9e8104a6eb0c67da149 | |
parent | Fixing burning tinderbox created by checkin of Bug 280124 (diff) | |
download | bugzilla-9e865838666f08c5505c1028a346f871559dbd90.tar.gz bugzilla-9e865838666f08c5505c1028a346f871559dbd90.tar.bz2 bugzilla-9e865838666f08c5505c1028a346f871559dbd90.zip |
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.pm | 40 | ||||
-rwxr-xr-x | config.cgi | 3 | ||||
-rw-r--r-- | globals.pl | 20 | ||||
-rwxr-xr-x | query.cgi | 2 |
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 @@ -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 |