diff options
author | yorhel <yorhel@1fe2e327-d9db-4752-bcf7-ef0cb4a1748b> | 2008-07-29 14:04:31 +0000 |
---|---|---|
committer | yorhel <yorhel@1fe2e327-d9db-4752-bcf7-ef0cb4a1748b> | 2008-07-29 14:04:31 +0000 |
commit | c77ece04d45d0ae05a4de17bcfd94df90b64758e (patch) | |
tree | 6f76aa8a27de3aa5b141011ad021e6dc3eb830f5 /lib | |
parent | 7aea19c2f8e71a7d630b613a57325c4dce1b1363 (diff) |
- Further polished the rlist feature
- Re-added old VN list, delete-only and with a warning
- Small code cleanup
git-svn-id: svn://vndb.org/vndb@75 1fe2e327-d9db-4752-bcf7-ef0cb4a1748b
Diffstat (limited to 'lib')
-rw-r--r-- | lib/VNDB.pm | 5 | ||||
-rw-r--r-- | lib/VNDB/Util/Auth.pm | 2 | ||||
-rw-r--r-- | lib/VNDB/Util/DB.pm | 41 | ||||
-rw-r--r-- | lib/VNDB/VNLists.pm | 51 | ||||
-rw-r--r-- | lib/global.pl | 4 |
5 files changed, 12 insertions, 91 deletions
diff --git a/lib/VNDB.pm b/lib/VNDB.pm index be5bc542..668c29a8 100644 --- a/lib/VNDB.pm +++ b/lib/VNDB.pm @@ -45,8 +45,7 @@ my %VNDBuris = ( # wildcards: * -> (.+), + -> ([0-9]+) edit => sub { shift->UsrEdit(shift) }, del => sub { shift->UsrDel(shift) }, list => sub { shift->RList(shift) }, - #vlist => sub { shift->VNMyList(shift) }, - #votes => sub { shift->VNVotes(shift) }, + vlist => sub { shift->VNMyList(shift) }, hist => {'*'=> sub { shift->History('u', shift, $_[1]) } }, }, # visual novels @@ -61,7 +60,6 @@ my %VNDBuris = ( # wildcards: * -> (.+), + -> ([0-9]+) rg => sub { shift->VNPage(shift, shift) }, edit => sub { shift->VNEdit(shift) }, vote => sub { shift->VNVote(shift) }, - #list => sub { shift->VNListMod(shift) }, add => sub { shift->REdit('v', shift) }, lock => sub { shift->VNLock(shift) }, hide => sub { shift->VNHide(shift) }, @@ -95,7 +93,6 @@ my %VNDBuris = ( # wildcards: * -> (.+), + -> ([0-9]+) # discussions t => { '/' => sub { shift->TIndex }, - search => sub {}, # search? '*' => { '/' => sub { shift->TTag($_[1]) }, new => sub { shift->TEdit(0, 0, $_[1]) }, diff --git a/lib/VNDB/Util/Auth.pm b/lib/VNDB/Util/Auth.pm index 2f79b512..6f265253 100644 --- a/lib/VNDB/Util/Auth.pm +++ b/lib/VNDB/Util/Auth.pm @@ -89,6 +89,7 @@ sub _AuthCheck { return 4 if !defined $d->{id}; return 5 if !$d->{rank}; + $d->{oldvnlist} = $self->DBGetVNList(uid => $d->{id}, results => 1)->[0] ? 1 : 0; $info->{_auth} = $d; return 1; @@ -110,6 +111,7 @@ sub AuthAddTpl { AuthMail => $info->{_auth}{mail}, AuthId => $info->{_auth}{id}, AuthNsfw => $info->{_auth}{flags} & $VNDB::UFLAGS->{nsfw}, + AuthOldList => $info->{_auth}{oldvnlist}, ); } else { %tpl = ( diff --git a/lib/VNDB/Util/DB.pm b/lib/VNDB/Util/DB.pm index fdefa6e6..76a9a790 100644 --- a/lib/VNDB/Util/DB.pm +++ b/lib/VNDB/Util/DB.pm @@ -15,7 +15,7 @@ $VERSION = $VNDB::VERSION; DBLanguageCount DBCategoryCount DBTableCount DBGetHist DBLockItem DBIncId DBGetUser DBAddUser DBUpdateUser DBDelUser DBGetVotes DBVoteStats DBAddVote DBDelVote - DBGetVNList DBVNListStats DBAddVNList DBEditVNList DBDelVNList + DBGetVNList DBDelVNList DBGetRList DBGetRLists DBEditRList DBDelRList DBGetVN DBAddVN DBEditVN DBHideVN DBUndefRG DBVNCache DBGetRelease DBAddRelease DBEditRelease DBHideRelease @@ -357,6 +357,7 @@ sub DBDelUser { # uid my($s, $id) = @_; $s->DBExec($_, $id) for ( q|DELETE FROM vnlists WHERE uid = %d|, + q|DELETE FROM rlists WHERE uid = %d|, q|DELETE FROM votes WHERE uid = %d|, q|UPDATE changes SET requester = 0 WHERE requester = %d|, q|UPDATE threads_posts SET uid = 0 WHERE uid = %d|, @@ -493,44 +494,6 @@ sub DBGetVNList { # %options->{ uid vid hide order results page status } } -sub DBVNListStats { # uid|vid => id - my($s, $col, $id) = @_; - my $r = [ map 0, 0..$#$VNDB::LSTAT ], - my $where = $col ? 'WHERE '.$col.' = '.$id : ''; - $r->[$_->{status}] = $_->{cnt} for (@{$s->DBAll(qq| - SELECT status, COUNT(uid) as cnt - FROM vnlists - $where - GROUP BY status| - )}); - return $r; -} - - -sub DBAddVNList { # uid, vid, status, [comments] - $_[0]->DBExec(q| - INSERT INTO vnlists (uid, vid, status, date, comments) - VALUES (!l, !s)|, - [ @_[1..3], time ], $_[4]||''); -} - - -sub DBEditVNList { # %options->{ uid status comments vid } - my($s, %o) = @_; - my %set; - $set{'status = %d'} = $o{status} if defined $o{status}; - $set{'comments = !s'} = $o{comments} if defined $o{comments}; - return if !keys %set; - $s->DBExec(q| - UPDATE vnlists - SET !H - WHERE uid = %d - AND vid IN(!l)|, - \%set, $o{uid}, $o{vid} - ); -} - - sub DBDelVNList { # uid, @vid # uid = 0 to delete all my($s, $uid, @vid) = @_; $uid = $uid ? 'uid = '.$uid.' AND ' : ''; diff --git a/lib/VNDB/VNLists.pm b/lib/VNDB/VNLists.pm index f2ad5d50..a50df2e4 100644 --- a/lib/VNDB/VNLists.pm +++ b/lib/VNDB/VNLists.pm @@ -7,33 +7,7 @@ use Exporter 'import'; use vars ('$VERSION', '@EXPORT'); $VERSION = $VNDB::VERSION; -@EXPORT = qw| VNListMod VNMyList VNVote RListMod RList |; - - -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'); -} +@EXPORT = qw| VNMyList VNVote RListMod RList |; sub VNMyList { @@ -41,7 +15,7 @@ sub VNMyList { 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})); + return $self->ResNotFound if !$user || !$u || !$self->AuthInfo->{id} || $self->AuthInfo->{id} != $user; my $f = $self->FormCheck( { name => 's', required => 0, default => 'title', enum => [ qw|title date| ] }, @@ -52,24 +26,8 @@ sub VNMyList { return $self->ResNotFound if $f->{_err}; 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 $f = $self->FormCheck({ name => 'sel', required => 1, multi => 1, template => 'int' }); + $self->DBDelVNList($user, @{$f->{sel}}) if !$f->{_err}; } my $order = $f->{s} . ($f->{o} eq 'a' ? ' ASC' : ' DESC'); @@ -159,6 +117,7 @@ sub RList { return $self->ResNotFound if $f->{_err}; if($self->ReqMethod eq 'POST') { + return $self->ResDenied if $uid != $self->AuthInfo->{id}; 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' }, diff --git a/lib/global.pl b/lib/global.pl index c1ee12ab..1d18b075 100644 --- a/lib/global.pl +++ b/lib/global.pl @@ -158,14 +158,14 @@ our $CAT = { our $RSTAT = [ - '[blank]', + 'Unknown', 'Pending', 'Obtained', # hardcoded 'On loan', 'Deleted', ]; our $VSTAT = [ - '[blank]', + 'Unknown', 'Playing', 'Finished', # hardcoded 'Stalled', |