[Cpan-forum-commit] rev 324 - in trunk: . lib/CPAN lib/CPAN/Forum/DB
svn at pti.co.il
svn at pti.co.il
Fri Aug 10 17:15:49 EEST 2007
Author: gabor
Date: 2007-08-10 17:15:49 +0300 (Fri, 10 Aug 2007)
New Revision: 324
Modified:
trunk/
trunk/lib/CPAN/Forum.pm
trunk/lib/CPAN/Forum/DB/Subscriptions.pm
Log:
replace the fetching of subscription usernames from the old and extreamly slow CDBI by
a single SQL statement
Property changes on: trunk
___________________________________________________________________
Name: svk:merge
- 7bc34947-122d-0410-bc5a-f898d2bb5f81:/local/cpan-forum:4390
8c4c90e1-83eb-0310-96eb-e7cb62807872:/local/cpan-forum:12752
+ 7bc34947-122d-0410-bc5a-f898d2bb5f81:/local/cpan-forum:4391
8c4c90e1-83eb-0310-96eb-e7cb62807872:/local/cpan-forum:12752
Modified: trunk/lib/CPAN/Forum/DB/Subscriptions.pm
===================================================================
--- trunk/lib/CPAN/Forum/DB/Subscriptions.pm 2007-08-10 14:15:31 UTC (rev 323)
+++ trunk/lib/CPAN/Forum/DB/Subscriptions.pm 2007-08-10 14:15:49 UTC (rev 324)
@@ -43,4 +43,25 @@
}
+sub get_subscriptions {
+ my ($self, $gid, $pauseid) = @_;
+
+ my $sql = " SELECT DISTINCT username
+ FROM users, subscriptions_all
+ WHERE (users.id=subscriptions_all.uid AND subscriptions_all.allposts=1)
+ UNION
+ SELECT DISTINCT username
+ FROM users, subscriptions
+ WHERE (users.id=subscriptions.uid AND subscriptions.allposts=1 AND gid=?)
+ UNION
+ SELECT DISTINCT username
+ FROM users, subscriptions_pauseid
+ WHERE
+ (users.id=subscriptions_pauseid.uid
+ AND subscriptions_pauseid.allposts=1
+ AND subscriptions_pauseid.pauseid=?)
+ ORDER BY username";
+ return $self->_select_column($sql, $gid, $pauseid);
+}
+
1;
Modified: trunk/lib/CPAN/Forum.pm
===================================================================
--- trunk/lib/CPAN/Forum.pm 2007-08-10 14:15:31 UTC (rev 323)
+++ trunk/lib/CPAN/Forum.pm 2007-08-10 14:15:49 UTC (rev 324)
@@ -1387,20 +1387,10 @@
sub _subscriptions {
my ($self, $t, $group) = @_;
- my %people;
- foreach my $s (
- CPAN::Forum::DB::Subscriptions_all->search(allposts => 1),
- CPAN::Forum::DB::Subscriptions_pauseid->search(allposts => 1, pauseid => $group->{pauseid}),
- CPAN::Forum::DB::Subscriptions->search(allposts => 1, gid => $group->{id}),
- ) {
- $people{$s->uid} = {
- username => $s->uid->username,
- };
- }
- if (%people) {
- my @usernames = values %people;
- $t->param(users => [sort {$a->{username} cmp $b->{username}} @usernames])
- }
+ my $usernames = CPAN::Forum::DB::Subscriptions->get_subscriptions($group->{id}, $group->{pauseid}); # SQL
+ my @users = map {{username => $_}} @$usernames;
+ #$self->log->debug(Data::Dumper->Dump([\@users], ['users']));
+ $t->param(users => \@users);
}
sub add_new_group {
More information about the Cpan-forum-commit
mailing list