From 674cab796b2607c1e4441d0005d96588cedbde29 Mon Sep 17 00:00:00 2001 From: Yorhel Date: Sat, 1 Jan 2011 17:03:23 +0100 Subject: V|R Browse: Don't apply saved filters when an empty filter string is given --- lib/VNDB/Handler/Releases.pm | 3 ++- lib/VNDB/Handler/VNBrowse.pm | 3 ++- lib/VNDB/Util/Misc.pm | 8 ++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index 388df05a..06dcfd0a 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -484,9 +484,10 @@ sub browse { { name => 'o', required => 0, default => 'a', enum => ['a', 'd'] }, { name => 'q', required => 0, default => '', maxlength => 500 }, { name => 's', required => 0, default => 'title', enum => [qw|released minage title|] }, - { name => 'fil',required => 0, default => $self->authPref('filter_release') }, + { name => 'fil',required => 0, default => '' }, ); return 404 if $f->{_err}; + $f->{fil} = $self->authPref('filter_release') if !grep $_ eq 'fil', $self->reqParam(); my %compat = _fil_compat($self); my($list, $np) = !$f->{q} && !$f->{fil} && !keys %compat ? ([], 0) : $self->filFetchDB(release => $f->{fil}, \%compat, { diff --git a/lib/VNDB/Handler/VNBrowse.pm b/lib/VNDB/Handler/VNBrowse.pm index 8dba35aa..8a63b79b 100644 --- a/lib/VNDB/Handler/VNBrowse.pm +++ b/lib/VNDB/Handler/VNBrowse.pm @@ -21,10 +21,11 @@ sub list { { name => 'p', required => 0, default => 1, template => 'int' }, { name => 'q', required => 0, default => '' }, { name => 'sq', required => 0, default => '' }, - { name => 'fil',required => 0, default => $self->authPref('filter_vn') }, + { name => 'fil',required => 0, default => '' }, ); return 404 if $f->{_err}; $f->{q} ||= $f->{sq}; + $f->{fil} = $self->authPref('filter_vn') if !grep $_ eq 'fil', $self->reqParam(); my %compat = _fil_compat($self); return $self->resRedirect('/'.$1.$2.(!$3 ? '' : $1 eq 'd' ? '#'.$3 : '.'.$3), 'temp') diff --git a/lib/VNDB/Util/Misc.pm b/lib/VNDB/Util/Misc.pm index 6c7acad0..71aca7a8 100644 --- a/lib/VNDB/Util/Misc.pm +++ b/lib/VNDB/Util/Misc.pm @@ -18,7 +18,7 @@ my %filfields = ( # Arguments: # type ('vn' or 'release'), # filter overwrite (string or undef), -# when defined and not '', these filters will be used instead of the preferences, +# when defined, these filters will be used instead of the preferences, # must point to a variable, will be modified in-place with the actually used filters # options to pass to db*Get() before the filters (hashref or undef) # these options can be overwritten by the filters or the next option @@ -36,11 +36,11 @@ sub filFetchDB { # simply call the DB if we're not applying filters return $dbfunc->($self, %$pre, %$post) if !$pref && !$overwrite; - my $filters = fil_parse $overwrite || $pref, @{$filfields{$type}}; + my $filters = fil_parse $overwrite // $pref, @{$filfields{$type}}; # compatibility $self->authPref($prefname => fil_serialize $filters) - if $type eq 'vn' && _fil_vn_compat($self, $filters) && !$overwrite; + if $type eq 'vn' && _fil_vn_compat($self, $filters) && !defined $overwrite; # write the definite filter string in $overwrite $_[2] = fil_serialize({map +( @@ -49,7 +49,7 @@ sub filFetchDB { exists($pre->{$_}) ? ($_ => $pre->{$_}) : (), ), @{$filfields{$type}}}) if defined $overwrite; - return $dbfunc->($self, %$pre, %$filters, %$post) if $overwrite; + return $dbfunc->($self, %$pre, %$filters, %$post) if defined $overwrite; # since incorrect filters can throw a database error, we have to special-case # filters that originate from a preference setting, so that in case these are -- cgit v1.2.3