Commit 9e865838 authored by travis%sedsystems.ca's avatar travis%sedsystems.ca

Bug 279748 : Move GetFieldDefs out of globals.pl (to Bugzilla::DB)

Patch by Max Kanat-Alexander <mkanat@kerio.com> r=vladd a=justdave
parent b21f214c
...@@ -183,6 +183,26 @@ sub server_version { ...@@ -183,6 +183,26 @@ sub server_version {
return $cached_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; 1;
__END__ __END__
...@@ -193,9 +213,14 @@ Bugzilla::DB - Database access routines, using L<DBI> ...@@ -193,9 +213,14 @@ Bugzilla::DB - Database access routines, using L<DBI>
=head1 SYNOPSIS =head1 SYNOPSIS
# Connection
my $dbh = Bugzilla::DB->connect_main; my $dbh = Bugzilla::DB->connect_main;
my $shadow = Bugzilla::DB->connect_shadow; my $shadow = Bugzilla::DB->connect_shadow;
# Schema Information
my @fields = GetFieldDefs();
# Deprecated
SendSQL("SELECT COUNT(*) FROM bugs"); SendSQL("SELECT COUNT(*) FROM bugs");
my $cnt = FetchOneColumn(); my $cnt = FetchOneColumn();
...@@ -209,6 +234,9 @@ Access to the old SendSQL-based database routines are also provided by ...@@ -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 importing the C<:deprecated> tag. These routines should not be used in new
code. code.
The only functions that should be used by modern, regular Bugzilla code
are the "Schema Information" functions.
=head1 CONNECTION =head1 CONNECTION
A new database handle to the required database can be created using this A new database handle to the required database can be created using this
...@@ -228,6 +256,18 @@ no shadow database is configured. ...@@ -228,6 +256,18 @@ no shadow database is configured.
=back =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 =head1 DEPRECATED ROUTINES
Several database routines are deprecated. They should not be used in new code, Several database routines are deprecated. They should not be used in new code,
......
...@@ -32,6 +32,7 @@ use strict; ...@@ -32,6 +32,7 @@ use strict;
# Include the Bugzilla CGI and general utility library. # Include the Bugzilla CGI and general utility library.
use lib qw(.); use lib qw(.);
require "CGI.pl"; require "CGI.pl";
use Bugzilla::DB;
# Retrieve this installation's configuration. # Retrieve this installation's configuration.
GetVersionTable(); GetVersionTable();
...@@ -82,7 +83,7 @@ $vars->{'open_status'} = \@open_status; ...@@ -82,7 +83,7 @@ $vars->{'open_status'} = \@open_status;
$vars->{'closed_status'} = \@closed_status; $vars->{'closed_status'} = \@closed_status;
# Generate a list of fields that can be queried. # 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; # Determine how the user would like to receive the output;
# default is JavaScript. # default is JavaScript.
......
...@@ -636,26 +636,6 @@ sub GetSelectableClassifications { ...@@ -636,26 +636,6 @@ sub GetSelectableClassifications {
return (@selectable_classes); 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 { sub ValidatePassword {
# Determines whether or not a password is valid (i.e. meets Bugzilla's # Determines whether or not a password is valid (i.e. meets Bugzilla's
......
...@@ -351,7 +351,7 @@ $vars->{'bug_severity'} = \@::legal_severity; ...@@ -351,7 +351,7 @@ $vars->{'bug_severity'} = \@::legal_severity;
# Boolean charts # Boolean charts
my @fields; my @fields;
push(@fields, { name => "noop", description => "---" }); push(@fields, { name => "noop", description => "---" });
push(@fields, GetFieldDefs()); push(@fields, Bugzilla::DB::GetFieldDefs());
$vars->{'fields'} = \@fields; $vars->{'fields'} = \@fields;
# Creating new charts - if the cmd-add value is there, we define the field # Creating new charts - if the cmd-add value is there, we define the field
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment