summaryrefslogtreecommitdiff
path: root/lib/VNDB/VN.pm
diff options
context:
space:
mode:
authoryorhel <yorhel@1fe2e327-d9db-4752-bcf7-ef0cb4a1748b>2008-05-19 07:01:24 +0000
committeryorhel <yorhel@1fe2e327-d9db-4752-bcf7-ef0cb4a1748b>2008-05-19 07:01:24 +0000
commit2ce770e7e5817f8838fdaf7bc7eda2a8da972962 (patch)
tree4aa6306599d38b6af01c8495d6731a838944602e /lib/VNDB/VN.pm
parent8b72b6535a553f8751842369a3abc0016d18611e (diff)
Too many changes to keep track of. See ChangeLog. (I should commit more often -.-)
git-svn-id: svn://vndb.org/vndb@13 1fe2e327-d9db-4752-bcf7-ef0cb4a1748b
Diffstat (limited to 'lib/VNDB/VN.pm')
-rw-r--r--lib/VNDB/VN.pm72
1 files changed, 48 insertions, 24 deletions
diff --git a/lib/VNDB/VN.pm b/lib/VNDB/VN.pm
index 4732e278..fd46672c 100644
--- a/lib/VNDB/VN.pm
+++ b/lib/VNDB/VN.pm
@@ -92,7 +92,7 @@ sub VNEdit {
{ name => 'anime', required => 0, default => '' },
{ name => 'img_nsfw', required => 0 },
{ name => 'categories', required => 0, default => '' },
- { name => 'relations', required => 0, default => 0 },
+ { name => 'relations', required => 0, default => '' },
{ name => 'comm', required => 0, default => '' },
);
$frm->{img_nsfw} = $frm->{img_nsfw} ? 1 : 0;
@@ -155,8 +155,8 @@ sub VNEdit {
$self->VNUpdReverse(\%old, \%new, $id, $cid);
}
# also regenerate relation graph if the title changes
- elsif($frm->{title} ne $b4{title}) {
- $self->RunCmd('relraph '.$id);
+ elsif(@$relations && $frm->{title} ne $b4{title}) {
+ $self->RunCmd('relgraph '.$id);
}
# check for new anime data
@@ -230,25 +230,49 @@ sub VNBrowse {
my $f = $self->FormCheck(
{ name => 's', required => 0, default => 'title', enum => [ qw|title released votes| ] },
{ name => 'o', required => 0, default => 'a', enum => [ 'a','d' ] },
- { name => 'i', required => 0, default => '' },
- { name => 'e', required => 0, default => '' },
- { name => 'l', required => 0, default => '' },
- { name => 'q', required => 0},
+ { name => 'q', required => 0, default => '' },
+ { name => 'sq', required => 0, default => '' },
{ name => 'p', required => 0, template => 'int', default => 1},
);
- my($r, $np) = $chr ne 'cat' || $f->{e} || $f->{i} || $f->{l} ? ($self->DBGetVN(
- $chr =~ /^[a-z0]$/ ? (
- char => $chr ) : (),
- $chr eq 'search' && $f->{q} ? (
- search => $f->{q} ) : (),
- page => $f->{p},
- $chr eq 'cat' ? (
- cati => [ split /,/, $f->{i} ],
- cate => [ split /,/, $f->{e} ],
- lang => [ grep { $VNDB::LANG->{$_} } split /,/, $f->{l} ],
- ) : (),
+ $f->{q} ||= $f->{sq};
+
+ my(@cati, @cate, @plat, @lang);
+ my $q = $f->{q};
+ if($chr eq 'search') {
+ # VNDBID
+ return $self->ResRedirect('/'.$1, 'temp')
+ if $q =~ /^([vrpud][0-9]+)$/;
+
+ if(!($q =~ s/^title://)) {
+ # categories
+ my %catl = map {
+ my $ic = $_;
+ map { $ic.$_ => $VNDB::CAT->{$ic}[1]{$_} } keys %{$VNDB::CAT->{$ic}[1]}
+ } keys %$VNDB::CAT;
+
+ $q =~ s/-(?:$catl{$_}|c:$_)//ig && push @cate, $_ for keys %catl;
+ $q =~ s/(?:$catl{$_}|c:$_)//ig && push @cati, $_ for keys %catl;
+
+ # platforms
+ $_ ne 'oth' && $q =~ s/(?:$VNDB::PLAT->{$_}|p:$_)//ig && push @plat, $_ for keys %$VNDB::PLAT;
+
+ # languages
+ $q =~ s/($VNDB::LANG->{$_}|l:$_)//ig && push @lang, $_ for keys %$VNDB::LANG;
+ }
+ }
+ $q =~ s/ +$//;
+ $q =~ s/^ +//;
+
+ my($r, $np) = $chr ne 'search' || $q || @lang || @plat || @cati || @cate ? ($self->DBGetVN(
+ $chr =~ /^[a-z0]$/ ? ( char => $chr ) : (),
+ $q ? ( search => $q ) : (),
+ @cati ? ( cati => \@cati ) : (),
+ @cate ? ( cate => \@cate ) : (),
+ @lang ? ( lang => \@lang ) : (),
+ @plat ? ( platform => \@plat ) : (),
results => 50,
+ page => $f->{p},
order => {title => 'vr.title', released => 'v.c_released', votes => 'v.c_votes'
}->{$f->{s}}.{a=>' ASC',d=>' DESC'}->{$f->{o}},
)) : ([], 0);
@@ -261,12 +285,13 @@ sub VNBrowse {
npage => $np,
page => $f->{p},
chr => $chr,
- $chr eq 'cat' ? (
- incl => $f->{i},
- excl => $f->{e},
+ $chr eq 'search' ? (
+ incl => \@cati,
+ excl => \@cate,
cat => $self->DBCategoryCount,
- lang => $self->DBLanguageCount,
- slang => $f->{l},
+ langc => $self->DBLanguageCount,
+ lang => \@lang,
+ plat => \@plat,
) : (),
order => [ $f->{s}, $f->{o} ],
},
@@ -336,4 +361,3 @@ sub VNUpdReverse { # old, new, id, cid
1;
-