commit 1858538574cb52184bc77aba0dfece58eee72d45
parent 958780e858576a239fccc6eceef66bd3ab8609e1
Author: Bertrand BRUN <bbrun@MacBook.(none)>
Date: Thu, 17 Mar 2011 10:41:45 +0100
Merge branch 'master' of https://github.com/jsmaniac/2011-m1s2-ter
Diffstat:
2 files changed, 43 insertions(+), 12 deletions(-)
diff --git a/code/serveur/php/pticlic.php b/code/serveur/php/pticlic.php
@@ -24,6 +24,7 @@ require_once("db.php");
* normalizeProbas($row);
* setGame($user, $pgid, $gid, $answers);
* get_game_relations();
+* setGameGetScore($pgid, $gid, $answers);
* insertNode($node);
* getNodeEid($node);
*/
@@ -528,7 +529,7 @@ function setGame($user, $pgid, $gid, $answers)
{
$db = getDB();
if ('ok' !== $db->querySingle("SELECT 'ok' FROM played_game WHERE pgid = $pgid and $gid = $gid and login = '$user' and timestamp = -1;")) {
- throw new Exception("Cette partie n'est associée à votre nom d'utilisateur, ou bien vous l'avez déjà jouée.", 4);
+ return getGameScores($user, $pgid, $gid);
}
$userReputation = computeUserReputation($db->querySingle("SELECT score FROM user WHERE login='".$user."';"));
@@ -577,6 +578,32 @@ function setGame($user, $pgid, $gid, $answers)
$db->exec("commit;");
$scores['total'] = $gameScore;
$scores['nb'] = $nbScores;
+ $scores['alreadyPlayed'] = 0;
+ return $scores;
+}
+
+function getGameScores($user, $pgid, $gid) {
+ $db = getDB();
+ $timestamp = $db->querySingle("SELECT timestamp FROM played_game WHERE pgid = $pgid and $gid = $gid and login = '$user';");
+ if (timestamp == -1) {
+ throw new Exception("Cette partie n'a jamais été jouée.", 4); // TODO : code d'erreur en doublon avec celui ci-dessous.
+ } else if ($timestamp == null) {
+ throw new Exception("Cette partie n'est associée à votre nom d'utilisateur.", 4);
+ }
+
+ $gameScore = 0;
+ $scores = array();
+ $nbScores = 0;
+ $res = $db->query("SELECT num,score from played_game_cloud where pgid = $pgid and gid = $gid;");
+ while ($row = $res->fetchArray())
+ {
+ $nbScores++;
+ $gameScore += $row['score'];
+ $scores[$row['num']] = $row['score'];
+ }
+ $scores['total'] = $gameScore;
+ $scores['nb'] = $nbScores;
+ $scores['alreadyPlayed'] = 1;
return $scores;
}
@@ -597,6 +624,20 @@ function get_game_relations()
return $relations;
}
+function setGameGetScore($pgid, $gid, $answers) {
+ $scores = setGame($user, intval($pgid), intval($gid), $answers);
+ // On renvoie une nouvelle partie pour garder le client toujours bien alimenté.
+ echo '{"scoreTotal":'.$scores['total'];
+ echo ',"alreadyPlayed":'.$scores['alreadyPlayed'];
+ echo ',"scores":[';
+ for ($i = 0; $i < $scores['nb']; $i++) {
+ if ($i != 0) echo ',';
+ echo $scores[$i];
+ }
+ echo "],\"newGame\":";
+ echo json_encode("".game2json($user, randomGame()));
+ echo "}";
+}
/** Insère dans la base de données le noeud si il n'existe pas encore.
* @param node : le noeud à ajouter.
diff --git a/code/serveur/php/server.php b/code/serveur/php/server.php
@@ -70,17 +70,7 @@ function main()
}
// TODO : il faudrait filtrer les paramètres qui correspondent à une réponse
// au lieu d'envoyer $_GET en entier, mais on ne connaît pas leur nom à l'avance.
- $scores = setGame($user, intval($_GET['pgid']), intval($_GET['gid']), $_GET);
- // On renvoie une nouvelle partie pour garder le client toujours bien alimenté.
- echo "{\"scoreTotal\":".$scores['total'];
- echo ',"scores":[';
- for ($i = 0; $i < $scores['nb']; $i++) {
- if ($i != 0) echo ',';
- echo $scores[$i];
- }
- echo "],\"newGame\":";
- echo json_encode("".game2json($user, randomGame()));
- echo "}";
+ setGameGetScore($_GET['pgid'], $_GET['gid'], $_GET);
} else {
throw new Exception("Commande inconnue", 2);
}