From 5f60d18318a76664d5be0bb68995da1a62b1e54f Mon Sep 17 00:00:00 2001 From: Frédéric Buclin Date: Tue, 31 Jul 2012 13:18:23 +0200 Subject: Bug 733094: Do not populate $clause if there is no data r=dkl a=LpSolit --- Bugzilla/Search.pm | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'Bugzilla') diff --git a/Bugzilla/Search.pm b/Bugzilla/Search.pm index 8ae2c6ff8..e9baa124b 100644 --- a/Bugzilla/Search.pm +++ b/Bugzilla/Search.pm @@ -722,7 +722,8 @@ sub search_description { sub boolean_charts_to_custom_search { my ($self, $cgi_buffer) = @_; - my @as_params = $self->_boolean_charts->as_params; + my $boolean_charts = $self->_boolean_charts; + my @as_params = $boolean_charts ? $boolean_charts->as_params : (); # We need to start our new ids after the last custom search "f" id. # We can just pick the last id in the array because they are sorted @@ -1337,7 +1338,7 @@ sub _parse_basic_fields { } $clause->add($field_name, $operator, $pass_value); } - return $clause; + return @{$clause->children} ? $clause : undef; } sub _special_parse_bug_status { @@ -1457,7 +1458,7 @@ sub _special_parse_chfield { $clause->add($to_clause); } - return $clause; + return @{$clause->children} ? $clause : undef; } sub _special_parse_deadline { @@ -1472,8 +1473,8 @@ sub _special_parse_deadline { if (my $to = $params->{'deadlineto'}) { $clause->add('deadline', 'lessthaneq', $to); } - - return $clause; + + return @{$clause->children} ? $clause : undef; } sub _special_parse_email { @@ -1503,8 +1504,8 @@ sub _special_parse_email { $clause->add($or_clause); } - - return $clause; + + return @{$clause->children} ? $clause : undef; } sub _special_parse_resolution { @@ -1613,17 +1614,20 @@ sub _boolean_charts { } $clause->add($and_clause); } - - return $clause; + + return @{$clause->children} ? $clause : undef; } sub _custom_search { my ($self) = @_; my $params = $self->_params; + my @field_ids = $self->_field_ids; + return unless scalar @field_ids; + my $current_clause = new Bugzilla::Search::Clause($params->{j_top}); my @clause_stack; - foreach my $id ($self->_field_ids) { + foreach my $id (@field_ids) { my $field = $params->{"f$id"}; if ($field eq 'OP') { my $joiner = $params->{"j$id"}; -- cgit v1.2.3-24-g4f1b