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

svn at pti.co.il svn at pti.co.il
Tue Aug 14 11:35:08 EEST 2007


Author: gabor
Date: 2007-08-14 11:35:08 +0300 (Tue, 14 Aug 2007)
New Revision: 345

Modified:
   trunk/
   trunk/lib/CPAN/Forum.pm
   trunk/lib/CPAN/Forum/DBI.pm
   trunk/lib/CPAN/Forum/RM/Search.pm
Log:
allow new mypager to fetch results including username



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

Modified: trunk/lib/CPAN/Forum/DBI.pm
===================================================================
--- trunk/lib/CPAN/Forum/DBI.pm	2007-08-14 08:34:51 UTC (rev 344)
+++ trunk/lib/CPAN/Forum/DBI.pm	2007-08-14 08:35:08 UTC (rev 345)
@@ -262,15 +262,26 @@
     my ($where, @values) = $self->_prep_where($args{where});
     $CPAN::Forum::logger->debug("where='$where'");
 
-    my $fetch_sql = "";
+    my $fetch_sql = "SELECT posts.id, subject, thread, date, username FROM posts, users";
     my $count_sql = "SELECT COUNT(*) FROM posts";
-    my @fetch_values;
+    my @fetch_values = @values;
 
     if ($where) {
         $fetch_sql .= " WHERE $where";
         $count_sql .= " WHERE $where";
     }
 
+    if ($where) {
+        $fetch_sql .= " AND ";
+    } else {
+        $fetch_sql = " WHERE ";
+    }
+    $fetch_sql .= " users.id=posts.uid";
+
+    my $order_by = $args{order_by};
+    $order_by =~ s/^\s*id/posts.id/;
+    $fetch_sql .= " ORDER BY $order_by";
+
     $fetch_sql .= " LIMIT ?";
     my $limit = $args{per_page} || 10;
     push @fetch_values, $limit;
@@ -281,12 +292,20 @@
         push @fetch_values, $limit*($page-1);
     }
 
-    $fetch_sql .= "ORDER BY $args{order_by}";
     $CPAN::Forum::logger->debug("count_sql='$count_sql' " . Data::Dumper->Dump([\@values], ['values']));
     my $total = $self->_fetch_single_value($count_sql, @values);
     $CPAN::Forum::logger->debug("total='$total'");
 
-    return {};
+    $CPAN::Forum::logger->debug("fetch_sql='$fetch_sql' " . Data::Dumper->Dump([\@fetch_values], ['fetch_values']));
+    my $results = $self->_fetch_arrayref_of_hashes($fetch_sql, @fetch_values);
+    $CPAN::Forum::logger->debug(Data::Dumper->Dump([$results], ['results']));
+
+    my %pager = (
+        total_entries => $total,
+        results       => $results,
+    );
+
+    return \%pager;
 }
 1;
 

Modified: trunk/lib/CPAN/Forum/RM/Search.pm
===================================================================
--- trunk/lib/CPAN/Forum/RM/Search.pm	2007-08-14 08:34:51 UTC (rev 344)
+++ trunk/lib/CPAN/Forum/RM/Search.pm	2007-08-14 08:35:08 UTC (rev 345)
@@ -11,21 +11,21 @@
     $params->{per_page} = $self->config("per_page");
 
     my $pager   = CPAN::Forum::DB::Posts->mysearch($params);
-    my @results = $pager->search_where();
-    $self->log->debug(Data::Dumper->Dump([\@results], ['results']));
-    my $total   = $pager->total_entries;
+    my $results = $pager->{results};
+    #$self->log->debug(Data::Dumper->Dump([$results], ['results']));
+    my $total   = $pager->{total_entries};
     $self->log->debug("number of entries: total=$total");
-    my $data = $self->build_listing(\@results);
+    my $data = $self->build_listing($results);
 
     $t->param(messages       => $data);
     $t->param(total          => $total);
-    $t->param(previous_page  => $pager->previous_page);
-    $t->param(next_page      => $pager->next_page);
-    $t->param(first_entry    => $pager->first);
-    $t->param(last_entry     => $pager->last);
-    $t->param(first_page     => 1)                      if $pager->current_page != 1;
-    $t->param(last_page      => $pager->last_page)      if $pager->current_page != $pager->last_page;
-    return $pager->total_entries;
+#    $t->param(previous_page  => $pager->previous_page);
+#    $t->param(next_page      => $pager->next_page);
+#    $t->param(first_entry    => $pager->first);
+#    $t->param(last_entry     => $pager->last);
+#    $t->param(first_page     => 1)                      if $pager->current_page != 1;
+#    $t->param(last_page      => $pager->last_page)      if $pager->current_page != $pager->last_page;
+    return $pager->{total_entries};
 }
 
 sub module_search_form {

Modified: trunk/lib/CPAN/Forum.pm
===================================================================
--- trunk/lib/CPAN/Forum.pm	2007-08-14 08:34:51 UTC (rev 344)
+++ trunk/lib/CPAN/Forum.pm	2007-08-14 08:35:08 UTC (rev 345)
@@ -749,8 +749,8 @@
     # eliminate undefs and duplicates (TODO: I don't know why are there such values)
     my %seen;
     foreach my $p (@$it) {
-        next if not defined $p->thread;
-        $seen{$p->thread}++;
+        next if not defined $p->{thread};
+        $seen{$p->{thread}}++;
     }
     my @threads = keys %seen;
 
@@ -760,19 +760,19 @@
         #$self->log->debug(Data::Dumper->Dump([$post], ['post']));
         #$self->log->debug("id=" . $post->id);
 #warn "called for each post";
-        my $thread = $post->thread;
+        my $thread = $post->{thread};
         my $thread_count = ($thread and $threads->{$thread}) ? $threads->{$thread}{cnt} : 0;
         push @resp, {
-            subject      => _subject_escape($post->subject), 
-            id           => $post->id, 
-            group        => $post->gid->name, 
+            subject      => _subject_escape($post->{subject}),
+            id           => $post->{id},
+            group        => $post->{group_name},
             thread       => ($thread_count > 1 ? 1 : 0),
-            thread_id    => $post->thread,
+            thread_id    => $post->{thread},
             thread_count => $thread_count-1,
-            #date         => POSIX::strftime("%e/%b", localtime $post->date),
-            #date         => scalar localtime $post->date,
-            date         => _ellapsed($post->date),
-            postername   => $post->uid->username,
+            #date         => POSIX::strftime("%e/%b", localtime $post->{date}),
+            #date         => scalar localtime $post->{date},
+            date         => _ellapsed($post->{date}),
+            postername   => $post->{username},
             };
     }
     return \@resp;



More information about the Cpan-forum-commit mailing list