CLEANUP: moved more statistics into the sortable table
authorArun Persaud <arun@nubati.net>
Fri, 5 Mar 2010 05:43:37 +0000 (21:43 -0800)
committerArun Persaud <arun@nubati.net>
Fri, 5 Mar 2010 05:58:51 +0000 (21:58 -0800)
include/functions.php
include/stats.php

index 16d094c343f3f77707495616110c0f69b97affc5..173ccd483e5ed47bd28b5bfa7a73cd660dfe284d 100644 (file)
@@ -1156,7 +1156,8 @@ function generate_global_score_table()
 
   /* save information in an array */
   while( $r = DB_fetch_array($result))
 
   /* save information in an array */
   while( $r = DB_fetch_array($result))
-    $player[$r[0]] = array('name'=> $r[1], 'points' => 0 ,'nr' => 0);
+    $player[$r[0]] = array('name'=> $r[1], 'points' => 0 , 'nr' => 0, 'active' => 0,
+                          'response' => 0 , 'solo' => 0, 'soloavg' => 0);
 
   /* get points and generate table */
   foreach($gameids as $gameid)
 
   /* get points and generate table */
   foreach($gameids as $gameid)
@@ -1182,9 +1183,53 @@ function generate_global_score_table()
        }
     }
 
        }
     }
 
+  /* add number of active games */
+  $result = DB_query_array_all("SELECT user_id, COUNT(*) as c  " .
+                              " FROM Hand".
+                              " LEFT JOIN Game ON Game.id=game_id".
+                              " WHERE Game.status IN ('pre','play')".
+                              " GROUP BY user_id");
+
+  foreach($result as $res)
+    {
+      $player[$res[0]]['active'] = $res[1];
+    }
+
+  /* response time of users*/
+  $result = DB_query_array_all("SELECT user_id,".
+                              "IFNULL(AVG(if(P1.sequence in (2,3,4),".
+                              "-timestampdiff(MINUTE,mod_date,(select mod_date from Play P2 where P1.trick_id=P2.trick_id  and P2.sequence=P1.sequence-1)),NULL )),1e9) as a ".
+                              "FROM Play P1 ".
+                              "LEFT JOIN Hand_Card ON P1.hand_card_id=Hand_Card.id ".
+                              "LEFT JOIN Hand ON Hand.id=Hand_Card.hand_id ".
+                              "GROUP BY user_id ");
+
+  foreach($result as $res)
+    {
+      $player[$res[0]]['response'] = $res[1];
+    }
+
+  /* most solos */
+  $result = DB_query_array_all("SELECT user_id as uid,".
+                              "       COUNT(*), ".
+                              "       COUNT(*)/(SELECT COUNT(*) FROM Hand LEFT JOIN User ON User.id=Hand.user_id WHERE User.id=uid) as c ".
+                              " FROM Game ".
+                              " LEFT JOIN Hand ON Hand.position=startplayer AND Game.id=Hand.game_id ".
+                              " WHERE type='solo' AND Game.status='gameover' ".
+                              " GROUP BY user_id ");
+
+  foreach($result as $res)
+    {
+      $player[$res[0]]['solo'] = $res[1];
+      $player[$res[0]]['soloavg'] = $res[2];
+    }
+
+
+  /* sort everything nicely */
+
   function cmp($a,$b)
   {
   function cmp($a,$b)
   {
-    if($a['nr']==0 ) return 1;
+    if($a['nr']==0) return 1;
     if($b['nr']==0) return 1;
 
     $a=$a['points']/$a['nr'];
     if($b['nr']==0) return 1;
 
     $a=$a['points']/$a['nr'];
@@ -1196,11 +1241,13 @@ function generate_global_score_table()
   }
   usort($player,'cmp');
 
   }
   usort($player,'cmp');
 
+
   foreach($player as $pl)
     {
       /* limit to players with at least 10 games */
       if($pl['nr']>10)
   foreach($player as $pl)
     {
       /* limit to players with at least 10 games */
       if($pl['nr']>10)
-       $return[] = array( $pl['name'], round($pl['points']/$pl['nr'],3), $pl['points'],$pl['nr']);
+       $return[] = array( $pl['name'], round($pl['points']/$pl['nr'],3), $pl['points'],$pl['nr'],$pl['active'],
+                          $pl['response'],$pl['solo'],$pl['soloavg']);
     }
 
   return $return;
     }
 
   return $return;
