summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authoryorhel <yorhel@1fe2e327-d9db-4752-bcf7-ef0cb4a1748b>2008-07-29 14:04:31 +0000
committeryorhel <yorhel@1fe2e327-d9db-4752-bcf7-ef0cb4a1748b>2008-07-29 14:04:31 +0000
commitc77ece04d45d0ae05a4de17bcfd94df90b64758e (patch)
tree6f76aa8a27de3aa5b141011ad021e6dc3eb830f5 /lib
parent7aea19c2f8e71a7d630b613a57325c4dce1b1363 (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.pm5
-rw-r--r--lib/VNDB/Util/Auth.pm2
-rw-r--r--lib/VNDB/Util/DB.pm41
-rw-r--r--lib/VNDB/VNLists.pm51
-rw-r--r--lib/global.pl4
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',