diff options
Diffstat (limited to 'lib/VNWeb/TT/TagPage.pm')
-rw-r--r-- | lib/VNWeb/TT/TagPage.pm | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/VNWeb/TT/TagPage.pm b/lib/VNWeb/TT/TagPage.pm index 9b76e4de..8431419e 100644 --- a/lib/VNWeb/TT/TagPage.pm +++ b/lib/VNWeb/TT/TagPage.pm @@ -108,11 +108,16 @@ sub vns_ { # URL compatibility with old filters if(!$opt->{f}->{query} && $opt->{fil}) { my $q = eval { - tuwf->compile({ advsearch => 'v' })->validate(filter_release_adv filter_parse v => $opt->{fil})->data; + my $f = filter_parse v => $opt->{fil}; + # Old URLs often had the tag ID as part of the filter, let's remove that. + $f->{tag_inc} = [ grep $_ != $t->{id}, $f->{tag_inc}->@* ] if $f->{tag_inc}; + delete $f->{tag_inc} if $f->{tag_inc} && !$f->{tag_inc}->@*; + $f = filter_vn_adv $f; + tuwf->compile({ advsearch => 'v' })->validate(@$f > 1 ? $f : undef)->data; }; if(!$q) { warn "Filter compatibility conversion failed\n$@"; - } else { + } elsif($q->{query}) { return tuwf->resRedirect(tuwf->reqPath().'?'.query_encode(%$opt, fil => undef, f => $q), 'temp'); } } |