diff options
author | Yorhel <git@yorhel.nl> | 2019-07-14 14:17:28 +0200 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2019-07-15 12:41:46 +0200 |
commit | b80513eaf985c7ea12445d4d4470c302199dcf10 (patch) | |
tree | 85ac4fbadf7f225fde4662813e034b5973a8afa4 /lib/VNDB | |
parent | bd2890abeb7f4ebe0cdab66dd7ad07c5cac53941 (diff) |
Add engine field to releases
Fixes #4.
Diffstat (limited to 'lib/VNDB')
-rw-r--r-- | lib/VNDB/DB/Releases.pm | 7 | ||||
-rw-r--r-- | lib/VNDB/Handler/Releases.pm | 33 | ||||
-rw-r--r-- | lib/VNDB/Util/Misc.pm | 2 |
3 files changed, 34 insertions, 8 deletions
diff --git a/lib/VNDB/DB/Releases.pm b/lib/VNDB/DB/Releases.pm index 9f164251..ecfeab72 100644 --- a/lib/VNDB/DB/Releases.pm +++ b/lib/VNDB/DB/Releases.pm @@ -28,6 +28,7 @@ sub dbReleaseFilters { defined $o{voiced} ? ( 'NOT r.patch AND r.voiced IN(!l)' => [ ref $o{voiced} ? $o{voiced} : [$o{voiced}] ] ) : (), defined $o{ani_story} ? ( 'NOT r.patch AND r.ani_story IN(!l)' => [ ref $o{ani_story} ? $o{ani_story} : [$o{ani_story}] ] ) : (), defined $o{ani_ero} ? ( 'NOT r.patch AND r.ani_ero IN(!l)' => [ ref $o{ani_ero} ? $o{ani_ero} : [$o{ani_ero}] ] ) : (), + defined $o{engine} ? ( 'r.engine = ?' => $o{engine} ) : (), defined $o{released} ? ( 'r.released !s ?' => [ $o{released} ? '<=' : '>', strftime('%Y%m%d', gmtime) ] ) : (), $o{lang} ? ( 'r.id IN(SELECT irl.id FROM releases_lang irl WHERE irl.lang IN(!l))' => [ ref $o{lang} ? $o{lang} : [ $o{lang} ] ] ) : (), @@ -85,7 +86,7 @@ sub dbReleaseGet { my @select = ( qw|r.id r.title r.original r.website r.released r.minage r.type r.patch|, - $o{what} =~ /extended/ ? qw|r.notes r.catalog r.gtin r.resolution r.voiced r.freeware r.doujin r.uncensored r.ani_story r.ani_ero r.hidden r.locked| : (), + $o{what} =~ /extended/ ? qw|r.notes r.catalog r.gtin r.resolution r.voiced r.freeware r.doujin r.uncensored r.ani_story r.ani_ero r.engine r.hidden r.locked| : (), $o{pid} ? ('rp.developer', 'rp.publisher') : (), ); @@ -123,7 +124,7 @@ sub dbReleaseGetRev { $o{rev} ||= $self->dbRow('SELECT MAX(rev) AS rev FROM changes WHERE type = \'r\' AND itemid = ?', $o{id})->{rev}; my $select = 'c.itemid AS id, r.title, r.original, r.website, r.released, r.minage, r.type, r.patch'; - $select .= ', r.notes, r.catalog, r.gtin, r.resolution, r.voiced, r.freeware, r.doujin, r.uncensored, r.ani_story, r.ani_ero, ro.hidden, ro.locked' if $o{what} =~ /extended/; + $select .= ', r.notes, r.catalog, r.gtin, r.resolution, r.voiced, r.freeware, r.doujin, r.uncensored, r.ani_story, r.ani_ero, r.engine, ro.hidden, ro.locked' if $o{what} =~ /extended/; $select .= ', extract(\'epoch\' from c.added) as added, c.requester, c.comments, u.username, c.rev, c.ihid, c.ilock'; $select .= ', c.id AS cid, NOT EXISTS(SELECT 1 FROM changes c2 WHERE c2.type = c.type AND c2.itemid = c.itemid AND c2.rev = c.rev+1) AS lastrev'; @@ -214,7 +215,7 @@ sub dbReleaseRevisionInsert { my %set = map exists($o->{$_}) ? ("$_ = ?", $o->{$_}) : (), qw|title original gtin catalog website released notes minage type - patch resolution voiced freeware doujin uncensored ani_story ani_ero|; + patch resolution voiced freeware doujin uncensored ani_story ani_ero engine|; $self->dbExec('UPDATE edit_releases !H', \%set) if keys %set; if($o->{languages}) { diff --git a/lib/VNDB/Handler/Releases.pm b/lib/VNDB/Handler/Releases.pm index ad32e78f..180457ec 100644 --- a/lib/VNDB/Handler/Releases.pm +++ b/lib/VNDB/Handler/Releases.pm @@ -66,6 +66,7 @@ sub page { [ voiced => 'Voiced', serialize => sub { $self->{voiced}[$_[0]] } ], [ ani_story => 'Story animation', serialize => sub { $self->{animated}[$_[0]] } ], [ ani_ero => 'Ero animation', serialize => sub { $self->{animated}[$_[0]] } ], + [ engine => 'Engine' ], [ producers => 'Producers', join => '<br />', split => sub { map sprintf('<a href="/p%d" title="%s">%s</a> (%s)', $_->{id}, $_->{original}||$_->{name}, shorten($_->{name}, 50), join(', ', $_->{developer} ? 'developer' :(), $_->{publisher} ? 'publisher' :()) @@ -187,6 +188,13 @@ sub _infotable { end; } + if(length $r->{engine}) { + Tr; + td 'Engine'; + td $r->{engine}; + end; + } + Tr; td 'Released'; td; @@ -294,7 +302,7 @@ sub edit { my $vn = $rid ? $r->{vn} : [{ vid => $vid, title => $v->{title} }]; my %b4 = !$rid ? () : ( (map { $_ => $r->{$_} } qw|type title original gtin catalog languages website released minage - notes platforms patch resolution voiced freeware doujin uncensored ani_story ani_ero ihid ilock|), + notes platforms patch resolution voiced freeware doujin uncensored ani_story ani_ero engine ihid ilock|), media => join(',', sort map "$_->{medium} $_->{qty}", @{$r->{media}}), producers => join('|||', map sprintf('%d,%d,%s', $_->{id}, ($_->{developer}?1:0)+($_->{publisher}?2:0), $_->{name}), @@ -328,6 +336,8 @@ sub edit { { post => 'voiced', required => 0, default => 0, enum => [ 0..$#{$self->{voiced}} ] }, { post => 'ani_story', required => 0, default => 0, enum => [ 0..$#{$self->{animated}} ] }, { post => 'ani_ero', required => 0, default => 0, enum => [ 0..$#{$self->{animated}} ] }, + { post => 'engine', required => 0, default => '', maxlength => 50 }, + { post => 'engine_oth',required => 0, default => '', maxlength => 50 }, { post => 'producers', required => 0, default => '' }, { post => 'vn', maxlength => 50000 }, { post => 'editsum', template => 'editsum' }, @@ -335,6 +345,9 @@ sub edit { { post => 'ilock', required => 0 }, ); + $frm->{engine} = $frm->{engine_oth} if $frm->{engine} eq '_other_'; + delete $frm->{engine_oth}; + push @{$frm->{_err}}, [ 'released', 'required', 1 ] if !$frm->{released}; my($media, $producers, $new_vn); @@ -347,8 +360,11 @@ sub edit { $frm->{$_} = $frm->{$_} ? 1 : 0 for (qw|patch freeware doujin uncensored ihid ilock|); # reset some fields when the patch flag is set - $frm->{doujin} = $frm->{voiced} = $frm->{ani_story} = $frm->{ani_ero} = 0 if $frm->{patch}; - $frm->{resolution} = 'unknown' if $frm->{patch}; + if($frm->{patch}) { + $frm->{doujin} = $frm->{voiced} = $frm->{ani_story} = $frm->{ani_ero} = 0; + $frm->{resolution} = 'unknown'; + $frm->{engine} = ''; + } $frm->{uncensored} = 0 if $frm->{minage} != 18; my $same = $rid && @@ -364,7 +380,7 @@ sub edit { if(!$frm->{_err}) { my $nrev = $self->dbItemEdit(r => !$copy && $rid ? ($r->{id}, $r->{rev}) : (undef, undef), (map { $_ => $frm->{$_} } qw| type title original gtin catalog languages website released minage - notes platforms resolution editsum patch voiced freeware doujin uncensored ani_story ani_ero ihid ilock|), + notes platforms resolution editsum patch voiced freeware doujin uncensored ani_story ani_ero engine ihid ilock|), vn => $new_vn, producers => $producers, media => $media, @@ -424,6 +440,15 @@ sub _form { rel_format => [ 'Format', [ select => short => 'resolution', name => 'Resolution', options => [ map [ $_, @{$self->{resolutions}{$_}} ], keys %{$self->{resolutions}} ] ], + [ static => label => 'Engine', content => sub { + my $other = $frm->{engine} && !grep($_ eq $frm->{engine}, @{$self->{engines}}); + Select name => 'engine', id => 'engine', tabindex => 10; + option value => $_, $frm->{engine} eq $_ ? (selected => 'selected') : (), $_ || 'Unknown' + for ('', @{$self->{engines}}); + option value => '_other_', $other ? (selected => 'selected') : (), 'Other'; + end; + input type => 'text', name => 'engine_oth', id => 'engine_oth', tabindex => 10, class => 'text '.($other ? '' : 'hidden'), value => $frm->{engine}; + } ], [ select => short => 'voiced', name => 'Voiced', options => [ map [ $_, $self->{voiced}[$_] ], 0..$#{$self->{voiced}} ] ], [ select => short => 'ani_story', name => 'Story animation', options => [ diff --git a/lib/VNDB/Util/Misc.pm b/lib/VNDB/Util/Misc.pm index 879dbdf7..d18d19ec 100644 --- a/lib/VNDB/Util/Misc.pm +++ b/lib/VNDB/Util/Misc.pm @@ -13,7 +13,7 @@ our @EXPORT = qw|filFetchDB filCompat bbSubstLinks|; our %filfields = ( vn => [qw|date_before date_after released length hasani hasshot tag_inc tag_exc taginc tagexc tagspoil lang olang plat staff_inc staff_exc ul_notblack ul_onwish ul_voted ul_onlist|], - release => [qw|type patch freeware doujin uncensored date_before date_after released minage lang olang resolution plat prod_inc prod_exc med voiced ani_story ani_ero|], + release => [qw|type patch freeware doujin uncensored date_before date_after released minage lang olang resolution plat prod_inc prod_exc med voiced ani_story ani_ero engine|], char => [qw|gender bloodt bust_min bust_max waist_min waist_max hip_min hip_max height_min height_max va_inc va_exc weight_min weight_max trait_inc trait_exc tagspoil role|], staff => [qw|gender role truename lang|], ); |