BUGFIX: fix mysql insert statements (null values for timestamps didn't work anymore)
[e-DoKo.git] / include / game.php
index 72e7db18bc9d78bb74ae1d5f93bc3581a37b8fc4..9028364e93bec14ae740ba02d2e64a4d2045e8c1 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/* Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Arun Persaud <arun@nubati.net>
+/* Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Arun Persaud <arun@nubati.net>
  *
  *   This file is part of e-DoKo.
  *
@@ -27,7 +27,7 @@ if(!isset($HOST))
 /* calling game.php only makes sense when we give it a hash for a game */
 if(!myisset('me'))
   {
-    echo "Hmm, you really shouldn't mess with the urls.<br />\n";
+    echo _("Hmm, you really shouldn't mess with the urls.")."<br />\n";
     return;
   }
 $me = $_REQUEST['me'];
@@ -36,8 +36,8 @@ $me = $_REQUEST['me'];
 $myid = DB_get_userid('hash',$me);
 if(!$myid)
   {
-    echo "Can't find you in the database, please check the url.<br />\n";
-    echo "perhaps the game has been canceled, check by login in <a href=\"$INDEX\">here</a>.";
+    echo _('Cannot find you in the database, please check the url.')."<br />\n";
+    printf(_('Perhaps the game has been canceled, check by login in <a href="%s">here</a>.'),$INDEX);
     return;
   }
 
@@ -46,6 +46,7 @@ global $GAME,$RULES,$CARDS;
 /**************************************
  * get some information from the DB
  **************************************/
+start:
 $gameid   = DB_get_gameid_by_hash($me);
 $myname   = DB_get_name('hash',$me);
 $mystatus = DB_get_status_by_hash($me);
@@ -65,17 +66,20 @@ set_language($PREF['language']);
 $RULES = DB_get_RULES($gameid);
 
 /* get some infos about the game */
-$gametype   = DB_get_gametype_by_gameid($gameid);
-$gamestatus = DB_get_game_status_by_gameid($gameid);
-$GT         = $gametype;
-if($gametype=='solo')
-  {
-    $gametype = DB_get_solo_by_gameid($gameid);
-    if($gametype=='silent')
-      $GT = 'normal';
-    else
-      $GT = $gametype.' '.$GT;
-  }
+$gametype_raw  = DB_get_gametype_by_gameid($gameid);
+$gametype_solo = DB_get_solo_by_gameid($gameid);
+
+/* replace solo with the type of solo */
+$gametype     = $gametype_raw;
+if($gametype_raw=='solo')
+  $gametype = $gametype_solo;
+
+/* gametype for displaying it (hides hidden solo)*/
+$GT           = get_display_gametype($gameid);
+
+$gamestatus   = DB_get_game_status_by_gameid($gameid);
+
+
 
 /* do we need to worry about Schweinchen?
  * check gametype and rules
@@ -215,9 +219,8 @@ else if( $mystatus == 'gameover' && isset($_SESSION['id']) )
   }
 else
   {
-    echo "<div class=\"usermenu\">\n";
-    echo "It's your turn in these games: \n";
-    echo "Please log in to see this information.\n";
+    echo '<div class="usermenu">'."\n";
+    printf( _("It's your turn in these games:\nPlease log in to see this information.\n") );
     echo "</div>\n\n";
   }
 
@@ -226,7 +229,7 @@ else
  *****************************************************************/
 if($session)
   {
-    echo "<div class=\"session\">\n";
+    echo '<div class="session">'."\n";
 
     /* output rule set */
     echo "  <div class=\"sessionrules\">\n    "._('Rules').":\n";
@@ -280,7 +283,7 @@ if($session)
     $score   = generate_score_table($session);
 
     /* get the last entry to show on the main page */
-    $tmpscore= $score;
+    $tmpscore   = $score;
     $finalscore = array_pop($tmpscore);
     $finalscore = $finalscore['players'];
 
@@ -307,7 +310,7 @@ if($session)
      * previous and next game if possible
      */
     $hashes = DB_get_hashes_by_session($session,$myid);
-    $next     = NULL;
+    $next   = NULL;
     $i = 1;
     foreach($hashes as $hash)
       {
@@ -329,8 +332,11 @@ if($session)
 
     /* check for solo, add game type to session number */
     echo '    '._('Game')." $session.$j";
-    if($gamestatus != 'pre' && $GT !='normal' )
-      echo " ($GT)";
+    if($gamestatus != 'pre')
+      if($gametype_raw != 'normal') /* only show when needed */
+       if(!($gametype_raw == 'solo' && $gametype_solo == 'silent') )
+         echo " ($GT)";
+
     if(isset($_SESSION['id']) && $_SESSION['id']==$myid)
       {
        if($previous)
@@ -378,9 +384,6 @@ switch($mystatus)
     if($myparty=='re' || $myparty=='contra')
       {
        echo "\n<ul class=\"tricks\">\n";
-
-       $mygametype =  DB_get_gametype_by_gameid($gameid);
-
        echo "  <li onclick=\"hl(0);\" class=\"active\"><a href=\"#\">Pre</a>\n";
        echo "  </li>\n</ul>\n\n";  /* end div trick, end li trick , end ul tricks */
       }
@@ -392,15 +395,13 @@ switch($mystatus)
     echo "\n<ul class=\"tricks\">\n";
 
     /* output vorbehalte */
-    $mygametype = DB_get_gametype_by_gameid($gameid);
-    $mygamesolo = DB_get_solo_by_gameid($gameid);
-    if($mygametype != 'normal') /* only show when needed */
-      if(!( $mygametype == 'solo' && $mygamesolo == 'silent') )
+    if($gametype_raw != 'normal') /* only show when needed */
+      if(!($gametype_raw == 'solo' && $gametype_solo == 'silent') )
        echo "  <li onclick=\"hl(0);\" class=\"old\"><a href=\"#\">Pre</a></li>\n";
 
     $result = DB_query('SELECT Trick.id'.
                       ' FROM Trick'.
-                      " WHERE Trick.game_id=".DB_quote_smart($gameid).
+                      ' WHERE Trick.game_id='.DB_quote_smart($gameid).
                       ' GROUP BY Trick.id'.
                       ' ORDER BY Trick.id ASC');
     $trickNR   = 1;
@@ -517,6 +518,7 @@ switch($mystatus)
             */
 
            DB_set_hand_status_by_hash($me,'init');
+           $mystatus='init';
 
            /* check if everyone has reached this stage, set player in game-table to the next player */
            $userids = DB_get_all_userid_by_gameid($gameid);
@@ -561,18 +563,26 @@ switch($mystatus)
            break;
          }
        else
-         {
-           /* everything is ok, save what user said and proceed */
-           $messages[] = _('Processing what you selected in the last step...');
+         { /* everything is ok, save what user said and proceed */
 
            /* check if this sickness needs to be handled first */
-           $gametype    = DB_get_gametype_by_gameid($gameid);
            $startplayer = DB_get_startplayer_by_gameid($gameid); /* need this to check which solo goes first */
 
            if( $_REQUEST['solo']!='No' )
              {
                /* user wants to play a solo */
 
+               /* double check input value */
+               $s = $_REQUEST['solo'];
+               $solos = array('trumpless','jack','queen','trump','club','spade','heart');
+               if (!in_array($s, $solos))
+                 {
+                   $messages[] = sprintf(_('There is a problem with the type of solo you selected (%s does not exist), please go back '.
+                                           'and answer the <a href="%s">question</a> again.'),
+                                         $s,$INDEX.'?action=game&amp;me=$me&amp;in=yes');
+                   break;
+                 }
+
                /* store the info in the user's hand info */
                DB_set_solo_by_hash($me,$_REQUEST['solo']);
                DB_set_sickness_by_hash($me,'solo');
@@ -581,7 +591,7 @@ switch($mystatus)
                  sprintf(_('Seems like you want to play a %s solo. Got it.'),$_REQUEST['solo']).
                  "<br />\n";
 
-               if($gametype == 'solo' && $startplayer<$mypos)
+               if($gametype_raw == 'solo' && $startplayer<$mypos)
                  {}/* do nothing, since someone else already is playing solo */
                else
                  {
@@ -589,8 +599,11 @@ switch($mystatus)
                     * store info in game table
                     */
                    DB_set_gametype_by_gameid($gameid,'solo');
+                   $gametype_raw = 'solo';
                    DB_set_startplayer_by_gameid($gameid,$mypos);
                    DB_set_solo_by_gameid($gameid,$_REQUEST['solo']);
+                   $gametype_solo = $_REQUEST['solo'];
+                   $gametype      = $gametype_solo;
                  };
              }
            else if($_REQUEST['wedding'] == 'yes')
@@ -632,8 +645,6 @@ switch($mystatus)
      * this can therefore only be handled once all players finished the last stage
      */
 
-    $messages[] = _('Checking if someone else selected solo, nines, wedding or poverty.');
-
     /* check if everyone has reached this stage */
     $userids = DB_get_all_userid_by_gameid($gameid);
     $ok = 1;
@@ -661,9 +672,9 @@ switch($mystatus)
         * are playing, in case there are any solos this already
         * will have the correct information in it */
 
-       $messages[] = _('Ok, everyone is done... figuring out what kind of game we are playing.');
+       /* gametype for displaying it (hides hidden solo)*/
+       $GT          = get_display_gametype($gameid);
 
-       $gametype    = DB_get_gametype_by_gameid($gameid);
        $startplayer = DB_get_startplayer_by_gameid($gameid);
 
        /* check for sickness */
@@ -690,7 +701,7 @@ switch($mystatus)
          }
 
        /* now check which sickness comes first and set the gametype to it */
-       if($gametype == 'solo')
+       if($gametype_raw == 'solo')
          {
            /* do nothing */
          }
@@ -710,7 +721,7 @@ switch($mystatus)
                /* update game status */
                cancel_game('lowtrump',$gameid);
 
-               $messages[] = sprintf(('The game has been canceled because %s'.
+               $messages[] = sprintf(_('The game has been canceled because %s'.
                  ' has low trump and nobody is playing solo.'),DB_get_name('userid',$cancel));
              };
 
@@ -746,7 +757,8 @@ switch($mystatus)
        else if($poverty==1) /* one person has poverty */
          {
            DB_set_gametype_by_gameid($gameid,'poverty');
-           $gametype = 'poverty';
+           $gametype_raw = 'poverty';
+           $gametype     = 'poverty';
            $who      = DB_get_sickness_by_gameid($gameid);
            if(!$who)
              {
@@ -760,7 +772,8 @@ switch($mystatus)
        else if($poverty==2) /* two people have poverty */
          {
            DB_set_gametype_by_gameid($gameid,'dpoverty');
-           $gametype = 'dpoverty';
+           $gametype_raw = 'dpoverty';
+           $gametype     = 'dpoverty';
            $who      = DB_get_sickness_by_gameid($gameid);
            if(!$who)
              {
@@ -781,10 +794,10 @@ switch($mystatus)
          {
            DB_set_gametype_by_gameid($gameid,'wedding');
            DB_set_sickness_by_gameid($gameid,'-1'); /* wedding not resolved yet */
-           $gametype = 'wedding';
+           $gametype_raw = 'wedding';
+           $gametype     = 'wedding';
          };
        /* now the gametype is set correctly in the database */
-       $messages[] = _('Got it').' :)';
 
        /* loop over all players, set re/contra if possible and start the game if possible */
        $userids = DB_get_all_userid_by_gameid($gameid);
@@ -792,7 +805,7 @@ switch($mystatus)
          {
            $userhash = DB_get_hash_from_gameid_and_userid($gameid,$userid);
 
-           switch($gametype)
+           switch($gametype_raw)
              {
              case 'solo':
                /* are we the solo player? set us to re, else set us to contra */
@@ -840,13 +853,12 @@ switch($mystatus)
              }
          }
        /* check for silent solo, set game type to solo in this case */
-       $gametype = DB_get_gametype_by_gameid($gameid);
        $userids  = DB_get_all_userid_by_gameid($gameid);
        foreach($userids as $userid)
          {
            $userhash = DB_get_hash_from_gameid_and_userid($gameid,$userid);
 
-           if($gametype=='normal')
+           if($gametype_raw=='normal')
              {
                $userhand = DB_get_all_hand($userhash);
                if(check_wedding($userhand))
@@ -855,6 +867,9 @@ switch($mystatus)
                    /* keep startplayer, just set gametype to silent solo */
                    DB_set_gametype_by_gameid($gameid,'solo');
                    DB_set_solo_by_gameid($gameid,'silent');
+                   $gametype_raw  = 'solo';
+                   $gametype_solo = 'silent';
+                   $gametype      = 'normal';
                  }
              }
          }
@@ -880,8 +895,10 @@ switch($mystatus)
                  }
              }
            else
-             $messages[] = sprintf(_('Please, <a href="%s">start</a> the game.'),$INDEX."?action=game&amp;me=$me").
-               "<br />\n";
+             {
+               $mystatus = 'play';
+               goto play;
+             }
          }
        else
          {
@@ -891,8 +908,10 @@ switch($mystatus)
 
            $whoid = DB_get_userid('gameid-position',$gameid,$who);
            if($whoid==$myid)
-             $messages[] = sprintf(_('Please, <a href="%s">start</a> the game.'),$INDEX."?action=game&amp;me=$me").
-               "<br /\n";
+             {
+               $mystatus = 'poverty';
+               goto poverty;
+             }
            else
              {
                $whohash = DB_get_hash_from_game_and_pos($gameid,$who);
@@ -913,6 +932,7 @@ switch($mystatus)
     break;
 
   case 'poverty':
+  poverty:
     /* user only gets here in a poverty game, several things have to be handled here:
      * A) ask, if user wants to take trump
      *      yes-> take trump,
@@ -982,7 +1002,10 @@ switch($mystatus)
              }
          }
        else
-         $messages[]= sprintf(_('Please, <a href="%s">start</a> the game.'),$INDEX."?action=game&amp;me=$me");
+         {
+           $mystatus = 'play';
+           goto play;
+         }
       }
 
     /* the following is part A) of what needs to be done */
@@ -1009,12 +1032,15 @@ switch($mystatus)
                      if($card<27) $nrtrump++;
                    $low='';
                    if($usersick=='lowtrump')
-                     $low='low';
-                   echo "Player $name has $nrtrump $low trump. Do you want to take them?".
-                     "<a href=\"index.php?action=game&amp;me=$me&amp;trump=$user\">Yes</a> <br />\n";
+                     $low=_('low');
+                   /// TRANSLATORS: first %s=name, %d=number of trump, second %s= '' or 'low' for trumpfarmut
+                   printf(_('Player %s has %d %s trump. Do you want to take them?'.
+                            '<a href="%s">Yes</a>')."<br />\n",
+                          $name,$nrtrump,$low,"index.php?action=game&amp;me=$me&amp;trump=$user");
                  }
              }
-           echo "<a href=\"index.php?action=game&amp;me=$me&amp;trump=no\">No way</a> <br />\n";
+           /// TRANSLATORS: answer to question about taking trump in poverty game
+           echo "<a href=\"index.php?action=game&amp;me=$me&amp;trump=no\">"._("No way")."</a> <br />\n";
            echo "</div>\n";
          }
        break;
@@ -1184,6 +1210,7 @@ switch($mystatus)
 
   case 'play':
   case 'gameover':
+  play:
     /* both entries here,  so that the tricks are visible for both.
      * in case of 'play' there is a break later that skips the last part
      */
@@ -1258,19 +1285,6 @@ switch($mystatus)
      * accordingly
      */
 
-    $gametype = DB_get_gametype_by_gameid($gameid);
-    $GT       = $gametype;
-    if($gametype=='solo')
-      {
-       $gametype = DB_get_solo_by_gameid($gameid);
-       if($gametype=='silent')
-         $GT = 'normal';
-       else
-         $GT = $gametype.' '.$GT;
-      }
-    else
-      $gametype = 'normal';
-
     set_gametype($gametype); /* this sets the $CARDS variable */
 
     /* get some infos about the game, need to reset this, since it might have changed */
@@ -1315,16 +1329,14 @@ switch($mystatus)
     echo "\n<div class=\"tricks\">\n";
 
     /* output vorbehalte */
-    $mygametype = DB_get_gametype_by_gameid($gameid);
-    $mygamesolo = DB_get_solo_by_gameid($gameid);
     $show_pre_game_comments=1;
-    if($mygametype != 'normal') /* only show when needed */
-      if(!( $mygametype == 'solo' && $mygamesolo == 'silent') )
+    if($gametype_raw != 'normal') /* only show when needed */
+      if(!($gametype_raw == 'solo' && $gametype_solo == 'silent') )
        {
          echo "    <div class=\"trick\" id=\"trick0\">\n";
 
          /* get information so show the cards that have been handed over in a poverty game */
-         output_exchanged_cards();
+         output_exchanged_cards($gametype);
          $show_pre_game_comments=0;
 
          echo "    </div>\n";  /* end div trick, end li trick */
@@ -1541,7 +1553,7 @@ switch($mystatus)
                 * since it doesn't make sense in some games
                 */
                $ok = 0; /* fox shouldn't be counted */
-               if(DB_get_gametype_by_gameid($gameid)=='solo')
+               if($gametype_raw=='solo')
                  {
                    $solo = DB_get_solo_by_gameid($gameid);
                    if($solo == 'trump' || $solo == 'silent')
@@ -1565,7 +1577,7 @@ switch($mystatus)
 
                            if($party1 != $party2)
                              DB_query("INSERT INTO Score".
-                                      " VALUES( NULL,NULL,$gameid,'$party1',$uid1,$uid2,'fox')");
+                                      " VALUES(NULL,CURRENT_TIMESTAMP,$gameid,'$party1',$uid1,$uid2,'fox')");
                          }
                    }
 
@@ -1578,13 +1590,8 @@ switch($mystatus)
 
                if($tricknr == 12 ) /* Karlchen works only in the last trick */
                  {
-                   /* check for solo */
-                   $solo = 'none';
-                   if(DB_get_gametype_by_gameid($gameid)=='solo' )
-                     $solo = DB_get_solo_by_gameid($gameid);
-
                    /* no Karlchen in these solos */
-                   if($solo != 'trumpless' && $solo != 'jack' && $solo != 'queen' )
+                   if($gametype_solo != 'trumpless' && $gametype_solo != 'jack' && $gametype_solo != 'queen' )
                      {
                        foreach($play as $played)
                          if ( $played['card']==11 || $played['card']==12 )
@@ -1595,7 +1602,7 @@ switch($mystatus)
                                $party1 = DB_get_party_by_gameid_and_userid($gameid,$uid1);
 
                                DB_query("INSERT INTO Score".
-                                        " VALUES( NULL,NULL,$gameid,'$party1',$uid1,NULL,'karlchen')");
+                                        " VALUES( NULL,CURRENT_TIMESTAMP,$gameid,'$party1',$uid1,NULL,'karlchen')");
                              };
                      };
                  }; /* end scoring Karlchen */
@@ -1615,7 +1622,7 @@ switch($mystatus)
                    $party1 = DB_get_party_by_gameid_and_userid($gameid,$uid1);
 
                    DB_query("INSERT INTO Score".
-                            " VALUES( NULL,NULL,$gameid,'$party1',$uid1,NULL,'doko')");
+                            " VALUES( NULL,CURRENT_TIMESTAMP,$gameid,'$party1',$uid1,NULL,'doko')");
                  }
 
                /*
@@ -1828,14 +1835,14 @@ switch($mystatus)
                    for( $p=$call_contra;$p<=120; $p+=30 )
                      {
                          DB_query('INSERT INTO Score'.
-                                  " VALUES( NULL,NULL,$gameid,'re',NULL,NULL,'against$p')");
+                                  " VALUES( NULL,CURRENT_TIMESTAMP,$gameid,'re',NULL,NULL,'against$p')");
                        }
 
                      for( $p=$call_contra; $p<120; $p+=30)
                        {
                          if( $re >= $p )
                            DB_query('INSERT INTO Score'.
-                                    " VALUES( NULL,NULL,$gameid,'re',NULL,NULL,'made$p')");
+                                    " VALUES( NULL,CURRENT_TIMESTAMP,$gameid,'re',NULL,NULL,'made$p')");
                        }
                    }
                  if($winning_party!='re' and $call_re!= -1)
@@ -1843,14 +1850,14 @@ switch($mystatus)
                      for( $p=$call_re;$p<=120; $p+=30 )
                        {
                          DB_query('INSERT INTO Score'.
-                                  " VALUES( NULL,NULL,$gameid,'contra',NULL,NULL,'against$p')");
+                                  " VALUES( NULL,CURRENT_TIMESTAMP,$gameid,'contra',NULL,NULL,'against$p')");
                        }
 
                      for( $p=$call_re; $p<120; $p+=30)
                        {
                          if( $contra>=$p )
                            DB_query('INSERT INTO Score'.
-                                    " VALUES( NULL,NULL,$gameid,'contra',NULL,NULL,'made$p')");
+                                    " VALUES( NULL,CURRENT_TIMESTAMP,$gameid,'contra',NULL,NULL,'made$p')");
                        }
                    }
 
@@ -1858,7 +1865,7 @@ switch($mystatus)
                  if($winning_party=='contra')
                    {
                      DB_query('INSERT INTO Score'.
-                              " VALUES( NULL,NULL,$gameid,'contra',NULL,NULL,'againstqueens')");
+                              " VALUES( NULL,CURRENT_TIMESTAMP,$gameid,'contra',NULL,NULL,'againstqueens')");
                    }
 
                  /* one point each for winning and each 30 points + calls */
