From 981c12ce5d5aaf606584a4ab59054316d2b6c6c2 Mon Sep 17 00:00:00 2001
From: Arun Persaud
Date: Sun, 4 May 2008 19:40:10 -0700
Subject: [PATCH] NEW FEATURES: show global statistic
show points/game for all players that have 10 or more games
Signed-off-by: Arun Persaud
---
include/db.php | 13 ++++++---
include/functions.php | 62 ++++++++++++++++++++++++++++++++++++++++++-
include/stats.php | 5 ++--
3 files changed, 73 insertions(+), 7 deletions(-)
diff --git a/include/db.php b/include/db.php
index 42d2bef..b13c0f0 100644
--- a/include/db.php
+++ b/include/db.php
@@ -919,10 +919,15 @@ function DB_get_gameids_of_finished_games_by_session($session)
{
$ids = array ();
- $queryresult = mysql_query("SELECT id FROM Game ".
- " WHERE session=$session ".
- " AND status='gameover' ".
- " ORDER BY create_date ASC");
+ if($session==0) /* return all games */
+ $queryresult = mysql_query("SELECT id FROM Game ".
+ " WHERE status='gameover' ".
+ " ORDER BY create_date ASC");
+ else /* return games in a session */
+ $queryresult = mysql_query("SELECT id FROM Game ".
+ " WHERE session=$session ".
+ " AND status='gameover' ".
+ " ORDER BY create_date ASC");
$i=0;
while($r = mysql_fetch_array($queryresult,MYSQL_NUM) )
diff --git a/include/functions.php b/include/functions.php
index 4abaf93..2e4c083 100644
--- a/include/functions.php
+++ b/include/functions.php
@@ -838,7 +838,6 @@ function display_user_menu()
function generate_score_table($session)
{
-
/* get all ids */
$gameids = DB_get_gameids_of_finished_games_by_session($session);
@@ -892,4 +891,65 @@ function generate_score_table($session)
return $output;
}
+function generate_global_score_table()
+{
+ /* get all ids */
+ $gameids = DB_get_gameids_of_finished_games_by_session(0);
+
+ if($gameids == NULL)
+ return "";
+
+ /* get player id, names... from the User table */
+ $player = array();
+ $result = mysql_query("SELECT User.id, User.fullname FROM User");
+
+ while( $r = mysql_fetch_array($result,MYSQL_NUM))
+ $player[] = array( 'id' => $r[0], 'name'=> $r[1], 'points' => 0 ,'nr' => 0);
+
+ /* get points and generate table */
+ foreach($gameids as $gameid)
+ {
+ $re_score = DB_get_score_by_gameid($gameid);
+ /* TODO: this shouldn't loop over all players, just the 4 players that are in the game */
+ foreach($player as $key=>$pl)
+ {
+ $party = DB_get_party_by_gameid_and_userid($gameid,$pl['id']);
+ if($party == "re")
+ if(DB_get_gametype_by_gameid($gameid)=="solo")
+ $player[$key]['points'] += 3*$re_score;
+ else
+ $player[$key]['points'] += $re_score;
+ else if ($party == "contra")
+ $player[$key]['points'] -= $re_score;
+ if($party)
+ $player[$key]['nr']+=1;
+ }
+ }
+
+ echo "\n \n";
+ function cmp($a,$b)
+ {
+ if($a['nr']==0 ) return 1;
+ if($b['nr']==0) return 1;
+
+ $a=$a['points']/$a['nr'];
+ $b=$b['points']/$b['nr'];
+
+ if ($a == $b)
+ return 0;
+ return ($a > $b) ? -1 : 1;
+ }
+ usort($player,"cmp");
+ foreach($player as $pl)
+ {
+ if($pl['nr']>10)
+ echo "
",$pl['name']," | ",round($pl['points']/$pl['nr'],3)," |
\n";
+ }
+ echo "
\n";
+
+ return;
+}
+
+
+
?>
diff --git a/include/stats.php b/include/stats.php
index cbfd866..bde6a09 100644
--- a/include/stats.php
+++ b/include/stats.php
@@ -228,8 +228,9 @@ echo "
\n";
echo $r[1]." (".$r[0].")
\n";
echo " games\n";
*/
-
-
+echo "Points/game (you need at least 10 games to be in this statistic):
\n";
+generate_global_score_table();
+echo "
\n";
/*
how often is the last trick a non-trump trick
*/
--
2.34.1