summaryrefslogtreecommitdiff
path: root/lib/VNDB/VN.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/VNDB/VN.pm')
-rw-r--r--lib/VNDB/VN.pm73
1 files changed, 11 insertions, 62 deletions
diff --git a/lib/VNDB/VN.pm b/lib/VNDB/VN.pm
index ec1de95d..69d4e490 100644
--- a/lib/VNDB/VN.pm
+++ b/lib/VNDB/VN.pm
@@ -9,7 +9,7 @@ require bytes;
use vars ('$VERSION', '@EXPORT');
$VERSION = $VNDB::VERSION;
-@EXPORT = qw| VNPage VNEdit VNLock VNDel VNHide VNBrowse VNXML VNUpdReverse VNRecreateRel |;
+@EXPORT = qw| VNPage VNEdit VNLock VNDel VNHide VNBrowse VNXML VNUpdReverse |;
sub VNPage {
@@ -110,18 +110,12 @@ sub VNEdit {
my $l;
open(my $T, '<:raw:bytes', $tmp) || die $1;
read $T, $l, 2;
- seek $T, 0, 0;
- my($x, $y) = jpegsize($T);
close($T);
$frm->{_err} = $frm->{_err} ? [ @{$frm->{_err}}, 'nojpeg' ] : [ 'nojpeg' ]
- if $l ne pack('H*', 'ffd8');
- if(!$frm->{_err}) {
- $frm->{_err} = $frm->{_err} ? [ @{$frm->{_err}}, 'toolarge' ] : [ 'toolarge' ]
- if -s $tmp > 51200; # 50 KB max.
- $frm->{_err} = $frm->{_err} ? [ @{$frm->{_err}}, 'imgsize' ] : [ 'imgsize' ]
- if $x > 256 || $y > 400; # 256x400 max
- }
+ if $l ne pack('H*', 'ffd8') && $l ne pack('H*', '8950');
+ $frm->{_err} = $frm->{_err} ? [ @{$frm->{_err}}, 'toolarge' ] : [ 'toolarge' ]
+ if !$frm->{_err} && -s $tmp > 512*1024; # 500 KB max.
if($frm->{_err}) {
unlink $tmp;
@@ -130,6 +124,8 @@ sub VNEdit {
my $new = sprintf '%s/%02d/%d.jpg', $self->{imgpath}, $imgid%50, $imgid;
rename $tmp, $new or die $!;
chmod 0666, $new;
+ $self->RunCmd(sprintf 'coverimage %d', $imgid);
+ $imgid = -1*$imgid;
}
} elsif($id) {
$imgid = $v->{image};
@@ -151,7 +147,7 @@ sub VNEdit {
if((!$oid && $#$relations >= 0) || ($oid && $frm->{relations} ne $b4{relations})) {
my %old = $oid ? (map { $_->{id} => $_->{relation} } @{$v->{relations}}) : ();
my %new = map { $_->[1] => $_->[0] } @$relations;
- $self->VNRecreateRel($id, $self->VNUpdReverse(\%old, \%new, $id, $cid));
+ $self->VNUpdReverse(\%old, \%new, $id, $cid);
}
return $self->ResRedirect('/v'.$id.'?rev='.$cid, 'post');
@@ -161,9 +157,7 @@ sub VNEdit {
if($id) {
$frm->{$_} ||= $b4{$_} for (keys %b4);
$frm->{comm} = sprintf 'Reverted to revision %d by %s.', $v->{cid}, $v->{username} if $v->{cid} != $v->{latest};
- } else {
- $frm->{categories} = 0;
- }
+ }
$self->AddHid($frm);
$frm->{_hid} = {map{$_=>1} qw| info cat img |}
@@ -210,8 +204,8 @@ sub VNHide {
return $self->ResNotFound() if !$v;
return $self->ResDenied if !$self->AuthCan('del');
$self->DBHideVN($id, $v->{hidden}?0:1);
- $self->VNRecreateRel($id, $self->VNUpdReverse({ map { $_->{id} => $_->{relation} } @{$v->{relations}} }, {}, $id, 0))
- if @{$v->{relations}};
+ #$self->VNUpdReverse({ map { $_->{id} => $_->{relation} } @{$v->{relations}} }, {}, $id, 0)
+ # if @{$v->{relations}};
return $self->ResRedirect('/v'.$id, 'perm');
}
@@ -293,44 +287,6 @@ sub VNXML {
}
-
-sub jpegsize {
- my $stream = shift;
-
- my $MARKER = "\xFF"; # Section marker.
-
- my $SIZE_FIRST = 0xC0; # Range of segment identifier codes
- my $SIZE_LAST = 0xC3; # that hold size info.
-
- my ($x, $y, $id) = (undef, undef, "could not determine JPEG size");
-
- my ($marker, $code, $length, $data);
- my $segheader;
-
- seek $stream, 2, 0;
- while (1) {
- $length = 4;
- read $stream, $segheader, $length;
-
- ($marker, $code, $length) = unpack("a a n", $segheader);
-
- if ($marker ne $MARKER) {
- $id = "JPEG marker not found";
- last;
- } elsif((ord($code) >= $SIZE_FIRST) && (ord($code) <= $SIZE_LAST)) {
- $length = 5;
- read $stream, $data, $length;
- ($y, $x) = unpack("xnn", $data);
- $id = 'JPG';
- last;
- } else {
- seek $stream, ($length - 2), 1;
- }
- }
- return ($x, $y, $id);
-}
-
-
# Update reverse relations
sub VNUpdReverse { # old, new, id, cid
my($self, $old, $new, $id, $cid) = @_;
@@ -360,14 +316,7 @@ sub VNUpdReverse { # old, new, id, cid
);
}
- return keys %upd;
-}
-
-
-sub VNRecreateRel { # @ids
- my($s, @id) = @_;
- $s->DBUndefRG(@id);
- $s->RunCmd('relgraph '.join(' ',@id));
+ $self->RunCmd('relgraph '.join(' ', $id, keys %upd));
}