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

svn at pti.co.il svn at pti.co.il
Sat Jul 21 18:18:10 EEST 2007


Author: gabor
Date: 2007-07-21 18:18:10 +0300 (Sat, 21 Jul 2007)
New Revision: 283

Modified:
   trunk/
   trunk/Changes
   trunk/TODO
   trunk/lib/CPAN/Forum.pm
   trunk/lib/CPAN/Forum/DB/Groups.pm
   trunk/lib/CPAN/Forum/RM/Update.pm
Log:
add CPAN::Forum::DB::Groups->info_by method



Property changes on: trunk
___________________________________________________________________
Name: svk:merge
   - 7bc34947-122d-0410-bc5a-f898d2bb5f81:/local/cpan-forum:4275
8c4c90e1-83eb-0310-96eb-e7cb62807872:/local/cpan-forum:12752
   + 7bc34947-122d-0410-bc5a-f898d2bb5f81:/local/cpan-forum:4276
8c4c90e1-83eb-0310-96eb-e7cb62807872:/local/cpan-forum:12752

Modified: trunk/Changes
===================================================================
--- trunk/Changes	2007-07-21 15:17:37 UTC (rev 282)
+++ trunk/Changes	2007-07-21 15:18:10 UTC (rev 283)
@@ -1,4 +1,6 @@
   Added option to disable all e-mail notifications
+  Enable adding tags to CPAN modules
+  Replace Class::DBI by plain SQL calls in most of the application
 
 v0.12 
 

Modified: trunk/TODO
===================================================================
--- trunk/TODO	2007-07-21 15:17:37 UTC (rev 282)
+++ trunk/TODO	2007-07-21 15:18:10 UTC (rev 283)
@@ -1,6 +1,23 @@
 
   Tests  *  Tests   *   Tests
 
+  stop using Class::DBI, use plain SQL calls
+
+  move database to PostgreSQL
+
+  move to mod_perl
+
+  Session information: remember logged in user, 
+  have check-box on the main form to say user wants to be remembered
+
+  Enable users to connect their CPAN::Forum id with their PAUSE id:
+    Let logged in user type in their PAUSEid
+    send an e-mail with code to PAUSEID at cpan.org and save the same id in
+      the session object
+    tell the user to check their e-mail and copy the code to the approval form
+   
+
+
   Unite and clean up the code that fetches list of people who need to be
   notified. Test both the interface to manage this and the the actually
   retreival of addresses to be notified.

Modified: trunk/lib/CPAN/Forum/DB/Groups.pm
===================================================================
--- trunk/lib/CPAN/Forum/DB/Groups.pm	2007-07-21 15:17:37 UTC (rev 282)
+++ trunk/lib/CPAN/Forum/DB/Groups.pm	2007-07-21 15:18:10 UTC (rev 283)
@@ -17,12 +17,14 @@
 #use Data::Dumper;
 #__PACKAGE__->add_trigger(before_update => sub {warn Dumper $_[0]});
 
-sub info {
-    my ($self, $group_id) = @_;
+sub info_by {
+    my ($self, $field, $value) = @_;
+    Carp::croak("Invalid field '$field'") if $field ne 'id' and $field ne 'name';
+
     my $sql = "SELECT id, name, status
                FROM groups
-               WHERE id=?";
-    return $self->_fetch_single_hashref($sql, $group_id);
+               WHERE $field=?";
+    return $self->_fetch_single_hashref($sql, $value);
 }
 
 sub dump_groups {

Modified: trunk/lib/CPAN/Forum/RM/Update.pm
===================================================================
--- trunk/lib/CPAN/Forum/RM/Update.pm	2007-07-21 15:17:37 UTC (rev 282)
+++ trunk/lib/CPAN/Forum/RM/Update.pm	2007-07-21 15:18:10 UTC (rev 283)
@@ -20,7 +20,7 @@
 
     my $q = $self->query;
     my $group_id = $q->param('group_id');
-    my $group = CPAN::Forum::DB::Groups->info($group_id);
+    my $group = CPAN::Forum::DB::Groups->info_by(id => $group_id); # SQL
     my $new_tags = $q->param('new_tags'); 
     $self->log->debug("_update_tags in group '$group_id' tags='$new_tags'");
     $new_tags =~ s/^\s+//;
@@ -31,17 +31,17 @@
     my $uid = $self->session->param('uid');
 
     # TODO: let the client side decide which tags need to be added and removed
-    my $tags_hr = CPAN::Forum::DB::Tags->get_tags_hash_of($group_id, $uid);
+    my $tags_hr = CPAN::Forum::DB::Tags->get_tags_hash_of($group_id, $uid); # SQL
     
     foreach my $tag (@tags) {
         if ($tags_hr->{$tag}) {
             delete $tags_hr->{$tag};
         } else { 
-            CPAN::Forum::DB::Tags->attach_tag($uid, $group_id, $tag);
+            CPAN::Forum::DB::Tags->attach_tag($uid, $group_id, $tag); # SQL
         }
     }
     foreach my $old_tag (keys %$tags_hr) {
-        CPAN::Forum::DB::Tags->remove_tag($uid, $group_id, $tags_hr->{$old_tag});
+        CPAN::Forum::DB::Tags->remove_tag($uid, $group_id, $tags_hr->{$old_tag}); # SQL
     }
 
     return $self->notes('tags_updated', dist_name => $group->{name});

Modified: trunk/lib/CPAN/Forum.pm
===================================================================
--- trunk/lib/CPAN/Forum.pm	2007-07-21 15:17:37 UTC (rev 282)
+++ trunk/lib/CPAN/Forum.pm	2007-07-21 15:18:10 UTC (rev 283)
@@ -1006,9 +1006,9 @@
         if ($new_group) {
             if ($new_group =~ /^([\w-]+)$/) {
                 $new_group = $1;
-                my ($gr) = CPAN::Forum::DB::Groups->search(name => $new_group);
+                my ($gr) = CPAN::Forum::DB::Groups->info_by(name => $new_group); # SQL
                 if ($gr) {
-                    $new_group_id = $gr->id;
+                    $new_group_id = $gr->{id};
                 } else {
                     return $self->internal_error(
                         "Group '$new_group' was not in database",
@@ -1020,9 +1020,9 @@
                     );
             }
         } elsif ($new_group_id) {
-            my ($gr) = CPAN::Forum::DB::Groups->retrieve($new_group_id);
+            my ($gr) = CPAN::Forum::DB::Groups->info_by(id => $new_group_id); # SQL
             if ($gr) {
-                $new_group = $gr->name;
+                $new_group = $gr->{name};
             } else {
                 return $self->internal_error(
                     "Group '$new_group_id' was not in database",
@@ -1046,9 +1046,9 @@
 
         if ($new_group_id =~ /^(\d+)$/) {
             $new_group_id = $1;
-            my ($grp) = CPAN::Forum::DB::Groups->retrieve($new_group_id);
+            my ($grp) = CPAN::Forum::DB::Groups->info_by(id => $new_group_id);
             if ($grp) {
-                $new_group = $grp->name;
+                $new_group = $grp->{name};
             } else {
                 return $self->internal_error(
                     "Bad value for new_group (id) '$new_group_id' ?",



More information about the Cpan-forum-commit mailing list