Commit 85e75aba authored by Tiago Mello's avatar Tiago Mello

Bug 586871: Convert all Bugzilla->get_fields calls to Bugzilla->fields

r/a=mkanat
parent e09c48b2
......@@ -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 {
......
......@@ -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
......
......@@ -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) {
......
......@@ -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(
......
......@@ -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);
......
......@@ -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};
}
......
......@@ -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
......
......@@ -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
......
......@@ -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)) {
......
......@@ -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)
......
......@@ -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) {
......
......@@ -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';
......
......@@ -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
......
......@@ -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 %])
......
......@@ -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"'
......
......@@ -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 = {} %]
......
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