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.pm96
1 files changed, 96 insertions, 0 deletions
diff --git a/lib/VNDB/VNLists.pm b/lib/VNDB/VNLists.pm
new file mode 100644
index 00000000..c0f1ac1d
--- /dev/null
+++ b/lib/VNDB/VNLists.pm
@@ -0,0 +1,96 @@
+
+package VNDB::VNLists;
+
+use strict;
+use warnings;
+use Exporter 'import';
+
+use vars ('$VERSION', '@EXPORT');
+$VERSION = $VNDB::VERSION;
+@EXPORT = qw| VNListMod VNMyList |;
+
+
+sub VNListMod {
+ my $self = shift;
+ my $vid = shift;
+
+ my $uid = $self->AuthInfo()->{id};
+ return $self->ResDenied() if !$uid;
+
+ my $f = $self->FormCheck(
+ { name => 's', required => 1, enum => [ -1..$#$VNDB::LSTAT ] },
+ { name => 'c', required => 0, default => '', maxlength => 500 },
+ );
+ return $self->ResNotFound if $f->{_err};
+
+ if($f->{s} == -1) {
+ $self->DBDelVNList($uid, $vid);
+ } elsif($self->DBGetVNList(uid => $uid, vid => $vid)->[0]{vid}) {
+ $self->DBEditVNList(uid => $uid, status => $f->{s}, vid => [ $vid ],
+ $f->{s} == 6 ? ( comments => $f->{c} ) : ());
+ } else {
+ $self->DBAddVNList($uid, $vid, $f->{s}, $f->{c});
+ }
+
+ $self->ResRedirect('/v'.$vid, 'temp');
+}
+
+
+sub VNMyList {
+ my $self = shift;
+ my $user = shift;
+
+ my $u = $self->DBGetUser(uid => $user)->[0];
+ return $self->ResNotFound if !$user || !$u || (($self->AuthInfo->{id}||0) != $user && !($u->{flags} & $VNDB::UFLAGS->{list}));
+
+ my $f = $self->FormCheck(
+ { name => 's', required => 0, default => 'title', enum => [ qw|title date| ] },
+ { name => 'o', required => 0, default => 'a', enum => [ 'a','d' ] },
+ { name => 'p', required => 0, template => 'int', default => 1 },
+ { name => 't', required => 0, enum => [ -1..$#$VNDB::LSTAT ], default => -1 },
+ );
+
+ if($self->ReqMethod eq 'POST') {
+ my $frm = $self->FormCheck(
+ { name => 'vnlistchange', required => 1, enum => [ -2..$#$VNDB::LSTAT ] },
+ { name => 'comments', required => 0, default => '', maxlength => 500 },
+ { name => 'sel', required => 1, multi => 1 },
+ );
+ if(!$frm->{_err}) {
+ my @change = map { /^[0-9]+$/ ? $_ : () } @{$frm->{sel}};
+ $self->DBDelVNList($user, @change) if @change && $frm->{vnlistchange} eq '-1';
+ $self->DBEditVNList(
+ uid => $user,
+ vid => \@change,
+ $frm->{vnlistchange} eq '-2' ? (
+ comments => $frm->{comments}
+ ) : (
+ status => $frm->{vnlistchange}
+ ),
+ ) if @change && $frm->{vnlistchange} ne '-1';
+ }
+ }
+
+ my $order = $f->{s} . ($f->{o} eq 'a' ? ' ASC' : ' DESC');
+ my($list, $np) = $self->DBGetVNList(
+ uid => $u->{id},
+ order => $order,
+ results => 50,
+ page => $f->{p},
+ $f->{t} >= 0 ? (
+ status => $f->{t} ) : ()
+ );
+
+ $self->ResAddTpl(vnlist => {
+ npage => $np,
+ page => $f->{p},
+ list => $list,
+ order => [ $f->{s}, $f->{o} ],
+ user => $u,
+ status => $f->{t},
+ });
+}
+
+
+
+1;