index fb56df8243413c0f4768789c0e133d03301a6328..61e7d880af99d216d2d176b21aea668eb9d3f3b8 100644 (file)
@@ -24,6 +24,9 @@
 if(!isset($HOST))
   exit;
 
 if(!isset($HOST))
   exit;
 
+/* turn warnings off (problem with two warnings in function.php */
+error_reporting(!E_ALL & ~E_NOTICE);
+
 $name  = $_SESSION["name"];
 $email = DB_get_email('name',$name);
 
 $name  = $_SESSION["name"];
 $email = DB_get_email('name',$name);
 
@@ -190,46 +193,6 @@ if( !$content = getCache("cache/stats.html",60*60*24) )
   array_unshift($result,array("Position","Number of tricks"));
   echo output_table($result,"Tricks at the table","stats");
 
   array_unshift($result,array("Position","Number of tricks"));
   echo output_table($result,"Tricks at the table","stats");
 
-  /* most solos */
-  $result = DB_query_array_all("SELECT fullname as fname,".
-                              "       COUNT(*), ".
-                              "       COUNT(*)/(SELECT COUNT(*) FROM Hand LEFT JOIN User ON User.id=Hand.user_id WHERE fullname=fname) as c ".
-                              " FROM Game ".
-                              " LEFT JOIN Hand ON Hand.position=startplayer AND Game.id=Hand.game_id ".
-                              " LEFT JOIN User ON User.id=Hand.user_id ".
-                              " WHERE type='solo' AND Game.status='gameover' ".
-                              " GROUP BY user_id ".
-                              " ORDER BY c DESC;");
-  array_unshift($result,array("Name","Number of solos","Solos/game"));
-  echo output_table($result,"Most solos","stats");
-
-
-  /* most active games */
-  $result = DB_query_array_all("SELECT fullname, COUNT(*) as c  " .
-                              " FROM Hand".
-                              " LEFT JOIN User ON User.id=user_id".
-                              " LEFT JOIN Game ON Game.id=game_id".
-                              " WHERE Game.status IN ('pre','play')".
-                              " GROUP BY user_id".
-                              " ORDER BY c DESC LIMIT 7" );
-  array_unshift($result,array("Name","Number of active games"));
-  echo output_table($result,"Active games","stats");
-
-  /* response time of users*/
-  $result = DB_query_array_all("SELECT User.fullname,".
-                              "IFNULL(AVG(if(P1.sequence in (2,3,4),".
-                              "-timestampdiff(MINUTE,mod_date,(select mod_date from Play P2 where P1.trick_id=P2.trick_id  and P2.sequence=P1.sequence-1)),NULL )),1e9) as a, ".
-                              " COUNT(*) as na ".
-                              "FROM Play P1 ".
-                              "LEFT JOIN Hand_Card ON P1.hand_card_id=Hand_Card.id ".
-                              "LEFT JOIN Hand ON Hand.id=Hand_Card.hand_id ".
-                              "LEFT JOIN User ON Hand.user_id=User.id ".
-                              "GROUP BY user_id ".
-                              "HAVING na>8 ".
-                              "ORDER BY a " );
-  array_unshift($result,array("Name","Average minutes before response","trick count"));
-  echo output_table($result,"Response","stats");
-
   /*
  does the party win more often if they start
 
   /*
  does the party win more often if they start
 
@@ -244,8 +207,9 @@ if( !$content = getCache("cache/stats.html",60*60*24) )
  echo " games</p>\n";
   */
   $result = generate_global_score_table();
  echo " games</p>\n";
   */
   $result = generate_global_score_table();
-  array_unshift($result,array("Name","Average score per game","Total Points","Number of games"));
-  echo output_table($result,"Points per game (need more than 10 games)","stats","ScoreTable");
+  array_unshift($result,array('Name','Average score per game','Total Points','Number of games', 'Active games',
+                             'Response Time [min]','Number of solos','Solos/game'));
+  echo output_table($result,'Players (need more than 10 games)','stats','ScoreTable');
 
   /*
    * how often is the last trick a non-trump trick
 
   /*
    * how often is the last trick a non-trump trick