summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2010-11-28 10:03:16 +0100
committerYorhel <git@yorhel.nl>2010-11-28 10:03:16 +0100
commitd82f42629c802d968be247832c2e7cbf17eb16c6 (patch)
treedda59c514f81fbc151b9d53480a85090537b700d
parent80106c9930e39047fb24f0486412085ca99efef9 (diff)
VN Filter Selector: Added "original language" filter
The original language is the language of the first release of the VN, and is cached in vn.c_olang. (Geez, the vn table has more caching columns than actual information >.>)
-rw-r--r--ChangeLog2
-rw-r--r--data/lang.txt7
-rw-r--r--data/script.js1
-rw-r--r--lib/VNDB/DB/VN.pm4
-rw-r--r--lib/VNDB/Handler/VNBrowse.pm2
-rw-r--r--util/sql/func.sql15
-rw-r--r--util/sql/schema.sql3
-rw-r--r--util/updates/update_2.14.sql7
8 files changed, 37 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index bfb38875..276f4fc7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,7 @@
2.14 - ?
- Improved filter selection interface for the release and VN browser
- New release filters: voiced and animation
- - New VN filters: length and "has anime"
+ - New VN filters: length, "has anime" and original language
- Apply search query and filters when changing first char
- Added Atom feeds for the recent announcements, changes and posts
(located in /www/feeds and updated every 15 min. by Multi::Feed)
diff --git a/data/lang.txt b/data/lang.txt
index 3795a079..447b417c 100644
--- a/data/lang.txt
+++ b/data/lang.txt
@@ -5754,6 +5754,13 @@ cs*: Jazyky
hu*: Nyelvek
nl : Taal
+:_vnbrowse_olang
+en : Original language
+ru*:
+cs*:
+hu*:
+nl : Originele taal
+
:_vnbrowse_platform
en : Platform
ru*: Платформы
diff --git a/data/script.js b/data/script.js
index 5f680353..48bc4241 100644
--- a/data/script.js
+++ b/data/script.js
@@ -2065,6 +2065,7 @@ function filVN() {
function (o) { var s = getCookie('tagspoil'); if(o+'' == '') return s == null ? 0 : s; setCookie('tagspoil', o); return o})
],
[ mt('_vnbrowse_language'), filFSelect('lang', mt('_vnbrowse_language'), 20, lang) ],
+ [ mt('_vnbrowse_olang'), filFSelect('olang',mt('_vnbrowse_olang'), 20, lang) ],
[ mt('_vnbrowse_platform'), filFSelect('plat', mt('_vnbrowse_platform'), 20, plat) ]
];
}
diff --git a/lib/VNDB/DB/VN.pm b/lib/VNDB/DB/VN.pm
index 1154fc71..d25a5796 100644
--- a/lib/VNDB/DB/VN.pm
+++ b/lib/VNDB/DB/VN.pm
@@ -10,7 +10,7 @@ use Encode 'decode_utf8';
our @EXPORT = qw|dbVNGet dbVNRevisionInsert dbVNImageId dbScreenshotAdd dbScreenshotGet dbScreenshotRandom|;
-# Options: id, rev, char, search, length, lang, plat, tags_include, tags_exclude, hasani, results, page, what, sort, reverse
+# Options: id, rev, char, search, length, lang, olang, plat, tags_include, tags_exclude, hasani, results, page, what, sort, reverse
# What: extended anime relations screenshots relgraph rating ranking changes
# Sort: id rel pop rating title tagscore rand
sub dbVNGet {
@@ -33,6 +33,8 @@ sub dbVNGet {
'vr.length IN(!l)' => [ ref $o{length} ? $o{length} : [$o{length}] ]) : (),
$o{lang} ? (
'v.c_languages && ARRAY[!l]::language[]' => [ ref $o{lang} ? $o{lang} : [$o{lang}] ]) : (),
+ $o{olang} ? (
+ 'v.c_olang && ARRAY[!l]::language[]' => [ ref $o{olang} ? $o{olang} : [$o{olang}] ]) : (),
$o{plat} ? (
'('.join(' OR ', map "v.c_platforms ILIKE '%%$_%%'", ref $o{plat} ? @{$o{plat}} : $o{plat}).')' => 1 ) : (),
defined $o{hasani} ? (
diff --git a/lib/VNDB/Handler/VNBrowse.pm b/lib/VNDB/Handler/VNBrowse.pm
index df450677..7b35dc26 100644
--- a/lib/VNDB/Handler/VNBrowse.pm
+++ b/lib/VNDB/Handler/VNBrowse.pm
@@ -25,7 +25,7 @@ sub list {
);
return 404 if $f->{_err};
$f->{q} ||= $f->{sq};
- my $fil = fil_parse $f->{fil}, qw|length hasani taginc tagexc tagspoil lang plat|;
+ my $fil = fil_parse $f->{fil}, qw|length hasani taginc tagexc tagspoil lang olang plat|;
_fil_compat($self, $fil);
if($f->{q}) {
diff --git a/util/sql/func.sql b/util/sql/func.sql
index 35faf6a6..53af121c 100644
--- a/util/sql/func.sql
+++ b/util/sql/func.sql
@@ -26,6 +26,21 @@ CREATE OR REPLACE FUNCTION update_vncache(integer) RETURNS void AS $$
AND rr1.released <> 0
GROUP BY rv1.vid
), 0),
+ c_olang = ARRAY(
+ SELECT lang
+ FROM releases_lang
+ WHERE rid = (
+ SELECT r.latest
+ FROM releases_vn rv
+ JOIN releases r ON rv.rid = r.latest
+ JOIN releases_rev rr ON rr.id = r.latest AND rr.rid = r.id
+ WHERE rr.released > 0
+ AND NOT r.hidden
+ AND rv.vid = $1
+ ORDER BY rr.released
+ LIMIT 1
+ )
+ ),
c_languages = ARRAY(
SELECT rl2.lang
FROM releases_rev rr2
diff --git a/util/sql/schema.sql b/util/sql/schema.sql
index 1eb823e3..6911a40b 100644
--- a/util/sql/schema.sql
+++ b/util/sql/schema.sql
@@ -293,7 +293,8 @@ CREATE TABLE vn (
c_popularity real,
c_rating real,
c_votecount integer NOT NULL DEFAULT 0,
- c_search text
+ c_search text,
+ c_olang language[] NOT NULL DEFAULT '{}'
);
-- vn_anime
diff --git a/util/updates/update_2.14.sql b/util/updates/update_2.14.sql
index 5c8cfe76..2233e0a8 100644
--- a/util/updates/update_2.14.sql
+++ b/util/updates/update_2.14.sql
@@ -1,6 +1,13 @@
+-- add vn.c_olang
+
+ALTER TABLE vn ADD COLUMN c_olang language[] NOT NULL DEFAULT '{}';
+
+
+-- reload functions
\i util/sql/func.sql
+
-- redefine the triggers to use the new conditional triggers in PostgreSQL 9.0
DROP TRIGGER hidlock_update ON vn;