NEW FEATURE: provide an RSS feed for each user showing in which games it's his turn
[e-DoKo.git] / include / game.php
index 564c5c40153df51cd8c338e727c474e0e3741432..e20ea9a4fa67a09ae852ea3c08ead9aa0d0c02f8 100644 (file)
@@ -24,10 +24,6 @@ if(!$myid)
 
 global $GAME,$RULES,$CARDS;
 
-/* the user has done something, update the timestamp */
-if(isset($_SESSION['id']))
-  DB_update_user_timestamp($_SESSION['id']);
-
 /* get some information from the DB */
 $gameid   = DB_get_gameid_by_hash($me);
 $myname   = DB_get_name('hash',$me);
@@ -288,6 +284,16 @@ display_table();
  * play:     game in progress
  * gameover: are we revisiting a game
  */
+
+/* the user has done something, update the timestamp. Use $myid in
+ * active games and check for session-id in old games (myid might be wrong in that case)
+ */
+if($mystatus!='gameover')
+  DB_update_user_timestamp($myid);
+ else
+   if(isset($_SESSION['id']))
+     DB_update_user_timestamp($_SESSION['id']);
+
 switch($mystatus)
   {
   case 'start':
@@ -595,8 +601,8 @@ switch($mystatus)
        else if($nines)
          {
            /* cancel game */
-           $message = "the game has been canceled because ".DB_get_name('userid',$nines).
-             "has five or more nines and nobody is playing solo.\n\n".
+           $message = "The game has been canceled because ".DB_get_name('userid',$nines).
+             " has five or more nines and nobody is playing solo.\n\n".
              "To redeal either start a new game or, in case the game was part of a tournament,\n".
              "go to the last game and use the link at the bottom of the page to redeal.\n\n";
 
@@ -610,9 +616,10 @@ switch($mystatus)
            /* update game status */
            cancel_game('nines',$gameid);
 
-           echo "The game has been canceled because ".DB_get_name('userid',$nines).
-             " has five or more nines and nobody is playing solo.\n";
-           return;
+           echo "<p>The game has been canceled because ".DB_get_name('userid',$nines).
+             " has five or more nines and nobody is playing solo.</p>\n";
+           echo "</div>\n";
+           break;
          }
        else if($poverty==1) /* one person has poverty */
          {
@@ -957,8 +964,8 @@ switch($mystatus)
                /* update game status */
                cancel_game('trump',$gameid);
 
-               echo "<p style=\"background-color:red\";>Game ".DB_format_gameid($gameid)." has been canceled.<br /><br /></p>";
-               return;
+               echo "<p class=\"message\";>Game ".DB_format_gameid($gameid)." has been canceled.<br /><br /></p>";
+               break;
              }
            else
              {
@@ -1419,7 +1426,10 @@ switch($mystatus)
                $play   = DB_get_cards_by_trick($trickid);
                $winner = get_winner($play,$gametype); /* returns the position */
 
-               /* check if someone caught a fox */
+               /*
+                * check if someone caught a fox
+                *******************************/
+
                /* first check if we should account for solos at all,
                 * since it doesn't make sense in some games
                 */
@@ -1452,7 +1462,10 @@ switch($mystatus)
                          }
                    }
 
-               /* check for karlchen (jack of clubs in the last trick)*/
+               /*
+                * check for karlchen (jack of clubs in the last trick)
+                ******************************************************/
+
                /* same as for foxes, karlchen doesn't always make sense
                 * check what kind of game it is and set karlchen accordingly */
                $ok = 1; /* default: karlchen should be accounted for */
@@ -1477,7 +1490,10 @@ switch($mystatus)
                          DB_query("INSERT INTO Score".
                                   " VALUES( NULL,NULL,$gameid,'$party1',$uid1,NULL,'karlchen')");
                        }
-               /* check for doppelopf (>40 points)*/
+               /*
+                * check for doppelopf (>40 points)
+                ***********************************/
+
                $points = 0;
                foreach($play as $played)
                  {
@@ -1492,6 +1508,10 @@ switch($mystatus)
                             " VALUES( NULL,NULL,$gameid,'$party1',$uid1,NULL,'doko')");
                  }
 
+               /*
+                * set winner (for this trick)
+                */
+
                if($winner>0)
                  DB_query("UPDATE Trick SET winner='$winner' WHERE id='$trickid'");
                else
@@ -1942,7 +1962,15 @@ switch($mystatus)
       {
        $oldcards = DB_get_all_hand($me);
        $oldcards = mysort($oldcards,$gametype);
-       echo "Your cards were: <br />\n";
+
+       if(isset($_SESSION['id']) && $myid==$_SESSION['id'])
+         echo "Your cards were: <br />\n";
+       else
+         {
+           $name = DB_get_name('userid',$myid);
+           echo "$name's were: <br />\n";
+         }
+
        foreach($oldcards as $card)
          display_card($card,$PREF['cardset']);