[Cpan-forum-commit] rev 262 - in trunk: . lib/CPAN/Forum/DB lib/CPAN/Forum/RM templates
svn at pti.co.il
svn at pti.co.il
Thu Jul 19 17:06:34 EEST 2007
Author: gabor
Date: 2007-07-19 17:06:34 +0300 (Thu, 19 Jul 2007)
New Revision: 262
Modified:
trunk/
trunk/lib/CPAN/Forum/DB/Tags.pm
trunk/lib/CPAN/Forum/RM/Notify.pm
trunk/templates/faq.tmpl
Log:
add rss feed of the tags
Property changes on: trunk
___________________________________________________________________
Name: svk:merge
- 7bc34947-122d-0410-bc5a-f898d2bb5f81:/local/cpan-forum:4228
8c4c90e1-83eb-0310-96eb-e7cb62807872:/local/cpan-forum:12752
+ 7bc34947-122d-0410-bc5a-f898d2bb5f81:/local/cpan-forum:4229
8c4c90e1-83eb-0310-96eb-e7cb62807872:/local/cpan-forum:12752
Modified: trunk/lib/CPAN/Forum/DB/Tags.pm
===================================================================
--- trunk/lib/CPAN/Forum/DB/Tags.pm 2007-07-19 14:06:18 UTC (rev 261)
+++ trunk/lib/CPAN/Forum/DB/Tags.pm 2007-07-19 14:06:34 UTC (rev 262)
@@ -138,6 +138,17 @@
return $self->_dump($sql);
}
+sub retrieve_latest {
+ my ($self, $limit) = @_;
+
+ my $sql = qq{SELECT tags.name tag, tag_cloud.stamp stamp, groups.name dist
+ FROM tags,tag_cloud,groups
+ WHERE tags.id=tag_cloud.tag_id AND tag_cloud.group_id=groups.id
+ ORDER BY tag_cloud.stamp DESC
+ LIMIT ?};
+ return $self->_fetch_arrayref_of_hashes($sql, $limit);
+}
+
=head1 Design
Every person can put any tage on any module
Modified: trunk/lib/CPAN/Forum/RM/Notify.pm
===================================================================
--- trunk/lib/CPAN/Forum/RM/Notify.pm 2007-07-19 14:06:18 UTC (rev 261)
+++ trunk/lib/CPAN/Forum/RM/Notify.pm 2007-07-19 14:06:34 UTC (rev 262)
@@ -2,6 +2,10 @@
use strict;
use warnings;
+use XML::RSS::SimpleGen;
+use XML::Atom::SimpleFeed;
+use URI;
+
=head2 notify
Send out e-mails upon receiving a submission.
@@ -80,6 +84,8 @@
/rss/dist/Distro-Name latest N entries of that distro name
/rss/author/PAUSEID
+/rss/tags latest N tags
+
=cut
sub rss {
@@ -106,15 +112,21 @@
my $limit = $self->config("${type}_size") || 10;
my $it = $self->get_feed($limit);
+ my $url = "http://$ENV{HTTP_HOST}";
my $call = "_generate_$type";
- my $url = "http://$ENV{HTTP_HOST}";
- return $self->$call($url, $it, $limit);
+
+ my @params = @{$self->param("path_parameters")};
+ my $type;
+ if ($params[0] eq 'tags') {
+ $type = 'tags';
+ }
+
+ return $self->$call($url, $it, $type);
}
sub _generate_atom {
- my ($self, $url, $it, $limit) = @_;
+ my ($self, $url, $it, $type) = @_;
- require XML::Atom::SimpleFeed;
my $feed = XML::Atom::SimpleFeed->new(
title => 'CPAN::Forum',
@@ -156,11 +168,11 @@
return $feed->as_string();
}
-
sub _generate_rss {
- my ($self, $url, $it, $limit) = @_;
+ my ($self, $url, $it, $type) = @_;
- require XML::RSS::SimpleGen;
+ my $q = $self->query;
+
my $rss = XML::RSS::SimpleGen->new( "$url/", "CPAN Forum", "Discussing Perl CPAN modules");
$rss->language( 'en' );
@@ -168,13 +180,18 @@
$rss->webmaster('admin at cpanforum.com');
if ($it and @$it) {
- #while (my $post = $it->next() and $limit--) {
- # my $title = sprintf "[%s] %s", $post->gid->name, $post->subject;
- # $rss->item("$url/posts/" . $post->id(), $title); # TODO _subject_escape ?
- #}
- foreach my $post (@$it) {
- my $title = sprintf "[%s] %s", $post->{group_name}, $post->{subject};
- $rss->item("$url/posts/" . $post->{id}, $title); # TODO _subject_escape ?
+ if ($type and $type eq 'tags') {
+ foreach my $post (@$it) {
+ my $title = sprintf "%s on %s at %s", $post->{tag}, $post->{dist},
+ POSIX::strftime("%Y%m%d %H:%S", localtime($post->{stamp}));
+ my $uri = URI->new("$url/tags/name/" . $post->{tag});
+ $rss->item($uri->as_string, $title);
+ }
+ } else {
+ foreach my $post (@$it) {
+ my $title = sprintf "[%s] %s", $post->{group_name}, $post->{subject};
+ $rss->item("$url/posts/" . $post->{id}, $title); # TODO _subject_escape ?
+ }
}
}
else {
@@ -217,6 +234,10 @@
return CPAN::Forum::DB::Posts->search_latest_threads($limit);
}
+ if ($params[0] eq 'tags') {
+ return CPAN::Forum::DB::Tags->retrieve_latest($limit);
+ }
+
return;
}
Modified: trunk/templates/faq.tmpl
===================================================================
--- trunk/templates/faq.tmpl 2007-07-19 14:06:18 UTC (rev 261)
+++ trunk/templates/faq.tmpl 2007-07-19 14:06:34 UTC (rev 262)
@@ -40,6 +40,7 @@
<li> http://www.cpanforum.com/rss/dist/Distro-Name - latest posts in distro</li>
<li> http://www.cpanforum.com/rss/author/PAUSEID - latest posts
in any of the distros of the given CPAN author</li>
+ <li> http://www.cpanforum.com/rss/tags - latest tags</li>
</ul>
Atom feeds:
<ul>
More information about the Cpan-forum-commit
mailing list