summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authoryorhel <yorhel@1fe2e327-d9db-4752-bcf7-ef0cb4a1748b>2008-05-20 17:46:52 +0000
committeryorhel <yorhel@1fe2e327-d9db-4752-bcf7-ef0cb4a1748b>2008-05-20 17:46:52 +0000
commitc2615af845fef85c048d3d1b2e0fd83b701dc4e1 (patch)
treeffd38c74eee923eedbb6cec3294165dcd5fa733f /lib
parent2ce770e7e5817f8838fdaf7bc7eda2a8da972962 (diff)
Several bugfixes, xml extention to rss feeds, noindex on user forms, client side filter selection, and how the fuck did the "Finished" status get lost!?
git-svn-id: svn://vndb.org/vndb@14 1fe2e327-d9db-4752-bcf7-ef0cb4a1748b
Diffstat (limited to 'lib')
-rw-r--r--lib/ChangeLog5
-rw-r--r--lib/Multi/IRC.pm2
-rw-r--r--lib/Multi/Sitemap.pm18
-rw-r--r--lib/VNDB.pm23
-rw-r--r--lib/VNDB/HomePages.pm4
-rw-r--r--lib/VNDB/Util/DB.pm8
-rw-r--r--lib/VNDB/VN.pm4
-rw-r--r--lib/global.pl1
8 files changed, 45 insertions, 20 deletions
diff --git a/lib/ChangeLog b/lib/ChangeLog
index a9969ac5..43bfbf1b 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -18,7 +18,10 @@ TODO:
- Grouped producers, user stats and general information on the VN page
- Added language icons to producer browser
- A little CSS cleanup
- - Grouped category browser into one advanced search
+ - Grouped category browser and search into one advanced search
+ - Updated sitemap generator
+ - Pattern matching bug fixes in Multi::IRC, and better handling of commands
+ - Added .xml extention to all RSS URLs
1.15 - 2008-05-04
- Relation graph now also updated on VN title change
diff --git a/lib/Multi/IRC.pm b/lib/Multi/IRC.pm
index 58789675..5611c3cf 100644
--- a/lib/Multi/IRC.pm
+++ b/lib/Multi/IRC.pm
@@ -148,7 +148,7 @@ sub vndbid { # dest, msg
my @id;
push @id, [$1,$2,$3,$4] while $m =~ s/^(.*)([duvpr])([0-9]+)(.*)$/ $1 $4 /i;
for (reverse @id) {
- next if $$_[0] =~ /[a-z0-9%/]$/i || $$_[3] =~ /^[a-z]/i;
+ next if $$_[0] =~ /[a-z0-9%\/]$/i || $$_[3] =~ /^[a-z.]/i;
my($t, $id, $ext) = (lc($$_[1]), $$_[2], $$_[3]);
next if $_[HEAP]{log}{$t.$id};
diff --git a/lib/Multi/Sitemap.pm b/lib/Multi/Sitemap.pm
index 991244fd..d21d7fb9 100644
--- a/lib/Multi/Sitemap.pm
+++ b/lib/Multi/Sitemap.pm
@@ -67,11 +67,13 @@ sub cmd_sitemap {
sub staticpages {
$_[KERNEL]->call(core => log => 3, 'Adding static pages');
- $_[KERNEL]->call(sitemap => addurl => '', 'd');
- $_[KERNEL]->call(sitemap => addurl => 'faq', 'm');
+ $_[KERNEL]->call(sitemap => addurl => '', 'daily');
- $_[KERNEL]->call(sitemap => addurl => $_, 'w')
- for ( (map { 'v/'.$_ } 'a'..'z'), 'v/all', 'v/cat', (map { 'p/'.$_ } 'a'..'z'), 'p/all');
+ /([0-9]+)$/ && $_[KERNEL]->call(sitemap => addurl => 'd'.$1, 'monthly')
+ for ( (</www/vndb/data/docs/*>) );
+
+ $_[KERNEL]->call(sitemap => addurl => $_, 'weekly')
+ for ( (map { 'v/'.$_ } 'a'..'z'), 'v/all', 'v/search', (map { 'p/'.$_ } 'a'..'z'), 'p/all');
$_[KERNEL]->yield('vnpages');
}
@@ -88,8 +90,8 @@ sub vnpages {
|);
$q->execute;
while(local $_ = $q->fetchrow_arrayref) {
- $_[KERNEL]->call(sitemap => addurl => 'v'.$_->[0], 'w', $_->[1], 0.7);
- $_[KERNEL]->call(sitemap => addurl => 'v'.$_->[0].'/rg', 'w', $_->[1], 0.7) if $_->[2];
+ $_[KERNEL]->call(sitemap => addurl => 'v'.$_->[0], 'weekly', $_->[1], 0.7);
+ $_[KERNEL]->call(sitemap => addurl => 'v'.$_->[0].'/rg', 'weekly', $_->[1], 0.7) if $_->[2];
}
$_[KERNEL]->yield('releasepages');
@@ -107,7 +109,7 @@ sub releasepages {
|);
$q->execute;
while(local $_ = $q->fetchrow_arrayref) {
- $_[KERNEL]->call(sitemap => addurl => 'r'.$_->[0], 'w', $_->[1], 0.3);
+ $_[KERNEL]->call(sitemap => addurl => 'r'.$_->[0], 'weekly', $_->[1], 0.3);
}
$_[KERNEL]->yield('producerpages');
@@ -125,7 +127,7 @@ sub producerpages {
|);
$q->execute;
while(local $_ = $q->fetchrow_arrayref) {
- $_[KERNEL]->call(sitemap => addurl => 'p'.$_->[0], 'w', $_->[1]);
+ $_[KERNEL]->call(sitemap => addurl => 'p'.$_->[0], 'weekly', $_->[1]);
}
$_[KERNEL]->yield('finish');
diff --git a/lib/VNDB.pm b/lib/VNDB.pm
index 93f9e190..5ac3bc87 100644
--- a/lib/VNDB.pm
+++ b/lib/VNDB.pm
@@ -79,7 +79,6 @@ my %VNDBuris = ( # wildcards: * -> (.+), + -> ([0-9]+)
v => {
'/' => sub { shift->VNBrowse },
new => sub { shift->VNEdit(0); },
- #search => sub { shift->VNSearch },
'*' => sub { $_[2] =~ /^([a-z0]|all|search)$/ ? shift->VNBrowse($_[1]) : shift->ResNotFound; },
},
'v+' => {
@@ -135,10 +134,21 @@ my %OLDuris = (
'*' => sub { shift->ResRedirect('/v/'.$_[1], 'perm') },
},
v => {
- cat => sub { },
+ cat => sub {
+ my $f = $_[0]->FormCheck({name=>'i',required=>0},{name=>'e',required=>0},{name=>'l',required=>0},
+ {name=>'p',required=>0},{name=>'o',required=>0},{name=>'s',required=>0});
+ my %f;
+ $f{$_} = $f->{$_} for (qw|p o s|);
+ $f{q} = join ' ', (map $VNDB::CAT->{substr($_,0,1)}[1]{substr($_,1,2)}, split /,/, $f->{i}),
+ (map '-'.$VNDB::CAT->{substr($_,0,1)}[1]{substr($_,1,2)}, split /,/, $f->{e}),
+ (map $VNDB::LANG->{$_}, split /,/, $f->{l});
+ !$f{$_}&&delete $f{$_} for keys %f;
+ $_[0]->ResRedirect('/v/search'.(!(keys %f)?'':'?'.join(';', map $_.'='.$f{$_}, keys %f) ), 'perm');
+ },
},
'v+' => {
votes => sub { shift->ResRedirect('/v'.(shift).'/stats', 'perm') },
+ hist=>{rss => sub { shift->ResRedirect('/v'.(shift).'/hist/rss.xml', 'perm') } },
},
u => {
'*' => {
@@ -151,7 +161,14 @@ my %OLDuris = (
}
},
}
- }
+ },
+ 'u+' => {
+ hist=>{rss => sub { shift->ResRedirect('/u'.(shift).'/hist/rss.xml', 'perm') } },
+ },
+ 'p+' => {
+ hist=>{rss => sub { shift->ResRedirect('/p'.(shift).'/hist/rss.xml', 'perm') } },
+ },
+ hist=>{rss => sub { shift->ResRedirect('/hist/rss.xml', 'perm') } },
);
diff --git a/lib/VNDB/HomePages.pm b/lib/VNDB/HomePages.pm
index 0e99f517..7ce07983 100644
--- a/lib/VNDB/HomePages.pm
+++ b/lib/VNDB/HomePages.pm
@@ -62,13 +62,13 @@ sub DocPage {
}
-sub History { # type(p,v,r,u), id, [rss|/]
+sub History { # type(p,v,r,u), id, [rss.xml|/]
my($self, $type, $id, $fmt) = @_;
$type ||= '';
$id ||= 0;
$fmt = undef if !$fmt || $fmt eq '/';
- return $self->ResNotFound if $fmt && $fmt ne 'rss';
+ return $self->ResNotFound if $fmt && $fmt ne 'rss.xml';
my $f = $self->FormCheck(
{ name => 'p', required => 0, default => 1, template => 'int' },
diff --git a/lib/VNDB/Util/DB.pm b/lib/VNDB/Util/DB.pm
index a2b4a035..87b7ba89 100644
--- a/lib/VNDB/Util/DB.pm
+++ b/lib/VNDB/Util/DB.pm
@@ -108,6 +108,7 @@ sub DBCategoryCount {
SELECT cat, COUNT(vid) AS cnt
FROM vn_categories vc
JOIN vn v ON v.latest = vc.vid
+ WHERE v.hidden = 0
GROUP BY cat
ORDER BY cnt|
)}
@@ -119,10 +120,15 @@ sub DBCategoryCount {
sub DBLanguageCount {
return { (map { $_ => 0 } keys %$VNDB::LANG ),
map { $_->{language} => $_->{count} } @{shift->DBAll(q|
- SELECT rr.language, COUNT(DISTINCT rv.vid) AS count
+ SELECT rr.language, COUNT(DISTINCT v.id) AS count
FROM releases_rev rr
JOIN releases r ON r.latest = rr.id
JOIN releases_vn rv ON rv.rid = rr.id
+ JOIN vn v ON v.id = rv.vid
+ WHERE r.hidden = 0
+ AND v.hidden = 0
+ AND rr.type <> 2
+ AND rr.released <= TO_CHAR('today'::timestamp, 'YYYYMMDD')::integer
GROUP BY rr.language|)} };
}
diff --git a/lib/VNDB/VN.pm b/lib/VNDB/VN.pm
index fd46672c..5436f07e 100644
--- a/lib/VNDB/VN.pm
+++ b/lib/VNDB/VN.pm
@@ -286,12 +286,8 @@ sub VNBrowse {
page => $f->{p},
chr => $chr,
$chr eq 'search' ? (
- incl => \@cati,
- excl => \@cate,
cat => $self->DBCategoryCount,
langc => $self->DBLanguageCount,
- lang => \@lang,
- plat => \@plat,
) : (),
order => [ $f->{s}, $f->{o} ],
},
diff --git a/lib/global.pl b/lib/global.pl
index cf8d02db..a169abc8 100644
--- a/lib/global.pl
+++ b/lib/global.pl
@@ -102,6 +102,7 @@ our $LSTAT = [
'Wishlist',
'Blacklist',
'Playing',
+ 'Finished',
'Stalled',
'Dropped',
'Other', # XXX: hardcoded at 6