From: Arun Persaud Date: Wed, 31 Oct 2007 09:45:28 +0000 (+0100) Subject: BUGFIX: no check for a followup game if someone else already started one X-Git-Url: https://git.nubati.net/cgi-bin/gitweb.cgi?p=e-DoKo.git;a=commitdiff_plain;h=981af305085c3f31cc80ec5c22c79ebc3a3aec95;ds=sidebyside BUGFIX: no check for a followup game if someone else already started one several people could start a followup game (or one person hitting reload) and several games were started. Now the prog checks if there is already an active game. --- diff --git a/db.php b/db.php index 646f004..4afa9e1 100644 --- a/db.php +++ b/db.php @@ -939,5 +939,17 @@ function DB_set_reminder($user,$gameid) return 0; } +function DB_is_session_active($session) +{ + $queryresult = mysql_query("SELECT COUNT(*) FROM Game ". + " WHERE session=$session ". + " AND status<>'gameover' "); + + $r = mysql_fetch_array($queryresult,MYSQL_NUM); + if($r) + return $r[0]; + else + return -1; +} ?> \ No newline at end of file diff --git a/index.php b/index.php index 2a688fd..f6e2d57 100644 --- a/index.php +++ b/index.php @@ -85,6 +85,23 @@ else if(myisset("new")) $session = DB_get_session_by_gameid($followup); $ruleset = DB_get_ruleset_by_gameid($followup); /* just copy ruleset from old game, this way no manipulation is possible */ + + /* check if there is a game in pre or play mode, in that case do nothing */ + if( DB_is_session_active($session) > 0 ) + { + echo "

There is already a game going on in session $session, you can't start a new one

"; + output_footer(); + DB_close(); + exit(); + } + else if ( DB_is_session_active($session) < 0 ) + { + echo "

ERROR: status of session $session couldn't be determined.

"; + output_footer(); + DB_close(); + exit(); + } + if($session) mysql_query("INSERT INTO Game VALUES (NULL, NULL, '$randomNRstring', 'normal', NULL,NULL,'1',NULL,'pre',". "'$ruleset','$session' ,NULL)");