diff options
author | Yorhel <git@yorhel.nl> | 2008-11-21 13:56:02 +0100 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2008-11-21 13:56:02 +0100 |
commit | 77fb942f189c5b5cd187532d131db2e5e5f5fe75 (patch) | |
tree | 323b51b8c2ecf3742ec7147f4789c3e64295acef /lib | |
parent | d394731eaf3a3e6d84463544b0f7796bc20ede78 (diff) |
Revision-aware VN pages
Diffstat (limited to 'lib')
-rw-r--r-- | lib/VNDB/DB/VN.pm | 10 | ||||
-rw-r--r-- | lib/VNDB/Handler/VNPage.pm | 14 |
2 files changed, 16 insertions, 8 deletions
diff --git a/lib/VNDB/DB/VN.pm b/lib/VNDB/DB/VN.pm index 920f81ca..eea0da8d 100644 --- a/lib/VNDB/DB/VN.pm +++ b/lib/VNDB/DB/VN.pm @@ -9,7 +9,7 @@ our @EXPORT = qw|dbVNGet|; # Options: id, rev, results, page, order, what -# What: extended categories anime relations screenshots relgraph +# What: extended categories anime relations screenshots relgraph changes sub dbVNGet { my($self, %o) = @_; $o{results} ||= 10; @@ -21,7 +21,7 @@ sub dbVNGet { $o{id} ? ( 'v.id = ?' => $o{id} ) : (), $o{rev} ? ( - 'vr.id = ?' => $o{rev} ) : (), + 'c.rev = ?' => $o{rev} ) : (), # don't fetch hidden items unless we ask for an ID !$o{id} && !$o{rev} ? ( 'v.hidden = FALSE' => 0 ) : (), @@ -31,6 +31,10 @@ sub dbVNGet { $o{rev} ? 'JOIN vn v ON v.id = vr.vid' : 'JOIN vn v ON vr.id = v.latest', + $o{rev} || $o{what} =~ /changes/ ? + 'JOIN changes c ON c.id = vr.id' : (), + $o{what} =~ /changes/ ? + 'JOIN users u ON u.id = c.requester' : (), $o{what} =~ /relgraph/ ? 'JOIN relgraph rg ON rg.id = v.rgraph' : (), ); @@ -39,6 +43,8 @@ sub dbVNGet { qw|v.id v.locked v.hidden v.c_released v.c_languages v.c_platforms vr.title vr.original v.rgraph|, 'vr.id AS cid', $o{what} =~ /extended/ ? ( qw|vr.alias vr.image vr.img_nsfw vr.length vr.desc vr.l_wp vr.l_encubed vr.l_renai vr.l_vnn| ) : (), + $o{what} =~ /changes/ ? ( + qw|c.added c.requester c.comments v.latest u.username c.rev c.causedby|) : (), $o{what} =~ /relgraph/ ? 'rg.cmap' : (), ); diff --git a/lib/VNDB/Handler/VNPage.pm b/lib/VNDB/Handler/VNPage.pm index aca29b4e..664267de 100644 --- a/lib/VNDB/Handler/VNPage.pm +++ b/lib/VNDB/Handler/VNPage.pm @@ -8,8 +8,8 @@ use VNDB::Func; YAWF::register( - qr{v([1-9]\d*)/rg} => \&rg, - qr{v([1-9]\d*)} => \&page, + qr{v([1-9]\d*)/rg} => \&rg, + qr{v([1-9]\d*)(?:\.([1-9]\d*))?} => \&page, ); @@ -33,11 +33,13 @@ sub rg { sub page { - my($self, $vid) = @_; - - # TODO: revision-awareness, hidden/locked flag check + my($self, $vid, $rev) = @_; - my $v = $self->dbVNGet(id => $vid, what => 'extended categories anime relations screenshots')->[0]; + my $v = $self->dbVNGet( + id => $vid, + what => 'extended categories anime relations screenshots'.($rev ? ' changes' : ''), + $rev ? (rev => $rev) : (), + )->[0]; return 404 if !$v->{id}; my $r = $self->dbReleaseGet(vid => $vid, what => 'producers platforms'); |