diff options
author | yorhel <yorhel@1fe2e327-d9db-4752-bcf7-ef0cb4a1748b> | 2008-08-14 21:11:52 +0000 |
---|---|---|
committer | yorhel <yorhel@1fe2e327-d9db-4752-bcf7-ef0cb4a1748b> | 2008-08-14 21:11:52 +0000 |
commit | 2cf1c1848571f11e753dec784c7323e51b00801d (patch) | |
tree | a9502326f5dfc002e962ecaed115995db75d13fd /lib/VNDB | |
parent | 889e9b9c481170c94f0b5e773e7c39d27b921a43 (diff) |
Added screenshots table to store the dimensions of all images, moved to AJAX for determining when a thumbnail has been generated after uploading a screenshot, and got rid of the javascript image preloader
git-svn-id: svn://vndb.org/vndb@84 1fe2e327-d9db-4752-bcf7-ef0cb4a1748b
Diffstat (limited to 'lib/VNDB')
-rw-r--r-- | lib/VNDB/Util/DB.pm | 23 | ||||
-rw-r--r-- | lib/VNDB/VN.pm | 25 |
2 files changed, 37 insertions, 11 deletions
diff --git a/lib/VNDB/Util/DB.pm b/lib/VNDB/Util/DB.pm index a2f3efe3..683caec0 100644 --- a/lib/VNDB/Util/DB.pm +++ b/lib/VNDB/Util/DB.pm @@ -12,7 +12,7 @@ $VERSION = $VNDB::VERSION; @EXPORT = qw| DBInit DBCheck DBCommit DBRollBack DBExit - DBLanguageCount DBCategoryCount DBTableCount DBGetHist DBLockItem DBIncId + DBLanguageCount DBCategoryCount DBTableCount DBGetHist DBLockItem DBIncId DBAddScreenshot DBGetScreenshot DBGetUser DBAddUser DBUpdateUser DBDelUser DBGetVotes DBVoteStats DBAddVote DBDelVote DBGetVNList DBDelVNList @@ -245,6 +245,16 @@ sub DBIncId { # sequence (this is a rather low-level function... aww heck...) } +sub DBAddScreenshot { # just returns an ID + return $_[0]->DBRow(q|INSERT INTO screenshots (status) VALUES(0) RETURNING id|)->{id}; +} + + +sub DBGetScreenshot { # ids + return $_[0]->DBAll(q|SELECT * FROM screenshots WHERE id IN(!l)|, $_[1]); +} + + #-----------------------------------------------------------------------------# # A U T H / U S E R S T U F F # @@ -811,11 +821,12 @@ sub DBGetVN { # %options->{ id rev char search order results page what cati cate } if($o{what} =~ /screenshots/) { - push(@{$r->[$r{$_->{vid}}]{screenshots}}, [ $_->{scr}, $_->{nsfw} ]) for (@{$s->DBAll(q| - SELECT vid, scr, nsfw - FROM vn_screenshots - WHERE vid IN(!l) - ORDER BY scr|, + push(@{$r->[$r{$_->{vid}}]{screenshots}}, $_) && delete $_->{vid} for (@{$s->DBAll(q| + SELECT vs.vid, s.id, vs.nsfw, s.width, s.height + FROM vn_screenshots vs + JOIN screenshots s ON vs.scr = s.id + WHERE vs.vid IN(!l) + ORDER BY vs.scr|, [ keys %r ] )}); } diff --git a/lib/VNDB/VN.pm b/lib/VNDB/VN.pm index a6e5e735..e52fc2fc 100644 --- a/lib/VNDB/VN.pm +++ b/lib/VNDB/VN.pm @@ -84,7 +84,7 @@ sub VNEdit { relations => join('|||', map { $_->{relation}.','.$_->{id}.','.$_->{title} } @{$v->{relations}}), categories => join(',', map { $_->[0].$_->[1] } sort { $a->[0] cmp $b->[0] } @{$v->{categories}}), anime => join(' ', sort { $a <=> $b } map $_->{id}, @{$v->{anime}}), - screenshots => join(' ', map "$$_[0],$$_[1]", @{$v->{screenshots}}), + screenshots => join(' ', map "$$_{id},$$_{nsfw}", @{$v->{screenshots}}), ) : (); my $frm = {}; @@ -323,10 +323,25 @@ sub VNXML { sub VNScrXML { my $self = shift; - - return $self->ResNotFound if $self->ReqMethod ne 'POST'; return $self->ResDenied if !$self->AuthCan('edit'); + # check the status of recently uploaded screenshots + if($self->ReqMethod ne 'POST') { + my $ids = $self->FormCheck( + { name => 'id', required => 1, template => 'int', multi => 1 } + ); + return $self->ResNotFound if $ids->{_err}; + my $r = $self->DBGetScreenshot($ids->{id}); + return $self->ResNotFound if !@$r; + my $x = $self->ResStartXML; + $x->startTag('images'); + $x->emptyTag('image', id => $_->{id}, status => $_->{status}, width => $_->{width}, height => $_->{height}) + for (@$r); + $x->endTag('images'); + return; + } + + # upload new screenshot my $i = $self->FormCheck( { name => 'itemnumber', required => 1, template => 'int' } ); @@ -349,11 +364,11 @@ sub VNScrXML { if($id) { unlink $tmp; } else { - $id = $self->DBIncId('screenshots_seq'); + $id = $self->DBAddScreenshot; my $new = sprintf '%s/%02d/%d.jpg', $self->{sfpath}, $id%100, $id; rename $tmp, $new or die $!; chmod 0666, $new; - $self->RunCmd(sprintf 'screenshot %d', $id); + $self->RunCmd('screenshot'); } my $x = $self->ResStartXML; |