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

svn at pti.co.il svn at pti.co.il
Sun Jul 22 07:02:13 EEST 2007


Author: gabor
Date: 2007-07-22 07:02:13 +0300 (Sun, 22 Jul 2007)
New Revision: 293

Modified:
   trunk/
   trunk/lib/CPAN/Forum/DB/Posts.pm
   trunk/lib/CPAN/Forum/RM/Other.pm
   trunk/lib/CPAN/Forum/RM/Users.pm
   trunk/schema/schema.sql
   trunk/templates/stats.tmpl
Log:
show most active users
add another index to the database to speed up this query



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

Modified: trunk/lib/CPAN/Forum/DB/Posts.pm
===================================================================
--- trunk/lib/CPAN/Forum/DB/Posts.pm	2007-07-22 04:01:49 UTC (rev 292)
+++ trunk/lib/CPAN/Forum/DB/Posts.pm	2007-07-22 04:02:13 UTC (rev 293)
@@ -17,15 +17,6 @@
 __PACKAGE__->set_sql(count_like     => "SELECT count(*) FROM __TABLE__ WHERE %s LIKE '%s'");
 #__PACKAGE__->add_constraint('subject_too_long', subject => sub { length $_[0] <= 70 and $_[0] !~ /</});
 #__PACKAGE__->add_constraint('text_format', text => \&check_text_format);
-#__PACKAGE__->set_sql(stat_posts_by_user => qq{
-#            SELECT COUNT(*) cnt, users.username username 
-#            FROM posts,users
-#            WHERE posts.uid=users.id
-#            GROUP BY username
-#            ORDER BY cnt DESC
-#            LIMIT ?
-#            });
-
 my $MORE_SQL = 'groups.name group_name, users.fname user_fname, users.lname user_lname, users.username user_username';
 
 sub get_post {
@@ -159,5 +150,18 @@
     return $self->_fetch_arrayref_of_hashes($sql, $limit);
 }
 
+sub stat_posts_by_user {
+    my ($self, $limit) = @_;
+    my $sql = qq{
+            SELECT COUNT(*) cnt, users.username username 
+            FROM posts,users
+            WHERE posts.uid=users.id
+            GROUP BY username
+            ORDER BY cnt DESC
+            LIMIT ?
+            };
+    return $self->_fetch_arrayref_of_hashes($sql, $limit);
+}
+
 1;
  

Modified: trunk/lib/CPAN/Forum/RM/Other.pm
===================================================================
--- trunk/lib/CPAN/Forum/RM/Other.pm	2007-07-22 04:01:49 UTC (rev 292)
+++ trunk/lib/CPAN/Forum/RM/Other.pm	2007-07-22 04:02:13 UTC (rev 293)
@@ -39,12 +39,17 @@
 sub stats {
     my $self = shift;
     my $t = $self->load_tmpl("stats.tmpl");
-    my $groups = CPAN::Forum::DB::Posts->stat_posts_by_group(50); # SQL
+    my $modules_cnt = 50;
+    my $groups = CPAN::Forum::DB::Posts->stat_posts_by_group($modules_cnt); # SQL
+    my $users_cnt = 50;
+    my $top_users = CPAN::Forum::DB::Posts->stat_posts_by_user($users_cnt); # SQL
     #
     # TODO: user stats removed as it was extreamly slow..
     #     
+    $t->param(modules_cnt => $modules_cnt);
     $t->param(groups => $groups);
-    #$t->param(users  => \@users);
+    $t->param(users_cnt => $users_cnt);
+    $t->param(users  => $top_users);
     $t->output;
 }
 

Modified: trunk/lib/CPAN/Forum/RM/Users.pm
===================================================================
--- trunk/lib/CPAN/Forum/RM/Users.pm	2007-07-22 04:01:49 UTC (rev 292)
+++ trunk/lib/CPAN/Forum/RM/Users.pm	2007-07-22 04:02:13 UTC (rev 293)
@@ -27,7 +27,7 @@
                 
     $t->param(hide_username => 1);
 
-    my ($user) = CPAN::Forum::DB::Users->info_by(username => $username); # SQL
+    my $user = CPAN::Forum::DB::Users->info_by(username => $username); # SQL
 
     if (not $user) {
         return $self->internal_error("Non existing user was accessed");
@@ -35,9 +35,9 @@
 
 
     my $fullname = "";
-    $fullname .= $user->fname if $user->fname;
+    $fullname .= $user->{fname} if $user->{fname};
     $fullname .= " " if $fullname;
-    $fullname .= $user->lname if $user->lname;
+    $fullname .= $user->{lname} if $user->{lname};
     #$fullname = $username if not $fullname;
 
     $t->param(this_username => $username);
@@ -45,7 +45,7 @@
     $t->param(title => "Information about $username");
 
     my $page = $q->param('page') || 1;
-    $self->_search_results($t, {where => {uid => $user->id}, page => $page});
+    $self->_search_results($t, {where => {uid => $user->{id}}, page => $page});
     $t->output;
 }
 

Modified: trunk/schema/schema.sql
===================================================================
--- trunk/schema/schema.sql	2007-07-22 04:01:49 UTC (rev 292)
+++ trunk/schema/schema.sql	2007-07-22 04:02:13 UTC (rev 293)
@@ -139,6 +139,7 @@
 CREATE UNIQUE INDEX groups_name ON groups (name);
 CREATE INDEX posts_thread ON posts (thread);
 CREATE INDEX posts_gid ON posts (gid);
+CREATE INDEX posts_uid ON posts (uid);
 
 ---- add tagcloud
 --- TODO unique tag_id, group_id pair

Modified: trunk/templates/stats.tmpl
===================================================================
--- trunk/templates/stats.tmpl	2007-07-22 04:01:49 UTC (rev 292)
+++ trunk/templates/stats.tmpl	2007-07-22 04:02:13 UTC (rev 293)
@@ -5,7 +5,7 @@
 
 <a name="statistics"></a>
 <div class="about_list">
-<p class="about_title">Top 50 modules (number of posts)</p>
+<p class="about_title">Top <TMPL_VAR modules_cnt> modules (number of posts)</p>
 <table>
 <TMPL_LOOP groups>
   <tr><td><a href="/dist/<TMPL_VAR gname>"><TMPL_VAR gname></a></td><td><TMPL_VAR cnt></td></tr>
@@ -15,7 +15,7 @@
 
 <TMPL_IF users>
     <div class="about_list">
-    <p class="about_title">10 most active users (number of posts)</p>
+    <p class="about_title"><TMPL_VAR users_cnt> most active users (number of posts)</p>
     <table>
     <TMPL_LOOP users>
       <tr><td><a href="/users/<TMPL_VAR username>"><TMPL_VAR username></a></td><td><TMPL_VAR cnt></td></tr>



More information about the Cpan-forum-commit mailing list