diff options
Diffstat (limited to 'extensions/TrackingFlags/Extension.pm')
-rw-r--r-- | extensions/TrackingFlags/Extension.pm | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/extensions/TrackingFlags/Extension.pm b/extensions/TrackingFlags/Extension.pm index 426ab9065..84250859c 100644 --- a/extensions/TrackingFlags/Extension.pm +++ b/extensions/TrackingFlags/Extension.pm @@ -402,6 +402,23 @@ sub search_operator_field_override { } } +sub search_clause_structure { + my ($self, $args) = @_; + # when searching, map "eq ---" to "isempty" + my $clause = $args->{clause}; + my @tracking_flags = map { $_->name } Bugzilla::Extension::TrackingFlags::Flag->get_all; + $clause->walk_conditions(sub { + my ($clause, $condition) = @_; + if (grep { $condition->field eq $_ } @tracking_flags + and $condition->{value} eq '---') + { + $condition->{operator} = $condition->{operator} =~ /^not/ + ? 'isnotempty' + : 'isempty'; + } + }); +} + sub _tracking_flags_search_nonchanged { my ($flag_id, $search, $args) = @_; my ($bugs_table, $chart_id, $joins, $value, $operator) = |