diff options
author | yorhel <yorhel@1fe2e327-d9db-4752-bcf7-ef0cb4a1748b> | 2008-06-30 18:38:42 +0000 |
---|---|---|
committer | yorhel <yorhel@1fe2e327-d9db-4752-bcf7-ef0cb4a1748b> | 2008-06-30 18:38:42 +0000 |
commit | 65c9483112ca4a7c5887cd8331326a0e42e49800 (patch) | |
tree | 3263a06fc3517eb4d7595054dd882b0863bbd28a /lib/VNDB | |
parent | 5fd0fb77b025faf71946df483296f24e756e3657 (diff) |
Revision numers are now local to their item ID and better integrated into VNDBIDs
git-svn-id: svn://vndb.org/vndb@48 1fe2e327-d9db-4752-bcf7-ef0cb4a1748b
Diffstat (limited to 'lib/VNDB')
-rw-r--r-- | lib/VNDB/Producers.pm | 27 | ||||
-rw-r--r-- | lib/VNDB/Releases.pm | 29 | ||||
-rw-r--r-- | lib/VNDB/Util/DB.pm | 131 | ||||
-rw-r--r-- | lib/VNDB/VN.pm | 41 |
4 files changed, 107 insertions, 121 deletions
diff --git a/lib/VNDB/Producers.pm b/lib/VNDB/Producers.pm index ba800c7c..37cb1ecf 100644 --- a/lib/VNDB/Producers.pm +++ b/lib/VNDB/Producers.pm @@ -14,28 +14,23 @@ $VERSION = $VNDB::VERSION; sub PPage { my $self = shift; my $id = shift; + my $rev = shift||0; + return $self->ResNotFound if $self->ReqParam('rev'); - my $r = $self->FormCheck( - { name => 'rev', required => 0, default => 0, template => 'int' }, - { name => 'diff', required => 0, default => 0, template => 'int' }, - ); - my $p = $self->DBGetProducer( id => $id, - $r->{rev} ? ( what => 'changes' ) : (), - $r->{rev} ? ( rev => $r->{rev} ) : () + $rev ? ( what => 'changes', rev => $rev ) : (), )->[0]; return $self->ResNotFound if !$p->{id}; - $r->{diff} ||= $p->{prev} if $r->{rev}; - my $c = $r->{diff} && $self->DBGetProducer(id => $id, rev => $r->{diff}, what => 'changes')->[0]; - $p->{next} = $self->DBGetHist(type => 'p', id => $id, next => $p->{cid}, showhid => 1)->[0]{id} if $r->{rev}; + my $c = $rev && $rev > 1 && $self->DBGetProducer(id => $id, rev => $rev-1, what => 'changes')->[0]; + $p->{next} = $rev && $p->{latest} > $p->{cid} ? $rev+1 : 0; return $self->ResAddTpl(ppage => { prod => $p, prev => $c, - change => $r->{diff} || $r->{rev}, + change => $rev, vn => $self->DBGetProducerVN($id), }); } @@ -102,16 +97,16 @@ sub PEdit { if $id && 6 == scalar grep { $_ ne 'comm' && $b4{$_} eq $frm->{$_} } keys %b4; if(!$frm->{_err}) { - my $cid; - $cid = $self->DBEditProducer($id, %$frm) if $id; # edit - ($id, $cid) = $self->DBAddProducer(%$frm) if !$id; # add - return $self->ResRedirect('/p'.$id.'?rev='.$cid, 'post'); + my $nrev = 1; + ($nrev) = $self->DBEditProducer($id, %$frm) if $id; # edit + ($id) = $self->DBAddProducer(%$frm) if !$id; # add + return $self->ResRedirect('/p'.$id.'.'.$nrev, 'post'); } } if($id) { $frm->{$_} ||= $b4{$_} for (keys %b4); - $frm->{comm} = sprintf 'Reverted to revision %d by %s.', $p->{cid}, $p->{username} if $p->{cid} != $p->{latest}; + $frm->{comm} = sprintf 'Reverted to revision p%d.%d', $p->{id}, $p->{rev} if $p->{cid} != $p->{latest}; } else { $frm->{lang} ||= 'ja'; } diff --git a/lib/VNDB/Releases.pm b/lib/VNDB/Releases.pm index bf293647..58270a3f 100644 --- a/lib/VNDB/Releases.pm +++ b/lib/VNDB/Releases.pm @@ -14,22 +14,19 @@ $VERSION = $VNDB::VERSION; sub RPage { my $self = shift; my $id = shift; + my $rev = shift||0; + + return $self->ResNotFound if $self->ReqParam('rev'); - my $r = $self->FormCheck( - { name => 'rev', required => 0, default => 0, template => 'int' }, - { name => 'diff', required => 0, default => 0, template => 'int' }, - ); - my $v = $self->DBGetRelease( id => $id, - what => 'producers platforms media vn'.($r->{rev} ? ' changes':''), - $r->{rev} ? ( rev => $r->{rev} ) : () + what => 'producers platforms media vn'.($rev ? ' changes':''), + $rev ? ( rev => $rev ) : () )->[0]; return $self->ResNotFound if !$v->{id}; - $r->{diff} ||= $v->{prev} if $r->{rev}; - my $c = $r->{diff} && $self->DBGetRelease(id => $id, rev => $r->{diff}, what => 'changes producers platforms media vn')->[0]; - $v->{next} = $self->DBGetHist(type => 'r', id => $id, next => $v->{cid}, showhid => 1)->[0]{id} if $r->{rev}; + my $c = $rev && $rev > 1 && $self->DBGetRelease(id => $id, rev => $rev-1, what => 'changes producers platforms media vn')->[0]; + $v->{next} = $rev && $v->{latest} > $v->{cid} ? $rev+1 : 0; $self->ResRedirect('/v'.$v->{vn}[0]{vid}) if ($self->ReqHeader('Referer')||'') =~ m{^http://[^/]*(yahoo|google)} && @{$v->{vn}} == 1; @@ -37,7 +34,7 @@ sub RPage { return $self->ResAddTpl(rpage => { rel => $v, prev => $c, - change => $r->{diff}||$r->{rev}, + change => $rev, }); } @@ -112,19 +109,19 @@ sub REdit { media => $media, producers => $producers, ); - my $cid; - $cid = $self->DBEditRelease($rid, %opts) if $rid; # edit - ($rid, $cid) = $self->DBAddRelease(%opts) if !$rid; # add + my $nrev = 1; + ($nrev) = $self->DBEditRelease($rid, %opts) if $rid; # edit + ($rid) = $self->DBAddRelease(%opts) if !$rid; # add $self->RVNCache(@$new_vn, (map { $_->{vid} } @$vn)); - return $self->ResRedirect('/r'.$rid.'?rev='.$cid, 'post'); + return $self->ResRedirect('/r'.$rid.'.'.$nrev, 'post'); } } if($rid) { $frm->{$_} ||= $b4{$_} for (keys %b4); - $frm->{comm} = sprintf 'Reverted to revision %d by %s.', $r->{cid}, $r->{username} if $r->{cid} != $r->{latest}; + $frm->{comm} = sprintf 'Reverted to revision r%d.%d', $r->{id}, $r->{rev} if $r->{cid} != $r->{latest}; } else { $frm->{language} = 'ja'; $frm->{vn} = $b4{vn}; diff --git a/lib/VNDB/Util/DB.pm b/lib/VNDB/Util/DB.pm index 7329b3f7..a0c851bb 100644 --- a/lib/VNDB/Util/DB.pm +++ b/lib/VNDB/Util/DB.pm @@ -171,16 +171,14 @@ sub DBGetHist { # %options->{ type, id, cid, caused, next, page, results, ip, ed $o{type} eq 'p' ? ( 'c.type = 2' => 1, $o{id} ? ( 'pr.pid = %d' => $o{id} ) : () ) : (), - $o{next} ? ( - 'c.id > %d' => $o{next} ) : (), $o{caused} ? ( 'c.causedby = %d' => $o{caused} ) : (), $o{ip} ? ( 'c.ip = !s' => $o{ip} ) : (), defined $o{edits} && !$o{edits} ? ( - 'c.prev = 0' => 1 ) : (), + 'c.rev = 1' => 1 ) : (), $o{edits} ? ( - 'c.prev > 0' => 1 ) : (), + 'c.rev > 1' => 1 ) : (), # get rid of 'hidden' items !$o{showhid} ? ( @@ -192,7 +190,7 @@ sub DBGetHist { # %options->{ type, id, cid, caused, next, page, results, ip, ed my $where = keys %where ? 'WHERE !W' : ''; - my $select = 'c.id, c.type, c.added, c.requester, c.comments, c.prev, c.causedby'; + my $select = 'c.id, c.type, c.added, c.requester, c.comments, c.rev, c.causedby'; $select .= ', u.username' if $o{what} =~ /user/; $select .= ', COALESCE(vr.vid, rr.rid, pr.pid) AS iid' if $o{what} =~ /iid/; $select .= ', COALESCE(vr2.title, rr2.title, pr2.name) AS ititle' if $o{what} =~ /ititle/; @@ -563,7 +561,7 @@ sub DBGetVN { # %options->{ id rev char search order results page what cati cate $o{id} && ref($o{id}) ? ( 'v.id IN(!l)' => $o{id} ) : (), $o{rev} ? ( - 'vr.id = %d' => $o{rev} ) : (), + 'c.rev = %d' => $o{rev} ) : (), $o{char} ? ( 'LOWER(SUBSTR(vr.title, 1, 1)) = !s' => $o{char} ) : (), defined $o{char} && !$o{char} ? ( @@ -613,14 +611,14 @@ sub DBGetVN { # %options->{ id rev char search order results page what cati cate $o{rev} ? 'JOIN vn v ON v.id = vr.vid' : 'JOIN vn v ON vr.id = v.latest', - $o{what} =~ /changes/ ? ( + $o{what} =~ /changes/ || $o{rev} ? ( 'JOIN changes c ON c.id = vr.id', 'JOIN users u ON u.id = c.requester' ) : (), ); my $sel = 'v.id, v.locked, v.hidden, v.c_released, v.c_languages, v.c_votes, v.c_platforms, vr.title, vr.id AS cid, v.rgraph'; $sel .= ', vr.alias, vr.image AS image, vr.img_nsfw, vr.length, vr.desc, vr.l_wp, vr.l_encubed, vr.l_renai, vr.l_vnn' if $o{what} =~ /extended/; - $sel .= ', c.added, c.requester, c.comments, v.latest, u.username, c.prev, c.causedby' if $o{what} =~ /changes/; + $sel .= ', c.added, c.requester, c.comments, v.latest, u.username, c.rev, c.causedby' if $o{what} =~ /changes/; my $r = $s->DBAll(qq| SELECT $sel @@ -688,45 +686,45 @@ sub DBGetVN { # %options->{ id rev char search order results page what cati cate sub DBAddVN { # %options->{ columns in vn_rev + comm + relations + categories + anime } my($s, %o) = @_; - $s->DBExec(q| + my $id = $s->DBRow(q| INSERT INTO changes (type, requester, ip, comments) - VALUES (%d, %d, !s, !s)|, - 0, $s->AuthInfo->{id}, $s->ReqIP, $o{comm}); - - my $id = $s->DBLastId('changes'); + VALUES (%d, %d, !s, !s) + RETURNING id|, + 0, $s->AuthInfo->{id}, $s->ReqIP, $o{comm} + )->{id}; - $s->DBExec(q| + my $vid = $s->DBRow(q| INSERT INTO vn (latest) - VALUES (%d)|, $id); - my $vid = $s->DBLastId('vn'); + VALUES (%d) + RETURNING id|, $id + )->{id}; _insert_vn_rev($s, $id, $vid, \%o); - return ($vid, $id); + return ($vid, $id); # item id, global revision } sub DBEditVN { # id, %options->( columns in vn_rev + comm + relations + categories + anime + uid + causedby } my($s, $vid, %o) = @_; - $s->DBExec(q| - INSERT INTO changes (type, requester, ip, comments, prev, causedby) + my $c = $s->DBRow(q| + INSERT INTO changes (type, requester, ip, comments, rev, causedby) VALUES (%d, %d, !s, !s, ( - SELECT c.id + SELECT c.rev+1 FROM changes c JOIN vn_rev vr ON vr.id = c.id WHERE vr.vid = %d ORDER BY c.id DESC LIMIT 1 - ), %d)|, + ), %d) + RETURNING id, rev|, 0, $o{uid}||$s->AuthInfo->{id}, $s->ReqIP, $o{comm}, $vid, $o{causedby}||0); - my $id = $s->DBLastId('changes'); + _insert_vn_rev($s, $c->{id}, $vid, \%o); - _insert_vn_rev($s, $id, $vid, \%o); - - $s->DBExec(q|UPDATE vn SET latest = %d WHERE id = %d|, $id, $vid); - return $id; + $s->DBExec(q|UPDATE vn SET latest = %d WHERE id = %d|, $c->{id}, $vid); + return ($c->{rev}, $c->{id}); # local revision, global revision } @@ -822,7 +820,7 @@ sub DBGetRelease { # %options->{ id vid results page rev } $o{id} ? ( 'r.id = %d' => $o{id} ) : (), $o{rev} ? ( - 'rr.id = %d' => $o{rev} ) : (), + 'c.rev = %d' => $o{rev} ) : (), $o{vid} ? ( 'rv.vid = %d' => $o{vid} ) : (), ); @@ -830,12 +828,12 @@ sub DBGetRelease { # %options->{ id vid results page rev } my $where = scalar keys %where ? 'WHERE !W' : ''; my @join; push @join, $o{rev} ? 'JOIN releases r ON r.id = rr.rid' : 'JOIN releases r ON rr.id = r.latest'; - push @join, 'JOIN changes c ON c.id = rr.id' if $o{what} =~ /changes/; + push @join, 'JOIN changes c ON c.id = rr.id' if $o{what} =~ /changes/ || $o{rev}; push @join, 'JOIN users u ON u.id = c.requester' if $o{what} =~ /changes/; push @join, 'JOIN releases_vn rv ON rv.rid = rr.id' if $o{vid}; my $select = 'r.id, r.locked, r.hidden, rr.id AS cid, rr.title, rr.original, rr.gtin, rr.language, rr.website, rr.released, rr.notes, rr.minage, rr.type'; - $select .= ', c.added, c.requester, c.comments, r.latest, u.username, c.prev' if $o{what} =~ /changes/; + $select .= ', c.added, c.requester, c.comments, r.latest, u.username, c.rev' if $o{what} =~ /changes/; my $r = $s->DBAll(qq| SELECT $select @@ -907,43 +905,43 @@ sub DBGetRelease { # %options->{ id vid results page rev } sub DBAddRelease { # options -> { columns in releases_rev table + comm + vn + producers + media + platforms } my($s, %o) = @_; - $s->DBExec(q| + my $id = $s->DBRow(q| INSERT INTO changes (type, requester, ip, comments) - VALUES (%d, %d, !s, !s)|, - 1, $s->AuthInfo->{id}, $s->ReqIP, $o{comm}); + VALUES (%d, %d, !s, !s) + RETURNING id|, + 1, $s->AuthInfo->{id}, $s->ReqIP, $o{comm} + )->{id}; - my $id = $s->DBLastId('changes'); - $s->DBExec(q| + my $rid = $s->DBRow(q| INSERT INTO releases (latest) - VALUES (%d)|, $id); - my $rid = $s->DBLastId('releases'); + VALUES (%d) + RETURNING id|, $id)->{id}; _insert_release_rev($s, $id, $rid, \%o); - return ($rid, $id); + return ($rid, $id); # item id, global revision } sub DBEditRelease { # id, %opts->{ columns in releases_rev table + comm + vn + producers + media + platforms } my($s, $rid, %o) = @_; - $s->DBExec(q| - INSERT INTO changes (type, requester, ip, comments, prev) + my $c = $s->DBRow(q| + INSERT INTO changes (type, requester, ip, comments, rev) VALUES (%d, %d, !s, !s, ( - SELECT c.id + SELECT c.rev+1 FROM changes c JOIN releases_rev rr ON rr.id = c.id WHERE rr.rid = %d ORDER BY c.id DESC LIMIT 1 - ))|, + )) + RETURNING id, rev|, 1, $s->AuthInfo->{id}, $s->ReqIP, $o{comm}, $rid); - my $id = $s->DBLastId('changes'); - - _insert_release_rev($s, $id, $rid, \%o); + _insert_release_rev($s, $c->{id}, $rid, \%o); - $s->DBExec(q|UPDATE releases SET latest = %d WHERE id = %d|, $id, $rid); - return $id; + $s->DBExec(q|UPDATE releases SET latest = %d WHERE id = %d|, $c->{id}, $rid); + return ($c->{rev}, $c->{id}); # local revision, global revision } @@ -1018,17 +1016,17 @@ sub DBGetProducer { # %options->{ id search char results page rev } defined $o{char} && !$o{char} ? ( '(ASCII(pr.name) < 97 OR ASCII(pr.name) > 122) AND (ASCII(pr.name) < 65 OR ASCII(pr.name) > 90)' => 1 ) : (), $o{rev} ? ( - 'pr.id = %d' => $o{rev} ) : (), + 'c.rev = %d' => $o{rev} ) : (), ); my $where = scalar keys %where ? 'WHERE !W' : ''; my @join; push @join, $o{rev} ? 'JOIN producers p ON p.id = pr.pid' : 'JOIN producers p ON pr.id = p.latest'; - push @join, 'JOIN changes c ON c.id = pr.id' if $o{what} =~ /changes/; + push @join, 'JOIN changes c ON c.id = pr.id' if $o{what} =~ /changes/ || $o{rev}; push @join, 'JOIN users u ON u.id = c.requester' if $o{what} =~ /changes/; my $select = 'p.id, p.locked, p.hidden, pr.type, pr.name, pr.original, pr.website, pr.lang, pr.desc'; - $select .= ', c.added, c.requester, c.comments, p.latest, pr.id AS cid, u.username, c.prev' if $o{what} =~ /changes/; + $select .= ', c.added, c.requester, c.comments, p.latest, pr.id AS cid, u.username, c.rev' if $o{what} =~ /changes/; my $r = $s->DBAll(qq| SELECT $select @@ -1069,44 +1067,45 @@ sub DBGetProducerVN { # pid sub DBAddProducer { # %opts->{ columns in producers_rev + comm } my($s, %o) = @_; - $s->DBExec(q| + my $id = $s->DBRow(q| INSERT INTO changes (type, requester, ip, comments) - VALUES (%d, %d, !s, !s)|, - 2, $s->AuthInfo->{id}, $s->ReqIP, $o{comm}); + VALUES (%d, %d, !s, !s) + RETURNING id|, + 2, $s->AuthInfo->{id}, $s->ReqIP, $o{comm} + )->{id}; - my $id = $s->DBLastId('changes'); - $s->DBExec(q| + my $pid = $s->DBRow(q| INSERT INTO producers (latest) - VALUES (%d)|, $id); - my $pid = $s->DBLastId('producers'); + VALUES (%d) + RETURNING id|, $id + )->{id}; _insert_producer_rev($s, $id, $pid, \%o); - return ($pid, $id); + return ($pid, $id); # item id, global revision } sub DBEditProducer { # id, %opts->{ columns in producers_rev + comm } my($s, $pid, %o) = @_; - $s->DBExec(q| - INSERT INTO changes (type, requester, ip, comments, prev) + my $c = $s->DBRow(q| + INSERT INTO changes (type, requester, ip, comments, rev) VALUES (%d, %d, !s, !s, ( - SELECT c.id + SELECT c.rev+1 FROM changes c JOIN producers_rev pr ON pr.id = c.id WHERE pr.pid = %d ORDER BY c.id DESC LIMIT 1 - ))|, + )) + RETURNING id, rev|, 2, $s->AuthInfo->{id}, $s->ReqIP, $o{comm}, $pid); - my $id = $s->DBLastId('changes'); - - _insert_producer_rev($s, $id, $pid, \%o); + _insert_producer_rev($s, $c->{id}, $pid, \%o); - $s->DBExec(q|UPDATE producers SET latest = %d WHERE id = %d|, $id, $pid); - return $id; + $s->DBExec(q|UPDATE producers SET latest = %d WHERE id = %d|, $c->{id}, $pid); + return ($c->{rev}, $c->{id}); # local revision, global revision } diff --git a/lib/VNDB/VN.pm b/lib/VNDB/VN.pm index f0727e6a..2b0e6efc 100644 --- a/lib/VNDB/VN.pm +++ b/lib/VNDB/VN.pm @@ -16,22 +16,19 @@ sub VNPage { my $self = shift; my $id = shift; my $page = shift || ''; + my $rev = shift || 0; - my $r = $self->FormCheck( - { name => 'rev', required => 0, default => 0, template => 'int' }, - { name => 'diff', required => 0, default => 0, template => 'int' }, - ); + return $self->ResNotFound if $self->ReqParam('rev'); my $v = $self->DBGetVN( id => $id, - what => 'extended relations categories anime'.($r->{rev} ? ' changes' : ''), - $r->{rev} ? ( rev => $r->{rev} ) : () + what => 'extended relations categories anime'.($rev ? ' changes' : ''), + $rev ? ( rev => $rev ) : () )->[0]; return $self->ResNotFound if !$v->{id}; - $r->{diff} ||= $v->{prev} if $r->{rev}; - my $c = $r->{diff} && $self->DBGetVN(id => $id, rev => $r->{diff}, what => 'extended changes relations categories anime')->[0]; - $v->{next} = $self->DBGetHist(type => 'v', id => $id, next => $v->{cid}, showhid => 1)->[0]{id} if $r->{rev}; + my $c = $rev && $rev > 1 && $self->DBGetVN(id => $id, rev => $rev-1, what => 'extended changes relations categories anime')->[0]; + $v->{next} = $rev && $v->{latest} > $v->{cid} ? $rev+1 : 0; if($page eq 'rg' && $v->{rgraph}) { open(my $F, '<:utf8', sprintf '%s/%02d/%d.cmap', $self->{mappath}, $v->{rgraph}%100, $v->{rgraph}) || die $!; @@ -46,7 +43,7 @@ sub VNPage { vn => $v, prev => $c, page => $page, - change => $r->{diff}||$r->{rev}, + change => $rev, $page eq 'stats' ? ( lists => { latest => scalar $self->DBGetVNList(vid => $id, results => 7, hide => 1), @@ -145,15 +142,15 @@ sub VNEdit { ); if(!$frm->{_err}) { - my($oid, $cid) = ($id, 0); - $cid = $self->DBEditVN($id, %args) if $id; # edit - ($id, $cid) = $self->DBAddVN(%args) if !$id; # add + my($oid, $nrev, $cid) = ($id, 1, 0); + ($nrev, $cid) = $self->DBEditVN($id, %args) if $id; # edit + ($id, $cid) = $self->DBAddVN(%args) if !$id; # add # update reverse relations and relation graph 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->VNUpdReverse(\%old, \%new, $id, $cid); + $self->VNUpdReverse(\%old, \%new, $id, $cid, $nrev); } # also regenerate relation graph if the title changes elsif(@$relations && $frm->{title} ne $b4{title}) { @@ -163,13 +160,13 @@ sub VNEdit { # check for new anime data $self->RunCmd('anime check') if $oid && $frm->{anime} ne $b4{anime} || !$oid && $frm->{anime}; - return $self->ResRedirect('/v'.$id.'?rev='.$cid, 'post'); + return $self->ResRedirect('/v'.$id.'.'.$nrev, 'post'); } } 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}; + $frm->{comm} = sprintf 'Reverted to revision v%d.%d', $v->{id}, $v->{rev} if $v->{cid} != $v->{latest}; } $self->AddHid($frm); @@ -205,8 +202,6 @@ sub VNHide { return $self->ResNotFound() if !$v; return $self->ResDenied if !$self->AuthCan('del'); $self->DBHideVN($id, $v->{hidden}?0:1); - #$self->VNUpdReverse({ map { $_->{id} => $_->{relation} } @{$v->{relations}} }, {}, $id, 0) - # if @{$v->{relations}}; return $self->ResRedirect('/v'.$id, 'perm'); } @@ -230,8 +225,8 @@ sub VNBrowse { my $q = $f->{q}; if($chr eq 'search') { # VNDBID - return $self->ResRedirect('/'.$1, 'temp') - if $q =~ /^([vrpud][0-9]+)$/; + return $self->ResRedirect('/'.$1.$2.(!$3 ? '' : $1 eq 'd' ? '#'.$3 : '.'.$3), 'temp') + if $q =~ /^([vrpud])([0-9]+)(?:\.([0-9]+))?$/; if(!($q =~ s/^title://)) { # categories @@ -310,8 +305,8 @@ sub VNXML { # Update reverse relations -sub VNUpdReverse { # old, new, id, cid - my($self, $old, $new, $id, $cid) = @_; +sub VNUpdReverse { # old, new, id, cid, rev + my($self, $old, $new, $id, $cid, $rev) = @_; my %upd; for (keys %$old, keys %$new) { if(exists $$old{$_} and !exists $$new{$_}) { @@ -331,7 +326,7 @@ sub VNUpdReverse { # old, new, id, cid push @newrel, [ $upd{$i}, $id ] if $upd{$i} != -1; $self->DBEditVN($i, relations => \@newrel, - comm => 'Reverse relation update caused by revision '.$cid.' of v'.$id, + comm => 'Reverse relation update caused by revision v'.$id.'.'.$rev, causedby => $cid, uid => 1, # Multi - hardcoded anime => [ map $_->{id}, @{$r->{anime}} ], |