@@ -1872,14 +1879,14 @@ switch($mystatus)
 
                          if($re>$p-$offset)
                            DB_query('INSERT INTO Score'.
-                                    " VALUES( NULL,NULL,$gameid,'re',NULL,NULL,'".(240-$p)."')");
+                                    " VALUES( NULL,CURRENT_TIMESTAMP,$gameid,'re',NULL,NULL,'".(240-$p)."')");
                        }
                      /* re called something and won */
                      foreach(array(0,30,60,90,120) as $p)
                        {
                          if($call_re!= -1 && $call_re<$p+1)
                            DB_query('INSERT INTO Score'.
-                                    " VALUES( NULL,NULL,$gameid,'re',NULL,NULL,'call$p')");
+                                    " VALUES( NULL,CURRENT_TIMESTAMP,$gameid,'re',NULL,NULL,'call$p')");
                        }
                    }
                  else if( $winning_party=='contra')
@@ -1892,14 +1899,14 @@ switch($mystatus)
 
                          if($contra>$p-$offset)
                            DB_query('INSERT INTO Score'.
-                                    " VALUES( NULL,NULL,$gameid,'contra',NULL,NULL,'".(240-$p)."')");
+                                    " VALUES( NULL,CURRENT_TIMESTAMP,$gameid,'contra',NULL,NULL,'".(240-$p)."')");
                        }
                      /* re called something and won */
                      foreach(array(0,30,60,90,120) as $p)
                        {
                          if($call_contra != -1 && $call_contra<$p+1)
                            DB_query('INSERT INTO Score'.
-                                    " VALUES( NULL,NULL,$gameid,'contra',NULL,NULL,'call$p')");
+                                    " VALUES( NULL,CURRENT_TIMESTAMP,$gameid,'contra',NULL,NULL,'call$p')");
                        }
                    };
 
