summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2008-11-21 13:56:02 +0100
committerYorhel <git@yorhel.nl>2008-11-21 13:56:02 +0100
commit77fb942f189c5b5cd187532d131db2e5e5f5fe75 (patch)
tree323b51b8c2ecf3742ec7147f4789c3e64295acef /lib
parentd394731eaf3a3e6d84463544b0f7796bc20ede78 (diff)
Revision-aware VN pages
Diffstat (limited to 'lib')
-rw-r--r--lib/VNDB/DB/VN.pm10
-rw-r--r--lib/VNDB/Handler/VNPage.pm14
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');