diff --git a/code/serveur/php/jeu.html b/code/serveur/php/jeu.html index 8b28d01..02ff05b 100644 --- a/code/serveur/php/jeu.html +++ b/code/serveur/php/jeu.html @@ -128,8 +128,12 @@
diff --git a/code/serveur/php/ressources/backend.inc b/code/serveur/php/ressources/backend.inc index 0acdffc..78997b9 100644 --- a/code/serveur/php/ressources/backend.inc +++ b/code/serveur/php/ressources/backend.inc @@ -5,33 +5,35 @@ require_once("ressources/db.inc"); /* Les prototypes des fonctions : -* ===============================> -* checkLogin($user, $passwd); -* randomCenterNode(); -* randomCloudNode(); -* cgBuildResultSets($cloudSize, $centerEid, $r1, $r2); -* cgChooseRelations(); -* cgBuildCloud($centerEid, $cloudSize, $sources, $sumWeights); -* insertCreatedGame($centerEid, $cloud, $r1, $r2, $totalDifficulty, $userName); -* randomGameCore(); -* randomGame(); -* formatWord($word); -* game2array($user, $pgid); -* createGame($nbParties, $mode); -* createGameCore($cloudSize); -* computeScore($probas, $difficulty, $answer, $userReputation); -* computeUserReputation($score); -* normalizeProbas($row); -* setGame($user, $pgid, $gid, $answers); -* get_game_relations(); -* getGameRelationsJSON(); -* setGameGetScore($user, $pgid, $gid, $answers); -* getNodeEid($node); -* wordExist($node); -* setUserInfo($user, $key, $value); +*===============================> +* checkLogin($user, $passwd); +* randomCenterNode(); +* randomCloudNode(); +* cgBuildResultSets($cloudSize, $centerEid, $r1, $r2); +* cgChooseRelations(); +* cgBuildCloud($centerEid, $cloudSize, $sources, $sumWeights); +* insertCreatedGame($centerEid, $cloud, $r1, $r2, $totalDifficulty, $userName); +* randomGameCore(); +* randomGame(); +* formatWord($word); +* game2array($user, $pgid); +* createGame($nbParties, $mode); +* createGameCore($cloudSize); +* computeScore($probas, $difficulty, $answer, $userReputation); +* computeUserReputation($score); +* normalizeProbas($row); +* setGame($user, $pgid, $gid, $answers); +* get_game_relations(); +* getGameRelationsJSON(); +* setGameGetScore($user, $pgid, $gid, $answers); +* getNodeEid($node); +* wordExist($node); +* setUserInfo($user, $key, $value); * userPrefsDefaults(); * userPrefs($user); -* setUserPref($user, $key, $value); +* setUserPref($user, $key, $value); +* getJAimePgid($user, $pgid); +* setJAimePgid($user, $pgid, $value); */ @@ -711,4 +713,16 @@ function setUserPref($user, $key, $value) { } } +function getJAimePgid($user, $pgid) { + getDB()->querySingle("SELECT like FROM played_game WHERE login = '".SQLite3::escapeString($user)."' and pgid = ".longStrVal($pgid).";"); +} + +function setJAimePgid($user, $pgid, $value) { + $value = intval($value) / abs(intval($value) || 1); // Calcule le signe de $value : -1 ou 0 ou 1 + $original = getJAimePgid($user, $pgid); + getDB()->querySingle("UPDATE played_game SET like = ".$value." WHERE login = '".SQLite3::escapeString($user)."' and pgid = ".longStrVal($pgid).";"); + getDB()->querySingle("UPDATE game SET nb_like = nb_like".($original == 1 ? " - 1" : "").($value == 1 ? " + 1" : "")." WHERE login = '".SQLite3::escapeString($user)."' and pgid = ".longStrVal($pgid).";"); + getDB()->querySingle("UPDATE game SET nb_dislike = nb_dislike".($original == -1 ? " - 1" : "").($value == -1 ? " + 1" : "")." WHERE login = '".SQLite3::escapeString($user)."' and pgid = ".longStrVal($pgid).";"); +} + ?> diff --git a/code/serveur/php/ressources/pticlic.js b/code/serveur/php/ressources/pticlic.js index c42684b..90a80a0 100644 --- a/code/serveur/php/ressources/pticlic.js +++ b/code/serveur/php/ressources/pticlic.js @@ -4,6 +4,7 @@ function init(fn) { } $.ajaj = function(url, data, dfd, retryCheck, callback) { + dfd = dfd || $.Deferred(); var user = '' + UI().getPreference("user"); var passwd = '' + UI().getPreference("passwd"); user = runstate.user || user; @@ -312,6 +313,7 @@ init(function() { if (updating) return false; updating = true; if (!runstate.game || state.pgid != runstate.game.pgid) { + updating = false; $('#game').trigger('goto'); return; } @@ -363,6 +365,14 @@ runstate.scoreCache = new Cache(function getScore(k, dfd, arg) { }, dfd, function() { return state.pgid == k; }); }); +function jAime(aime) { + $.ajaj('server.php?callback=?', { + pgid: state.pgid, + action: 10, + value: (aime ? 1 : -1) + }); +} + init(function() { var score = $.screen('score'); score.bind('pre-enter', function() { @@ -386,6 +396,8 @@ init(function() { .appendTo("#score .scores"); }); }); + $('#jaime').click(function() { jAime(true); }); + $('#jaimepas').click(function() { jAime(false); }); }); // ==== Écran Préférences diff --git a/code/serveur/php/server.php b/code/serveur/php/server.php index 1af57c4..3eedb6e 100644 --- a/code/serveur/php/server.php +++ b/code/serveur/php/server.php @@ -114,6 +114,11 @@ function main() } elseif ($action == 9) { session_destroy(); echo '{"disconnected":true}'; + } elseif ($action == 10) { // Set J'aime / J'aime pas + if (!isset($_GET['value']) || !isset($_GET['pgid'])) + throw new Exception("La requête est incomplète", 2); + setJAimePgid($user, $_GET['pgid'], intval($_GET['value'])); + echo '{"JAimePas":true}'; } else { throw new Exception("Commande inconnue", 2); }