@@ -2012,23 +2019,25 @@ switch($mystatus)
                           ' LEFT JOIN Card ON Card.id=Hand_Card.card_id'.
                           " WHERE Hand.game_id=".DB_quote_smart($gameid).
                           ' GROUP BY Hand.party' );
-       echo "    <div class=\"total\">\n  Totals:<br />\n";
+       echo "    <div class=\"total\">\n  "._("Totals:")."<br />\n";
        while( $r = DB_fetch_array($result))
          echo '      '.$r[0].' '.$r[1]."<br />\n";
 
        $queryresult = DB_query('SELECT timediff(mod_date,create_date) '.
                                " FROM Game WHERE id=".DB_quote_smart($gameid));
        $r = DB_fetch_array($queryresult);
-       echo '      <p>This game took '.$r[0]." hours.</p>\n";
+       echo '      <p>';
+       printf(_('This game took %d hours.'), $r[0]);
+       echo "</p>\n";
 
-       echo "      <div class=\"re\">\n   Points Re: <br />\n";
+       echo "      <div class=\"re\">\n   "._("Points Re:")." <br />\n";
        $queryresult = DB_query('SELECT score FROM Score '.
                                "  WHERE game_id=".DB_quote_smart($gameid)." AND party='re'");
        while($r = DB_fetch_array($queryresult) )
          echo '       '.$r[0]."<br />\n";
        echo "      </div>\n";
 
