summaryrefslogtreecommitdiff
path: root/lib/VNDB/VNLists.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/VNDB/VNLists.pm')
-rw-r--r--lib/VNDB/VNLists.pm101
1 files changed, 100 insertions, 1 deletions
diff --git a/lib/VNDB/VNLists.pm b/lib/VNDB/VNLists.pm
index 2a8be0a8..f2ad5d50 100644
--- a/lib/VNDB/VNLists.pm
+++ b/lib/VNDB/VNLists.pm
@@ -7,7 +7,7 @@ use Exporter 'import';
use vars ('$VERSION', '@EXPORT');
$VERSION = $VNDB::VERSION;
-@EXPORT = qw| VNListMod VNMyList |;
+@EXPORT = qw| VNListMod VNMyList VNVote RListMod RList |;
sub VNListMod {
@@ -93,5 +93,104 @@ sub VNMyList {
}
+sub VNVote {
+ my $self = shift;
+ my $id = shift;
+
+ my $uid = $self->AuthInfo()->{id};
+ return $self->ResDenied() if !$uid;
+
+ my $f = $self->FormCheck(
+ { name => 'v', required => 0, default => 0, enum => [ '-1','1'..'10'] }
+ );
+ return $self->ResNotFound() if !$f->{v};
+
+
+ $self->DBDelVote($uid, $id) if $f->{v} == -1 || $self->DBGetVotes(uid => $uid, vid => $id)->[0]{vid};
+ $self->DBAddVote($id, $uid, $f->{v}) if $f->{v} > 0;
+
+ $self->ResRedirect('/v'.$id, 'temp');
+}
+
+
+sub RListMod {
+ my $self = shift;
+ my $rid = shift;
+
+ my $f = $self->FormCheck(
+ { name => 'd', required => 0 },
+ { name => 'r', required => 0, enum => [ 0..$#$VNDB::RSTAT ] },
+ { name => 'v', required => 0, enum => [ 0..$#$VNDB::VSTAT ] },
+ );
+
+ return $self->ResNotFound if $f->{_err};
+ return $self->ResDenied if !$self->AuthInfo->{id};
+
+ if($f->{d}) {
+ $self->DBDelRList($self->AuthInfo->{id}, $rid);
+ } else {
+ $self->DBEditRList(
+ uid => $self->AuthInfo->{id},
+ rid => $rid,
+ rstat => $f->{r},
+ vstat => $f->{v},
+ );
+ }
+
+ my $r = $self->ReqHeader('Referer');
+ $r = $r && $r =~ /([vr][0-9]+)$/ ? $1 : 'r'.$rid;
+ return $self->ResRedirect('/'.$r, 'temp');
+}
+
+
+sub RList {
+ my $self = shift;
+ my $uid = shift;
+
+ my $u = $self->DBGetUser(uid => $uid)->[0];
+ return $self->ResNotFound if !$uid || !$u || (($self->AuthInfo->{id}||0) != $uid && !($u->{flags} & $VNDB::UFLAGS->{list}));
+
+ my $f = $self->FormCheck(
+ { name => 's', required => 0, default => 'title', enum => [ qw|title vote| ] },
+ { name => 'o', required => 0, default => 'a', enum => [ 'a','d' ] },
+ { name => 'p', required => 0, template => 'int', default => 1 },
+ { name => 'c', required => 0, default => 'all', enum => [ 'a'..'z', '0', 'all' ] },
+ );
+ return $self->ResNotFound if $f->{_err};
+
+ if($self->ReqMethod eq 'POST') {
+ my $frm = $self->FormCheck(
+ { name => 'vnlistchange', required => 1, enum => [ 'd', 'r0'..('r'.$#$VNDB::RSTAT), 'v0'..('v'.$#$VNDB::VSTAT) ] },
+ { name => 'rsel', required => 1, multi => 1, template => 'int' },
+ );
+ if(!$frm->{_err} && @{$frm->{rsel}}) {
+ $self->DBDelRList($uid, $frm->{rsel}) if $frm->{vnlistchange} eq 'd';
+ $self->DBEditRList(
+ uid => $uid,
+ rid => $frm->{rsel},
+ substr($frm->{vnlistchange},0,1).'stat', substr($frm->{vnlistchange},1)
+ ) if $frm->{vnlistchange} ne 'd';
+ }
+ }
+
+ my $order = $f->{s} . ($f->{o} eq 'a' ? ' ASC' : ' DESC');
+ my($list, $np) = $self->DBGetRLists(
+ uid => $uid,
+ results => 50,
+ page => $f->{p},
+ order => $order,
+ char => $f->{c} eq 'all' ? undef : $f->{c},
+ );
+
+ $self->ResAddTpl(rlist => {
+ user => $u,
+ list => $list,
+ char => $f->{c},
+ order => [ $f->{s}, $f->{o} ],
+ page => $f->{p},
+ npage => $np,
+ });
+}
+
1;