[Cpan-forum-commit] rev 307 - in trunk: . lib/CPAN/Forum/DB lib/CPAN/Forum/RM

svn at pti.co.il svn at pti.co.il
Wed Jul 25 17:47:47 EEST 2007


Author: gabor
Date: 2007-07-25 17:47:47 +0300 (Wed, 25 Jul 2007)
New Revision: 307

Modified:
   trunk/
   trunk/lib/CPAN/Forum/DB/Subscriptions.pm
   trunk/lib/CPAN/Forum/RM/Subscriptions.pm
Log:
create find_one method of DB::Subscriptions



Property changes on: trunk
___________________________________________________________________
Name: svk:merge
   - 7bc34947-122d-0410-bc5a-f898d2bb5f81:/local/cpan-forum:4327
8c4c90e1-83eb-0310-96eb-e7cb62807872:/local/cpan-forum:12752
   + 7bc34947-122d-0410-bc5a-f898d2bb5f81:/local/cpan-forum:4328
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-07-25 14:47:16 UTC (rev 306)
+++ trunk/lib/CPAN/Forum/DB/Subscriptions.pm	2007-07-25 14:47:47 UTC (rev 307)
@@ -8,4 +8,19 @@
 __PACKAGE__->has_a(uid => "CPAN::Forum::DB::Users");
 __PACKAGE__->has_a(gid => "CPAN::Forum::DB::Groups");
 
+
+sub find_one {
+    my ($self, %args) = @_;
+    # check if keys of args is either uid or gid
+    my @fields = keys %args;
+    my $where = join " AND ", map {"$_=?"} @fields;
+    my $sql = "SELECT id, gid, uid, allposts, starters, followups, announcements FROM subscriptions";
+    if ($where) {
+        $sql .= " WHERE $where";
+    }
+
+    $self->_fetch_single_hashref($sql, @args{@fields}); 
+
+}
+
 1;

Modified: trunk/lib/CPAN/Forum/RM/Subscriptions.pm
===================================================================
--- trunk/lib/CPAN/Forum/RM/Subscriptions.pm	2007-07-25 14:47:16 UTC (rev 306)
+++ trunk/lib/CPAN/Forum/RM/Subscriptions.pm	2007-07-25 14:47:47 UTC (rev 307)
@@ -25,14 +25,14 @@
 
 C<update_subscription> will process the submitted form.
 
+ /mypan
+ /mypan/dist/MODULE-NAME
+
 =cut
 
 sub mypan {
     my $self = shift;
 
-    my $t = $self->load_tmpl("mypan.tmpl",
-        loop_context_vars => 1,
-    );
     my $username = $self->session->param("username");
     my $user = CPAN::Forum::DB::Users->info_by(username => $username); # SQL
 
@@ -41,19 +41,27 @@
             "Trouble accessing personal information of: '$username'",
             );
     }
-    my $fullname = $user->{fullname};
 
-    $t->param(fullname => $fullname);
-    $t->param(title    => "Information about $username");
-
     my @params = @{$self->param("path_parameters")};
-    my ($gids, $subscriptions) = 
-            (@params == 2 and $params[0] eq "dist")
-            ?           $self->_get_module_subscription($user, $params[1])
-            :           $self->_get_all_subscriptions($user);
+    my ($gids, $subscriptions);
+    if (@params == 2 and $params[0] eq "dist") {
+        my $group_name = $params[1];
+        my $group = CPAN::Forum::DB::Groups->info_by(name => $group_name); # SQL
+        if (not $group) {
+            return $self->internal_error("Accessing");
+        }
+        ($gids, $subscriptions) = $self->_get_module_subscription($user, $group_name, $group);
+    } else {
+        ($gids, $subscriptions) = $self->_get_all_subscriptions($user);
+    }
 
+    my $t = $self->load_tmpl("mypan.tmpl",
+        loop_context_vars => 1,
+    );
     $t->param(subscriptions => $subscriptions);
-    $t->param(gids => $gids);
+    $t->param(gids     => $gids);
+    $t->param(fullname => $user->{fullname});
+    $t->param(title    => "Information about $username");
 
     $t->output;
 }
@@ -99,25 +107,20 @@
     return ($gids, \@subscriptions);
 }
 
-
 sub _get_module_subscription {
-    my ($self, $user, $group_name)  = @_;
+    my ($self, $user, $group_name, $group)  = @_;
 
-    my $group = CPAN::Forum::DB::Groups->info_by(name => $group_name); # SQL
-    if (not $group) {
-        return $self->internal_error("Accessing");
-    }
     my @subscriptions;
     my $gid = $group->{id};
     my $gids = $group->{id};
-    my ($s) = CPAN::Forum::DB::Subscriptions->search(uid => $user->{id}, gid => $gid);
+    my ($s) = CPAN::Forum::DB::Subscriptions->find_one(uid => $user->{id}, gid => $gid); # SQL
     if ($s) {
         push @subscriptions, {
             gid       => $gid,
             group     => $group_name,
-            allposts  => $s->allposts,
-            starters  => $s->starters,
-            followups => $s->followups,
+            allposts  => $s->{allposts},
+            starters  => $s->{starters},
+            followups => $s->{followups},
         };
     } else {
         push @subscriptions, {



More information about the Cpan-forum-commit mailing list