[Cpan-forum-commit] rev 172 - in trunk: . bin lib/CPAN lib/CPAN/Forum
svn at pti.co.il
svn at pti.co.il
Fri Aug 25 18:15:52 IDT 2006
Author: gabor
Date: 2006-08-25 18:15:51 +0300 (Fri, 25 Aug 2006)
New Revision: 172
Modified:
trunk/
trunk/bin/populate.pl
trunk/bin/upgrade_to_0_12.pl
trunk/lib/CPAN/Forum.pm
trunk/lib/CPAN/Forum/Posts.pm
Log:
make sure rss feed of single module and of a module author works
Property changes on: trunk
___________________________________________________________________
Name: svk:merge
- 8c4c90e1-83eb-0310-96eb-e7cb62807872:/local/cpan-forum:10999
+ 8c4c90e1-83eb-0310-96eb-e7cb62807872:/local/cpan-forum:11000
Modified: trunk/bin/populate.pl
===================================================================
--- trunk/bin/populate.pl 2006-08-25 15:15:43 UTC (rev 171)
+++ trunk/bin/populate.pl 2006-08-25 15:15:51 UTC (rev 172)
@@ -16,13 +16,12 @@
-my %opts = (
- dir => "$Bin/../db",
-);
+my %opts;
GetOptions(\%opts, "sendmail", "source=s", "dir=s", "fetch", "help")
or usage();
usage() if $opts{help};
+usage() if not $opts{dir};
sub usage {
print <<"END_USAGE";
@@ -77,11 +76,14 @@
foreach my $d (@distributions) {
# skip scripts
- next LINE if not $d->prefix or $d->prefix =~ m{^\w/\w\w/\w+/scripts/};
+ if (not $d->prefix or $d->prefix =~ m{^\w/\w\w/\w+/scripts/}) {
+ warn "no prefix line $.\n";
+ next LINE;
+ }
my $name = $d->dist;
if (not $name) {
- #warn "No name: " . $d->prefix . "\n";
+ warn "No name: line: $. prefix:" . $d->prefix . "\n";
next LINE;
}
@@ -90,10 +92,28 @@
my %new = (
version => ($d->version() || ""),
- pauseid => ($d->cpanid() || ""),
);
+ my $pauseid = ($d->cpanid() || "");
+ my $p;
+ if ($pauseid) {
+ eval {
+ $p = CPAN::Forum::Authors->find_or_create({ pauseid => $pauseid });
+ };
+ if ($@) {
+ warn "$name\n";
+ warn $@;
+ next LINE;
+ }
+ }
+ if (not $p) {
+ warn "No PAUSEID?" . $d->prefix . "\n";
+ next LINE;
+ }
+ $new{pauseid} = $p->id;
+
+
my ($g) = CPAN::Forum::Groups->search(name => $name);
if ($g) {
my $changed;
@@ -111,27 +131,20 @@
}
}
- $g->update if $changed;
+ if ($changed) {
+ $g->update;
+ }
next LINE;
}
- $message{new} .= sprintf "%s %s\n", $name, $new{version}, $new{pauseid};
- my $pause;
- eval {
- $pause = CPAN::Forum::Authors->find_or_create({ pauseid => $new{pauseid} });
- };
- if ($@) {
- warn "$name\n";
- warn $@;
- next LINE;
- }
+ $message{new} .= sprintf "Creating %s %s\n", $name, $new{version}, $pauseid;
eval {
my $g = CPAN::Forum::Groups->create({
name => $name,
gtype => $CPAN::Forum::DBI::group_types{Distribution},
version => $new{version},
- pauseid => $pause->id,
+ pauseid => $new{pauseid},
});
};
if ($@) {
Modified: trunk/bin/upgrade_to_0_12.pl
===================================================================
--- trunk/bin/upgrade_to_0_12.pl 2006-08-25 15:15:43 UTC (rev 171)
+++ trunk/bin/upgrade_to_0_12.pl 2006-08-25 15:15:51 UTC (rev 172)
@@ -55,4 +55,9 @@
announcements BOOLEAN
);
+CREATE TABLE authors (
+ id INTEGER PRIMARY KEY,
+ pauseid VARCHAR(100) UNIQUE NOT NULL
+);
+
Modified: trunk/lib/CPAN/Forum/Posts.pm
===================================================================
--- trunk/lib/CPAN/Forum/Posts.pm 2006-08-25 15:15:43 UTC (rev 171)
+++ trunk/lib/CPAN/Forum/Posts.pm 2006-08-25 15:15:51 UTC (rev 172)
@@ -15,6 +15,14 @@
__PACKAGE__->set_sql(count_like => "SELECT count(*) FROM __TABLE__ WHERE %s LIKE '%s'");
#__PACKAGE__->add_constraint('subject_too_long', subject => sub { length $_[0] <= 70 and $_[0] !~ /</});
#__PACKAGE__->add_constraint('text_format', text => \&check_text_format);
+__PACKAGE__->set_sql(post_by_pauseid => qq{
+ SELECT posts.id id
+ FROM posts
+ WHERE gid IN (
+ SELECT DISTINCT groups.id
+ FROM groups, authors
+ WHERE groups.pauseid=authors.id and authors.pauseid=?)
+ ORDER BY date DESC});
sub retrieve_latest {
my ($class, $count) = @_;
Modified: trunk/lib/CPAN/Forum.pm
===================================================================
--- trunk/lib/CPAN/Forum.pm 2006-08-25 15:15:43 UTC (rev 171)
+++ trunk/lib/CPAN/Forum.pm 2006-08-25 15:15:51 UTC (rev 172)
@@ -2187,17 +2187,28 @@
sub rss {
my $self = shift;
- my $cnt = $self->config("rss_size") || 10;
+ my $limit = $self->config("rss_size") || 10;
my @params = @{$self->param("path_parameters")};
my $it;
- if (@params > 1 and $params[0] eq "dist") {
- my $dist = $params[1];
- $self->log->debug("rss of dist: '$dist'");
- my ($group) = CPAN::Forum::Groups->search({ name => $dist });
- $it = CPAN::Forum::Posts->search(gid => $group->id, {order_by => 'date DESC'}),
- } else {
- $it = CPAN::Forum::Posts->retrieve_latest($cnt);
+ if (@params > 1) {
+ if ($params[0] eq 'dist') {
+ my $dist = $params[1];
+ $self->log->debug("rss of dist: '$dist'");
+ my ($group) = CPAN::Forum::Groups->search({ name => $dist });
+ $it = CPAN::Forum::Posts->search(gid => $group->id, {order_by => 'date DESC'});
+ }
+ elsif ($params[0] eq 'author') {
+ my $pauseid = uc $params[1];
+ $self->log->debug("rss of author: '$pauseid'");
+ $it = CPAN::Forum::Posts->search_post_by_pauseid($pauseid);
+ }
+ else {
+ $self->log->warnings("rss requested for $params[0]");
+ }
}
+ else {
+ $it = CPAN::Forum::Posts->retrieve_latest($limit);
+ }
require XML::RSS::SimpleGen;
my $url = "http://$ENV{HTTP_HOST}/";
@@ -2209,7 +2220,7 @@
$rss->webmaster($admin->email);
my $prefix = "";
- while (my $post = $it->next() and $cnt--) {
+ while (my $post = $it->next() and $limit--) {
$rss->item($url. "posts/" . $post->id(), $prefix . $post->subject); # TODO _subject_escape ?
}
# $rss->save("file.rss");
More information about the Cpan-forum-commit
mailing list