summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla.pm27
-rw-r--r--Bugzilla/Bug.pm23
-rw-r--r--Bugzilla/BugMail.pm2
-rw-r--r--Bugzilla/Field.pm8
-rw-r--r--Bugzilla/Install/DB.pm4
-rw-r--r--Bugzilla/Migrate.pm2
-rw-r--r--Bugzilla/Search.pm7
-rw-r--r--Bugzilla/Search/Quicksearch.pm2
-rw-r--r--Bugzilla/WebService/Bug.pm6
-rwxr-xr-xeditvalues.cgi4
-rwxr-xr-xquery.cgi2
-rwxr-xr-xreport.cgi2
-rw-r--r--template/en/default/admin/custom_fields/cf-js.js.tmpl2
-rw-r--r--template/en/default/admin/custom_fields/create.html.tmpl4
-rw-r--r--template/en/default/admin/custom_fields/edit.html.tmpl4
-rw-r--r--template/en/default/admin/custom_fields/list.html.tmpl2
16 files changed, 51 insertions, 50 deletions
diff --git a/Bugzilla.pm b/Bugzilla.pm
index d97049678..c911de733 100644
--- a/Bugzilla.pm
+++ b/Bugzilla.pm
@@ -563,28 +563,27 @@ sub fields {
my $fields = $cache->{fields};
my %requested;
- if (my $types = $criteria->{type}) {
+ if (my $types = delete $criteria->{type}) {
$types = ref($types) ? $types : [$types];
%requested = map { %{ $fields->{by_type}->{$_} || {} } } @$types;
}
else {
%requested = %{ $fields->{by_name} };
}
-
- my $do_by_name = $criteria->{by_name};
- return $do_by_name ? \%requested : [values %requested];
-}
+ my $do_by_name = delete $criteria->{by_name};
-# DEPRECATED. Use fields() instead.
-sub get_fields {
- my $class = shift;
- my $criteria = shift;
- # This function may be called during installation, and Field::match
- # may fail at that time. so we want to return an empty list in that
- # case.
- my $fields = eval { Bugzilla::Field->match($criteria) } || [];
- return @$fields;
+ # Filtering before returning the fields based on
+ # the criterias.
+ foreach my $filter (keys %$criteria) {
+ foreach my $field (keys %requested) {
+ if ($requested{$field}->$filter != $criteria->{$filter}) {
+ delete $requested{$field};
+ }
+ }
+ }
+
+ return $do_by_name ? \%requested : [values %requested];
}
sub active_custom_fields {
diff --git a/Bugzilla/Bug.pm b/Bugzilla/Bug.pm
index 915ce5307..4c8922352 100644
--- a/Bugzilla/Bug.pm
+++ b/Bugzilla/Bug.pm
@@ -195,11 +195,11 @@ sub VALIDATOR_DEPENDENCIES {
version => ['product'],
);
- my @custom_deps = Bugzilla->get_fields(
- { visibility_field_id => NOT_NULL });
- foreach my $field (@custom_deps) {
- $deps{$field->name} = [$field->visibility_field->name];
+ foreach my $field (@{ Bugzilla->fields }) {
+ $deps{$field->name} = [ $field->visibility_field->name ]
+ if $field->{visibility_field_id};
}
+
$cache->{bug_validator_dependencies} = \%deps;
return \%deps;
};
@@ -242,7 +242,7 @@ use constant NUMERIC_COLUMNS => qw(
);
sub DATE_COLUMNS {
- my @fields = Bugzilla->get_fields({ type => FIELD_TYPE_DATETIME });
+ my @fields = @{ Bugzilla->fields({ type => FIELD_TYPE_DATETIME }) };
return map { $_->name } @fields;
}
@@ -739,9 +739,9 @@ sub run_create_validators {
Bugzilla::Hook::process('bug_end_of_create_validators',
{ params => $params });
- my @mandatory_fields = Bugzilla->get_fields({ is_mandatory => 1,
- enter_bug => 1,
- obsolete => 0 });
+ my @mandatory_fields = @{ Bugzilla->fields({ is_mandatory => 1,
+ enter_bug => 1,
+ obsolete => 0 }) };
foreach my $field (@mandatory_fields) {
$class->_check_field_is_mandatory($params->{$field->name}, $field,
$params);
@@ -3501,7 +3501,7 @@ sub bug_alias_to_id {
sub editable_bug_fields {
my @fields = Bugzilla->dbh->bz_table_columns('bugs');
# Obsolete custom fields are not editable.
- my @obsolete_fields = Bugzilla->get_fields({obsolete => 1, custom => 1});
+ my @obsolete_fields = @{ Bugzilla->fields({obsolete => 1, custom => 1}) };
@obsolete_fields = map { $_->name } @obsolete_fields;
foreach my $remove ("bug_id", "reporter", "creation_ts", "delta_ts",
"lastdiffed", @obsolete_fields)
@@ -4061,8 +4061,9 @@ sub AUTOLOAD {
return $self->{$attr} if defined $self->{$attr};
- $self->{_multi_selects} ||= [Bugzilla->get_fields(
- {custom => 1, type => FIELD_TYPE_MULTI_SELECT })];
+ $self->{_multi_selects} ||= Bugzilla->fields(
+ { custom => 1, type => FIELD_TYPE_MULTI_SELECT });
+
if ( grep($_->name eq $attr, @{$self->{_multi_selects}}) ) {
# There is a bug in Perl 5.10.0, which is fixed in 5.10.1,
# which taints $attr at this point. trick_taint() can go
diff --git a/Bugzilla/BugMail.pm b/Bugzilla/BugMail.pm
index c76b7dbbd..2ac575293 100644
--- a/Bugzilla/BugMail.pm
+++ b/Bugzilla/BugMail.pm
@@ -408,7 +408,7 @@ sub _get_diffs {
sub _get_new_bugmail_fields {
my $bug = shift;
- my @fields = Bugzilla->get_fields({obsolete => 0, mailhead => 1});
+ my @fields = @{ Bugzilla->fields({obsolete => 0, in_new_bugmail => 1}) };
my @diffs;
foreach my $field (@fields) {
diff --git a/Bugzilla/Field.pm b/Bugzilla/Field.pm
index ee1168936..daf708179 100644
--- a/Bugzilla/Field.pm
+++ b/Bugzilla/Field.pm
@@ -28,7 +28,7 @@ Bugzilla::Field - a particular piece of information about bugs
use Data::Dumper;
# Display information about all fields.
- print Dumper(Bugzilla->get_fields());
+ print Dumper(Bugzilla->fields());
# Display information about non-obsolete custom fields.
print Dumper(Bugzilla->active_custom_fields);
@@ -36,9 +36,9 @@ Bugzilla::Field - a particular piece of information about bugs
use Bugzilla::Field;
# Display information about non-obsolete custom fields.
- # Bugzilla->get_fields() is a wrapper around Bugzilla::Field->match(),
- # so both methods take the same arguments.
- print Dumper(Bugzilla::Field->match({ obsolete => 0, custom => 1 }));
+ # Bugzilla->fields() is a wrapper around Bugzilla::Field->get_all(),
+ # with arguments which filter the fields before returning them.
+ print Dumper(Bugzilla->fields({ obsolete => 0, custom => 1 }));
# Create or update a custom field or field definition.
my $field = Bugzilla::Field->create(
diff --git a/Bugzilla/Install/DB.pm b/Bugzilla/Install/DB.pm
index 01270aab6..bfce7779f 100644
--- a/Bugzilla/Install/DB.pm
+++ b/Bugzilla/Install/DB.pm
@@ -3257,9 +3257,9 @@ sub _fix_logincookies_ipaddr {
}
sub _fix_invalid_custom_field_names {
- my @fields = Bugzilla->get_fields({ custom => 1 });
+ my $fields = Bugzilla->fields({ custom => 1 });
- foreach my $field (@fields) {
+ foreach my $field (@$fields) {
next if $field->name =~ /^[a-zA-Z0-9_]+$/;
# The field name is illegal and can break the DB. Kill the field!
$field->set_obsolete(1);
diff --git a/Bugzilla/Migrate.pm b/Bugzilla/Migrate.pm
index e72c5c52e..8c3840800 100644
--- a/Bugzilla/Migrate.pm
+++ b/Bugzilla/Migrate.pm
@@ -254,7 +254,7 @@ sub debug {
sub bug_fields {
my $self = shift;
- $self->{bug_fields} ||= { map { $_->{name} => $_ } Bugzilla->get_fields };
+ $self->{bug_fields} ||= Bugzilla->fields({ by_name => 1 });
return $self->{bug_fields};
}
diff --git a/Bugzilla/Search.pm b/Bugzilla/Search.pm
index abd3fd53e..cde1f8e35 100644
--- a/Bugzilla/Search.pm
+++ b/Bugzilla/Search.pm
@@ -557,7 +557,8 @@ sub COLUMNS {
}
# Do the actual column-getting from fielddefs, now.
- foreach my $field (Bugzilla->get_fields({ obsolete => 0, buglist => 1 })) {
+ my @fields = @{ Bugzilla->fields({ obsolete => 0, buglist => 1 }) };
+ foreach my $field (@fields) {
my $id = $field->name;
$id = $old_names{$id} if exists $old_names{$id};
my $sql;
@@ -593,8 +594,8 @@ sub REPORT_COLUMNS {
flagtypes.name keywords relevance);
# Multi-select fields are not currently supported.
- my @multi_selects = Bugzilla->get_fields(
- { obsolete => 0, type => FIELD_TYPE_MULTI_SELECT });
+ my @multi_selects = @{Bugzilla->fields(
+ { obsolete => 0, type => FIELD_TYPE_MULTI_SELECT })};
push(@no_report_columns, map { $_->name } @multi_selects);
# If you're not a time-tracker, you can't use time-tracking
diff --git a/Bugzilla/Search/Quicksearch.pm b/Bugzilla/Search/Quicksearch.pm
index b96dd3d4d..602b78af0 100644
--- a/Bugzilla/Search/Quicksearch.pm
+++ b/Bugzilla/Search/Quicksearch.pm
@@ -80,7 +80,7 @@ sub FIELD_MAP {
# Get all the fields whose names don't contain periods. (Fields that
# contain periods are always handled in MAPPINGS.)
my @db_fields = grep { $_->name !~ /\./ }
- Bugzilla->get_fields({ obsolete => 0 });
+ @{ Bugzilla->fields({ obsolete => 0 }) };
my %full_map = (%{ MAPPINGS() }, map { $_->name => $_->name } @db_fields);
# Eliminate the fields that start with bug_ or rep_, because those are
diff --git a/Bugzilla/WebService/Bug.pm b/Bugzilla/WebService/Bug.pm
index 8558e04f7..953355385 100644
--- a/Bugzilla/WebService/Bug.pm
+++ b/Bugzilla/WebService/Bug.pm
@@ -104,7 +104,7 @@ sub fields {
}
if (!defined $params->{ids} and !defined $params->{names}) {
- @fields = Bugzilla->get_fields({ obsolete => 0 });
+ @fields = @{ Bugzilla->fields({ obsolete => 0 }) };
}
my @fields_out;
@@ -558,8 +558,8 @@ sub legal_values {
my $field = Bugzilla::Bug::FIELD_MAP->{$params->{field}}
|| $params->{field};
- my @global_selects = grep { !$_->is_abnormal }
- Bugzilla->get_fields({ is_select => 1 });
+ my @global_selects =
+ @{ Bugzilla->fields({ is_select => 1, is_abnormal => 0 }) };
my $values;
if (grep($_->name eq $field, @global_selects)) {
diff --git a/editvalues.cgi b/editvalues.cgi
index 3f08a1671..53ea78512 100755
--- a/editvalues.cgi
+++ b/editvalues.cgi
@@ -75,8 +75,8 @@ my $token = $cgi->param('token');
# field = '' -> Show nice list of fields
#
if (!$cgi->param('field')) {
- my @field_list = grep { !$_->is_abnormal }
- Bugzilla->get_fields({ is_select => 1 });
+ my @field_list =
+ @{ Bugzilla->fields({ is_select => 1, is_abnormal => 0 }) };
$vars->{'fields'} = \@field_list;
$template->process("admin/fieldvalues/select-field.html.tmpl", $vars)
diff --git a/query.cgi b/query.cgi
index d45a950b2..39bee889b 100755
--- a/query.cgi
+++ b/query.cgi
@@ -225,7 +225,7 @@ $vars->{'bug_severity'} = Bugzilla::Field->new({name => 'bug_severity'})->legal_
$vars->{'resolution'} = Bugzilla::Field->new({name => 'resolution'})->legal_values;
# Boolean charts
-my @fields = Bugzilla->get_fields({ obsolete => 0 });
+my @fields = @{ Bugzilla->fields({ obsolete => 0 }) };
# If we're not in the time-tracking group, exclude time-tracking fields.
if (!Bugzilla->user->is_timetracker) {
diff --git a/report.cgi b/report.cgi
index dd5a0bb15..d3751aa67 100755
--- a/report.cgi
+++ b/report.cgi
@@ -319,7 +319,7 @@ sub get_names {
# These are all the fields we want to preserve the order of in reports.
my %fields;
- my @select_fields = Bugzilla->get_fields({ is_select => 1 });
+ my @select_fields = @{ Bugzilla->fields({ is_select => 1 }) };
foreach my $field (@select_fields) {
my @names = map($_->name, @{$field->legal_values});
unshift @names, ' ' if $field->name eq 'resolution';
diff --git a/template/en/default/admin/custom_fields/cf-js.js.tmpl b/template/en/default/admin/custom_fields/cf-js.js.tmpl
index 528b88b2d..f9c31b5c7 100644
--- a/template/en/default/admin/custom_fields/cf-js.js.tmpl
+++ b/template/en/default/admin/custom_fields/cf-js.js.tmpl
@@ -25,7 +25,7 @@ function toggleCheckbox(this_checkbox, other_checkbox_id) {
var select_values = new Array();
[% USE Bugzilla %]
-[% FOREACH sel_field = Bugzilla.get_fields({ is_select => 1 }) %]
+[% FOREACH sel_field = Bugzilla.fields({ is_select => 1 }) %]
select_values[[% sel_field.id FILTER js %]] = [
[% FOREACH legal_value = sel_field.legal_values %]
[%# Prefix components with the name of their product so that admins
diff --git a/template/en/default/admin/custom_fields/create.html.tmpl b/template/en/default/admin/custom_fields/create.html.tmpl
index fcdf73bc7..b96738473 100644
--- a/template/en/default/admin/custom_fields/create.html.tmpl
+++ b/template/en/default/admin/custom_fields/create.html.tmpl
@@ -123,7 +123,7 @@ YAHOO.util.Event.onDOMReady(function() {onChangeType(document.getElementById('ty
<select name="visibility_field_id" id="visibility_field_id"
onchange="onChangeVisibilityField()">
<option></option>
- [% FOREACH sel_field = Bugzilla.get_fields({ is_select => 1 }) %]
+ [% FOREACH sel_field = Bugzilla.fields({ is_select => 1 }) %]
<option value="[% sel_field.id FILTER html %]">
[% sel_field.description FILTER html %]
([% sel_field.name FILTER html %])
@@ -149,7 +149,7 @@ YAHOO.util.Event.onDOMReady(function() {onChangeType(document.getElementById('ty
<td>
<select disabled="disabled" name="value_field_id" id="value_field_id">
<option></option>
- [% FOREACH sel_field = Bugzilla.get_fields({ is_select => 1 }) %]
+ [% FOREACH sel_field = Bugzilla.fields({ is_select => 1 }) %]
<option value="[% sel_field.id FILTER html %]">
[% sel_field.description FILTER html %]
([% sel_field.name FILTER html %])
diff --git a/template/en/default/admin/custom_fields/edit.html.tmpl b/template/en/default/admin/custom_fields/edit.html.tmpl
index ec4e3276d..48c3396f3 100644
--- a/template/en/default/admin/custom_fields/edit.html.tmpl
+++ b/template/en/default/admin/custom_fields/edit.html.tmpl
@@ -108,7 +108,7 @@
<select name="visibility_field_id" id="visibility_field_id"
onchange="onChangeVisibilityField()">
<option></option>
- [% FOREACH sel_field = Bugzilla.get_fields({ is_select => 1 }) %]
+ [% FOREACH sel_field = Bugzilla.fields({ is_select => 1 }) %]
[% NEXT IF sel_field.id == field.id %]
<option value="[% sel_field.id FILTER html %]"
[% ' selected="selected"'
@@ -151,7 +151,7 @@
<td>
<select name="value_field_id" id="value_field_id">
<option></option>
- [% FOREACH sel_field = Bugzilla.get_fields({ is_select => 1 }) %]
+ [% FOREACH sel_field = Bugzilla.fields({ is_select => 1 }) %]
[% NEXT IF sel_field.id == field.id %]
<option value="[% sel_field.id FILTER html %]"
[% ' selected="selected"'
diff --git a/template/en/default/admin/custom_fields/list.html.tmpl b/template/en/default/admin/custom_fields/list.html.tmpl
index 385650a63..689aa0591 100644
--- a/template/en/default/admin/custom_fields/list.html.tmpl
+++ b/template/en/default/admin/custom_fields/list.html.tmpl
@@ -69,7 +69,7 @@
%]
[% USE Bugzilla %]
-[% custom_fields = Bugzilla.get_fields({ custom => 1 }) %]
+[% custom_fields = Bugzilla.fields({ custom => 1 }) %]
[%# We want to display the type name of fields, not their type ID. %]
[% overrides.type = {} %]