-       echo "      <div class=\"contra\">\n   Points Contra: <br />\n";
+       echo "      <div class=\"contra\">\n   "._("Points Contra:")." <br />\n";
        $queryresult = DB_query('SELECT score FROM Score '.
                                "  WHERE game_id=".DB_quote_smart($gameid)." AND party='contra'");
        while($r = DB_fetch_array($queryresult) )
@@ -2081,17 +2090,21 @@ switch($mystatus)
  * this outputs status of healthy, *
  * sick, etc during pre-game phase *
  **********************************/
+
+$posmax=5; // if user is still in init, we only show vorbehalte from players before him, otherwise all of them
+
 switch($mystatus)
   {
   case 'start':
     break;
   case 'init':
+    $posmax=$mypos;
   case 'check':
     /* output sickness of other playes, in case they already selected and are sitting in front of the current player */
     echo "\n".'<div class="tricks">'."\n";
     echo '    <div class="trick" id="trick0">'."\n";
 
-    for($pos=1;$pos<5;$pos++)
+    for($pos=1;$pos<$posmax;$pos++)
       {
        $usersick   = DB_get_sickness_by_pos_and_gameid($pos,$gameid);
        $userid     = DB_get_userid('gameid-position',$gameid,$pos);
@@ -2127,12 +2140,10 @@ switch($mystatus)
       {
        echo "\n<div class=\"tricks\">\n";
 
-       $mygametype =  DB_get_gametype_by_gameid($gameid);
-
        echo "    <div class=\"trick\" id=\"trick0\">\n";
 
        /* get information so show the cards that have been handed over in a poverty game */
-       output_exchanged_cards();
+       output_exchanged_cards($gametype);
 
        echo "    </div>\n </div>\n\n";  /* end div trick, end li trick , end ul tricks */
       }
@@ -2170,10 +2181,11 @@ switch ($card_status) {
    $type='exchange';
    foreach($mycards as $card)
      display_link_card($card,$PREF['cardset'],$type);
-   echo '  <input type="submit" class="submitbutton" value="select card to give back" />'."\n";
+   echo '  <input type="submit" class="submitbutton" value="'._('select card to give back').'" />'."\n";
    break;
  case CARDS_MYTURN:
-   echo 'Hello '.$myname.", it's your turn!  <br />\n";
+   printf (_("Hello %s, it's your turn!"),$myname);
+   echo "  <br />\n";
    echo _('Your cards are').": <br />\n";
 
    /* do we have to follow suite? */
@@ -2243,7 +2255,8 @@ switch ($card_status) {
    else
      {
        $name = DB_get_name('userid',$myid);
-       echo "$name's were: <br />\n";
+       printf (_("%s's were:"),$name);
+       echo " <br />\n";
      }
    $oldcards = DB_get_all_hand($me);
    $oldcards = mysort($oldcards,$gametype);
@@ -2264,7 +2277,7 @@ switch ($card_status) {
           $name = DB_get_name('userid',$user);
           $oldcards = DB_get_all_hand($userhash);
           $oldcards = mysort($oldcards,$gametype);
-          echo sprintf(_("%s's cards were:"),$name);
+          printf(_("%s's cards were:"),$name);
           echo " <br />\n";
           foreach($oldcards as $card)
             display_card($card,$PREF['cardset']);
@@ -2341,7 +2354,7 @@ $other_game_ids = DB_played_by_others($gameid);
 if(sizeof($other_game_ids)>0 && $mystatus=='gameover')
   {
     $mypos = DB_get_pos_by_hash($me);
-    echo "  <p>See how other played the same hand: \n";
+    echo '  <p>'._('See how other played the same hand:')." \n";
     foreach($other_game_ids as $id)
       {
        $otherhash = DB_get_hash_from_game_and_pos($id,$mypos);
@@ -2386,13 +2399,10 @@ if($mystatus=='gameover' &&
       {
        /* suggest a new game with the same people in it, just rotated once (unless last game was solo) */
        $names = DB_get_all_names_by_gameid($gameid);
-       $type  = DB_get_gametype_by_gameid($gameid);
 
-       if($type=='solo')
+       if($gametype_raw=='solo')
          {
-           $solo = DB_get_solo_by_gameid($gameid);
-
-           if($solo!='silent') /* repeat game with same first player */
+           if($gametype_solo!='silent') /* repeat game with same first player */
              output_ask_for_new_game($names[0],$names[1],$names[2],$names[3],$gameid);
            else /* rotate normally */
              output_ask_for_new_game($names[1],$names[2],$names[3],$names[0],$gameid);