summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2011-01-01 17:03:23 +0100
committerYorhel <git@yorhel.nl>2011-01-01 17:03:23 +0100
commit674cab796b2607c1e4441d0005d96588cedbde29 (patch)
treea93fd1754ad0f9124e8eaa6905b81d561e0cf4d5
parentc488ba34c41d6311eb33d1c4ce48c8990bbec24e (diff)
V|R Browse: Don't apply saved filters when an empty filter string is given
-rw-r--r--lib/VNDB/Handler/Releases.pm3
-rw-r--r--lib/VNDB/Handler/VNBrowse.pm3
-rw-r--r--lib/VNDB/Util/Misc.pm8
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