added a new set of LGPL licensed cards
[e-DoKo.git] / include / game.php
index 4fa950c6156cc327aa03eb42cf40283ac48fff1f..38cf7e3b9c34bc81a191045532798515db4bbe14 100644 (file)
@@ -1,5 +1,5 @@
 <?php
-/* Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012 Arun Persaud <arun@nubati.net>
+/* Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 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;
   }
 
@@ -57,9 +57,9 @@ $playid   = DB_get_current_playid($gameid); /* might be -1 at beginning of the g
 
 /* get prefs and save them in a variable*/
 $PREF = DB_get_PREF(isset($_SESSION['id'])?$_SESSION['id']:$myid);
-/* set language chosen in preferences, will become active on the next reload (see index.php)*/
+/* set language chosen in preferences */
 $_SESSION['language'] = $PREF['language'];
-
+set_language($PREF['language']);
 
 /* get rule set for this game */
 $RULES = DB_get_RULES($gameid);
@@ -184,7 +184,7 @@ if( myisset('call') )
 
 
 /* get time from the last action of the game */
-$r = DB_query_array("SELECT mod_date from Game WHERE id='$gameid' " );
+$r = DB_query_array("SELECT mod_date from Game WHERE id=".DB_quote_smart($gameid));
 $gameend = time() - strtotime($r[0]);
 
 /* handle comments in case player didn't play a card, allow comments a week after the end of the game */
@@ -215,9 +215,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 +225,7 @@ else
  *****************************************************************/
 if($session)
   {
-    echo "<div class=\"session\">\n";
+    echo '<div class="session">'."\n";
 
     /* output rule set */
     echo "  <div class=\"sessionrules\">\n    "._('Rules').":\n";
@@ -328,7 +327,7 @@ if($session)
       $next = NULL;
 
     /* check for solo, add game type to session number */
-    echo "    Game $session.$j";
+    echo '    '._('Game')." $session.$j";
     if($gamestatus != 'pre' && $GT !='normal' )
       echo " ($GT)";
     if(isset($_SESSION['id']) && $_SESSION['id']==$myid)
@@ -337,9 +336,10 @@ if($session)
          echo "&nbsp;&nbsp;&nbsp;<a href=\"{$INDEX}?action=game&amp;me=$previous\">"._('previous')."</a> \n";
        if($next)
          echo "&nbsp;&nbsp;&nbsp;<a href=\"{$INDEX}?action=game&amp;me=$next\">"._('next')."</a> \n";
+
+       if($j != $i )
+         echo "&nbsp;&nbsp;&nbsp;<a href=\"{$INDEX}?action=game&amp;me=$lasthash\">"._('last')."</a> \n";
       }
-    if($j != $i )
-      echo "&nbsp;&nbsp;&nbsp;<a href=\"{$INDEX}?action=game&amp;me=$lasthash\">last</a> \n";
 
     echo "\n</div>\n";
   }
@@ -366,7 +366,7 @@ switch($mystatus)
   case 'check':
     /* output sickness of other playes, in case they already selected and are sitting in front of the current player */
     echo "\n<ul class=\"tricks\">\n";
-    echo "  <li onclick=\"hl('0');\" class=\"current\"><a href=\"#\">Pre</a>\n";
+    echo "  <li onclick=\"hl(0);\" class=\"active\" id=\"tricks0\"><a href=\"#\">Pre</a>\n";
 
     echo "    </li>\n</ul>\n";  /* end div trick, end li trick , end tricks*/
     /* end displaying sickness */
@@ -380,7 +380,7 @@ switch($mystatus)
 
        $mygametype =  DB_get_gametype_by_gameid($gameid);
 
-       echo "  <li onclick=\"hl('0');\" class=\"current\"><a href=\"#\">Pre</a>\n";
+       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 */
       }
     /* end output pre-game trick */
@@ -395,13 +395,13 @@ switch($mystatus)
     $mygamesolo = DB_get_solo_by_gameid($gameid);
     if($mygametype != 'normal') /* only show when needed */
       if(!( $mygametype == 'solo' && $mygamesolo == 'silent') )
-       echo "  <li onclick=\"hl('0');\" class=\"old\"><a href=\"#\">Pre</a></li>\n";
+       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='".$gameid."' ".
-                      'GROUP BY Trick.id '.
-                      'ORDER BY Trick.id ASC');
+    $result = DB_query('SELECT Trick.id'.
+                      ' FROM Trick'.
+                      " WHERE Trick.game_id=".DB_quote_smart($gameid).
+                      ' GROUP BY Trick.id'.
+                      ' ORDER BY Trick.id ASC');
     $trickNR   = 1;
     $lasttrick = DB_get_max_trickid($gameid);
 
@@ -410,19 +410,19 @@ switch($mystatus)
       {
        $trick=$r[0];
        if($trick!=$lasttrick)
-         echo "  <li onclick=\"hl('$trickNR');\" class=\"old\"><a href=\"#\">"._('Trick')." $trickNR</a></li>\n";
+         echo "  <li onclick=\"hl($trickNR);\" id=\"tricks$trickNR\"><a href=\"#\">$trickNR</a></li>\n";
        else if($trick==$lasttrick)
-         echo "  <li onclick=\"hl('$trickNR');\" class=\"current\"><a href=\"#\">"._('Trick')." $trickNR</a></li>\n";
+         echo "  <li onclick=\"hl($trickNR);\" id=\"tricks$trickNR\" class=\"active\"><a href=\"#\">$trickNR</a></li>\n";
        $trickNR++;
       }
 
     /* if game is over, also output link to Score tab */
     if($mystatus=='gameover' && DB_get_game_status_by_gameid($gameid)=='gameover' )
-      echo "  <li onclick=\"hl('13');\" class=\"current\"><a href=\"#\">"._('Score')."</a></li>\n";
+      echo "  <li onclick=\"hl(13);\" id=\"tricks13\" class=\"active\"><a href=\"#\">"._('Score')."</a></li>\n";
 
     /* output previous/next buttons */
-    echo '  <li onclick="hl_prev();" ><button>'._('prev')."</button></li>\n";
-    echo '  <li onclick="hl_next();" ><button>'._('next')."</button></li>\n";
+    echo '  <li onclick="hl_prev();" id="prevtr"><a href="#">'._('prev')."</a></li>\n";
+    echo '  <li onclick="hl_next();" id="nexttr"><a href="#">'._('next')."</a></li>\n";
 
     echo "</ul>\n\n";
 
@@ -491,12 +491,15 @@ switch($mystatus)
        if(!$skip && $_REQUEST['in'] == 'no' )
          {
            /* cancel the game */
-           $email_message = "Hello, \n\n".
-             "the game has been canceled due to the request of one of the players.\n\n";
-
            $userids = DB_get_all_userid_by_gameid($gameid);
            foreach($userids as $user)
+           {
+             set_language($user,'uid');
+             $email_message = _("Hello, \n\n".
+               "the game has been canceled due to the request of one of the players.")."\n\n";
              mymail($user,$gameid,GAME_CANCELED,$email_message);
+           };
+           set_language($myid,'uid');
 
            $card_status = CARDS_EMPTY;
 
@@ -551,15 +554,15 @@ switch($mystatus)
 
        if($Nsickness>1)
          {
-           $messages[] = 'You selected more than one sickness, please go back '.
-             "and answer the <a href=\"$INDEX?action=game&amp;me=$me&amp;in=yes\">question</a> again.";
-
+           $messages[] = sprintf(_('You selected more than one sickness, please go back '.
+                                   'and answer the <a href="%s">question</a> again.'),
+                                 $INDEX.'?action=game&amp;me=$me&amp;in=yes');
            break;
          }
        else
          {
            /* everything is ok, save what user said and proceed */
-           $messages[] = 'Processing what you selected in the last step...';
+           $messages[] = _('Processing what you selected in the last step...');
 
            /* check if this sickness needs to be handled first */
            $gametype    = DB_get_gametype_by_gameid($gameid);
@@ -573,7 +576,9 @@ switch($mystatus)
                DB_set_solo_by_hash($me,$_REQUEST['solo']);
                DB_set_sickness_by_hash($me,'solo');
 
-               $messages[] = "<br />Seems like you want to play a {$_REQUEST['solo']} solo. Got it.<br />\n";
+               $messages[] = '<br />'.
+                 sprintf(_('Seems like you want to play a %s solo. Got it.'),$_REQUEST['solo']).
+                 "<br />\n";
 
                if($gametype == 'solo' && $startplayer<$mypos)
                  {}/* do nothing, since someone else already is playing solo */
@@ -693,36 +698,47 @@ switch($mystatus)
            /* cancel game */
            if($cancelsick == 'nines')
              {
-               $email_message = 'The game has been canceled because '.DB_get_name('userid',$cancel).
-                 " 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";
-
                /* update game status */
                cancel_game('nines',$gameid);
 
-               $messages[] = 'The game has been canceled because '.DB_get_name('userid',$cancel).
-                 " has five or more nines and nobody is playing solo.";
+               $messages[] = sprintf(_('The game has been canceled because %s'.
+                 ' has five or more nines and nobody is playing solo.'),DB_get_name('userid',$cancel) );
              }
            else if ($cancelsick == 'lowtrump')
              {
-               $email_message = 'The game has been canceled because '.DB_get_name('userid',$cancel).
-                 " has low trump 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";
-
                /* update game status */
                cancel_game('lowtrump',$gameid);
 
-               $messages[] = 'The game has been canceled because '.DB_get_name('userid',$cancel).
-                 ' has low trump and nobody is playing solo.';
+               $messages[] = sprintf(_('The game has been canceled because %s'.
+                 ' has low trump and nobody is playing solo.'),DB_get_name('userid',$cancel));
              };
 
            $userids = DB_get_all_userid_by_gameid($gameid);
            foreach($userids as $user)
              {
+               set_language($user,'uid');
+               if($cancelsick == 'nines')
+               {
+                 $email_message = sprintf(_('The game has been canceled because %s'.
+                   ' has five or more nines and nobody is playing solo.'),DB_get_name('userid',$cancel) ).
+                   "\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";
+               }
+               else if ($cancelsick == 'lowtrump')
+               {
+                 $email_message = sprintf(_('The game has been canceled because %s'.
+                   " has low trump and nobody is playing solo."),DB_get_name('userid',$cancel)).
+                   "\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";
+               };
+
                mymail($user,$gameid, GAME_CANCELED, $email_message);
              }
+             set_language($myid,'uid');
 
            break;
          }
@@ -855,13 +871,16 @@ switch($mystatus)
                if(DB_get_email_pref_by_hash($hash)!='emailaddict')
                  {
                    /* email startplayer */
-                   $email_message = "It's your turn now in game ".DB_format_gameid($gameid).".\n".
-                     "Use this link to play a card: ".$HOST.$INDEX."?action=game&me=".$hash."\n\n" ;
+                   set_language($userid,'uid');
+                   $email_message = sprintf(_("It's your turn now in game %s.\n".
+                     "Use this link to play a card:"),DB_format_gameid($gameid))." ".$HOST.$INDEX."?action=game&me=".$hash."\n\n" ;
                    mymail($userid,$gameid,GAME_READY,$email_message);
+                   set_language($myid,'uid');
                  }
              }
            else
-             $messages[] = "Please, <a href=\"$INDEX?action=game&amp;me=$me\">start</a> the game.<br />\n";
+             $messages[] = sprintf(_('Please, <a href="%s">start</a> the game.'),$INDEX."?action=game&amp;me=$me").
+               "<br />\n";
          }
        else
          {
@@ -871,7 +890,8 @@ switch($mystatus)
 
            $whoid = DB_get_userid('gameid-position',$gameid,$who);
            if($whoid==$myid)
-             $messages[] =  "Please, <a href=\"$INDEX?action=game&amp;me=$me\">start</a> the game.<br /\n";
+             $messages[] = sprintf(_('Please, <a href="%s">start</a> the game.'),$INDEX."?action=game&amp;me=$me").
+               "<br /\n";
            else
              {
                $whohash = DB_get_hash_from_game_and_pos($gameid,$who);
@@ -880,9 +900,11 @@ switch($mystatus)
                if(DB_get_email_pref_by_hash($hash)!='emailaddict')
                  {
                    /* email player for poverty */
-                   $email_message = "Poverty: It's your turn now in game ".DB_format_gameid($gameid).".\n".
-                     'Use this link to play a card: '.$HOST.$INDEX."?action=game&me=".$whohash."\n\n" ;
+                   set_language($whoid,'uid');
+                   $email_message = sprintf(_("Poverty: It's your turn now in game %s.\n".
+                     'Use this link to play a card: '),DB_format_gameid($gameid)).$HOST.$INDEX."?action=game&me=".$whohash."\n\n" ;
                    mymail($whoid,$gameid,GAME_POVERTY,$email_message);
+                   set_language($myid,'uid');
                  }
              }
          }
@@ -922,7 +944,7 @@ switch($mystatus)
        if($exchange >0)
          {
            $result = DB_query("UPDATE Hand_Card SET hand_id='$partnerhand'".
-                              " WHERE hand_id='$myhand' AND card_id=".DB_quote_smart($exchange));
+                              " WHERE hand_id=".DB_quote_smart($myhand)." AND card_id=".DB_quote_smart($exchange));
            DB_add_exchanged_card(DB_quote_smart($exchange),$myhand,$partnerhand);
          };
       }
@@ -951,13 +973,15 @@ switch($mystatus)
            if(DB_get_email_pref_by_hash($hash)!='emailaddict')
              {
                /* email startplayer */
-               $email_message = "It's your turn now in game ".DB_format_gameid($gameid).".\n".
-                 'Use this link to play a card: '.$HOST.$INDEX."?action=game&me=".$hash."\n\n" ;
+               set_language($userid,'uid');
+               $email_message = sprintf(_("It's your turn now in game %s.\n".
+                 'Use this link to play a card: '),DB_format_gameid($gameid)).$HOST.$INDEX."?action=game&me=".$hash."\n\n" ;
                mymail($userid,$gameid,GAME_READY,$email_message);
+               set_language($myid,'uid');
              }
          }
        else
-         $messages[]= "Please, <a href=\"$INDEX?action=game&amp;me=$me\">start</a> the game.";
+         $messages[]= sprintf(_('Please, <a href="%s">start</a> the game.'),$INDEX."?action=game&amp;me=$me");
       }
 
     /* the following is part A) of what needs to be done */
@@ -984,12 +1008,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;
@@ -1024,19 +1051,21 @@ switch($mystatus)
            /* no more people to ask, need to cancel the game */
            if($mypos+$next>4)
              {
-               $email_message = "Hello, \n\n".
-                 'Game '.DB_format_gameid($gameid)." has been canceled since nobody wanted to take the trump.\n\n";
-
                $userids = DB_get_all_userid_by_gameid($gameid);
                foreach($userids as $user)
                  {
+                   set_language($user,'uid');
+                   $email_message = sprintf("Hello, \n\n".
+                     'Game %s has been canceled since nobody wanted to take the trump.',DB_format_gameid($gameid)).
+                     "\n\n";
                    mymail($user, $gameid, GAME_CANCELED_POVERTY, $email_message);
                  }
+               set_language($myid,'uid');
 
                /* update game status */
                cancel_game('trump',$gameid);
 
-               $messages[] = 'Game '.DB_format_gameid($gameid).' has been canceled.';
+               $messages[] = sprintf(_('Game %s has been canceled.'),DB_format_gameid($gameid));
                break;
              }
            else
@@ -1048,9 +1077,11 @@ switch($mystatus)
                DB_set_player_by_gameid($gameid,$userid);
                DB_set_hand_status_by_hash($userhash,'poverty');
 
-               $email_message = "Someone has poverty, it's your turn to decide, if you want to take the trump. Please visit:".
+               set_language($userid,'uid');
+               $email_message = _("Someone has poverty, it's your turn to decide, if you want to take the trump. Please visit:").
                  " ".$HOST.$INDEX."?action=game&me=".$userhash."\n\n" ;
                mymail($userid,$gameid, GAME_POVERTY, $email_message);
+               set_language($myid,'uid');
              }
 
            $cards_status = CARDS_SHOW;
@@ -1071,7 +1102,7 @@ switch($mystatus)
                DB_add_exchanged_card($card,$userhand,$myhand);
 
            /* copy trump from player A to B */
-           $result = DB_query("UPDATE Hand_Card SET hand_id='$myhand' WHERE hand_id='$userhand' AND card_id<'27'" );
+           $result = DB_query("UPDATE Hand_Card SET hand_id='$myhand' WHERE hand_id=".DB_quote_smart($userhand)." AND card_id<'27'" );
 
            /* reload cards */
            $mycards = DB_get_hand($me);
@@ -1141,12 +1172,14 @@ switch($mystatus)
                    DB_set_player_by_gameid($gameid,$userid);
                    DB_set_hand_status_by_hash($userhash,'poverty');
 
-                   $email_message = "Two people have poverty, it's your turn to decide, if you want to take the trump. Please visit:".
+                   set_langauge($userid,'uid');
+                   $email_message = _("Two people have poverty, it's your turn to decide, if you want to take the trump. Please visit:").
                      " ".$HOST.$INDEX."?action=game&me=".$userhash."\n\n" ;
                    mymail($userid,$gameid, GAME_DPOVERTY, $email_message);
+                   set_language($myid,'uid');
                  }
              }
-           $messages[] = "Please, <a href=\"$INDEX?action=game&amp;me=$me\">continue</a> here";
+           $messages[] = sprintf(_('Please, <a href="%s">continue</a> here'),$INDEX."?action=game&amp;me=$me");
          }
       }
     break;
@@ -1161,19 +1194,19 @@ switch($mystatus)
     switch($gamestatus)
       {
       case 'cancel-noplay':
-       $messages[] = "The game has been canceled due to the request of one player.</p><p>If this was a mistake all 4 players need to send an Email to $ADMIN_NAME at $ADMIN_EMAIL requesting that the game should be restarted.";
+       $messages[] = _("The game has been canceled due to the request of one player.</p><p>If this was a mistake all 4 players need to send an Email to $ADMIN_NAME at $ADMIN_EMAIL requesting that the game should be restarted.");
        break;
       case 'cancel-timedout':
-       $messages[] = "The game has been canceled because one player wasn't responding.<br />If this was a mistake all 4 players need to send an Email to $ADMIN_NAME at $ADMIN_EMAIL requesting that the game should be restarted.";
+       $messages[] = _("The game has been canceled because one player wasn't responding.<br />If this was a mistake all 4 players need to send an Email to $ADMIN_NAME at $ADMIN_EMAIL requesting that the game should be restarted.");
        break;
       case 'cancel-nines':
-       $messages[] = 'The game has been canceled because one player had too many nines.';
+       $messages[] = _('The game has been canceled because one player had too many nines.');
        break;
       case 'cancel-lowtrump':
-       $messages[] = 'The game has been canceled because one player had low trump.';
+       $messages[] = _('The game has been canceled because one player had low trump.');
        break;
       case 'cancel-trump':
-       $messages[] = 'The game has been canceled because nobody wanted to take the trump.';
+       $messages[] = _('The game has been canceled because nobody wanted to take the trump.');
        break;
       }
     /* for these two types, we shouldn't show the cards, since we might want to restart the game */
@@ -1213,9 +1246,11 @@ switch($mystatus)
            if($hash!=$me && DB_get_email_pref_by_hash($hash)!='emailaddict')
              {
                /* email startplayer) */
-               $email_message = "It's your turn now in game ".DB_format_gameid($gameid).".\n".
-                 'Use this link to play a card: '.$HOST.$INDEX."?action=game&me=".$hash."\n\n" ;
+               set_language($userid,'uid');
+               $email_message = sprintf(_("It's your turn now in game %s.\n".
+                 'Use this link to play a card: '),DB_format_gameid($gameid)).$HOST.$INDEX."?action=game&me=".$hash."\n\n" ;
                mymail($userid,$gameid, GAME_READY, $email_message);
+               set_language($myid,'uid');
              }
          }
       }
@@ -1257,20 +1292,20 @@ switch($mystatus)
     $result = DB_query('SELECT Hand_Card.card_id as card,'.
                       '       Hand.position as position,'.
                       '       Play.sequence as sequence, '.
-                      '       Trick.id, '.
+                      '       Trick.id,'.
                       "       GROUP_CONCAT(CONCAT('<span>',User.fullname,': ',Comment.comment,'</span>')".
                       "                    SEPARATOR '\n' ), ".
-                      '       Play.create_date, '.
-                      '       Hand.user_id '.
-                      'FROM Trick '.
-                      'LEFT JOIN Play ON Trick.id=Play.trick_id '.
-                      'LEFT JOIN Hand_Card ON Play.hand_card_id=Hand_Card.id '.
-                      'LEFT JOIN Hand ON Hand_Card.hand_id=Hand.id '.
-                      'LEFT JOIN Comment ON Play.id=Comment.play_id '.
-                      'LEFT JOIN User On User.id=Comment.user_id '.
-                      "WHERE Trick.game_id='".$gameid."' ".
-                      'GROUP BY Trick.id, sequence '.
-                      'ORDER BY Trick.id, sequence ASC');
+                      '       Play.create_date,'.
+                      '       Hand.user_id'.
+                      ' FROM Trick'.
+                      ' LEFT JOIN Play ON Trick.id=Play.trick_id'.
+                      ' LEFT JOIN Hand_Card ON Play.hand_card_id=Hand_Card.id'.
+                      ' LEFT JOIN Hand ON Hand_Card.hand_id=Hand.id'.
+                      ' LEFT JOIN Comment ON Play.id=Comment.play_id'.
+                      ' LEFT JOIN User On User.id=Comment.user_id'.
+                      " WHERE Trick.game_id=".DB_quote_smart($gameid).
+                      ' GROUP BY Trick.id, sequence'.
+                      ' ORDER BY Trick.id, sequence ASC');
     $trickNR   = 0;
     $lasttrick = DB_get_max_trickid($gameid);
 
@@ -1424,7 +1459,7 @@ switch($mystatus)
            DB_update_game_timestamp($gameid);
 
            /* mark card as played */
-           DB_query("UPDATE Hand_Card SET played='true' WHERE hand_id='$handid' AND card_id=".
+           DB_query("UPDATE Hand_Card SET played='true' WHERE hand_id=".DB_quote_smart($handid)." AND card_id=".
                     DB_quote_smart($card));
 
            /* get trick id or start new trick */
@@ -1590,7 +1625,7 @@ switch($mystatus)
                 */
 
                if($winner>0)
-                 DB_query("UPDATE Trick SET winner='$winner' WHERE id='$trickid'");
+                 DB_query("UPDATE Trick SET winner='$winner' WHERE id=".DB_quote_smart($trickid));
                else
                  $messages[] = "ERROR during scoring";
 
@@ -1665,12 +1700,14 @@ switch($mystatus)
                $userid    = DB_get_userid('hash',$next_hash);
                DB_set_player_by_gameid($gameid,$userid);
 
-               $email_message = 'A card has been played in game '.DB_format_gameid($gameid).".\n\n".
-                 "It's your turn  now.\n".
-                 'Use this link to play a card: '.$HOST.$INDEX.'?action=game&me='.$next_hash."\n\n" ;
                if( DB_get_email_pref_by_uid($userid)!='emailaddict' )
                  {
+                   set_language($userid,'uid');
+                   $email_message = sprintf(_("A card has been played in game %s.\n\n".
+                     "It's your turn now.\n".
+                     'Use this link to play a card: '),DB_format_gameid($gameid)).$HOST.$INDEX.'?action=game&me='.$next_hash."\n\n" ;
                    mymail($userid,$gameid, GAME_YOUR_TURN, $email_message);
+                   set_language($myid,'uid');
                  }
              }
            else /* send out final email */
@@ -1682,12 +1719,11 @@ switch($mystatus)
                                   ' LEFT JOIN Play ON Trick.id=Play.trick_id'.
                                   ' LEFT JOIN Hand_Card ON Hand_Card.id=Play.hand_card_id'.
                                   ' LEFT JOIN Card ON Card.id=Hand_Card.card_id'.
-                                  " WHERE Hand.game_id='$gameid'".
+                                  " WHERE Hand.game_id=".DB_quote_smart($gameid).
                                   ' GROUP BY User.fullname' );
-               $email_message  = "The game is over. Thanks for playing :)\n";
-               $email_message .= "Final score:\n";
+               $email_final_score="";
                while( $r = DB_fetch_array($result) )
-                 $email_message .= '   '.$r[0].'('.$r[2].') '.$r[1]."\n";
+                 $email_final_score .= '   '.$r[0].'('.$r[2].') '.$r[1]."\n";
 
                $result = DB_query('SELECT  Hand.party, IFNULL(SUM(Card.points),0) FROM Hand'.
                                   ' LEFT JOIN Trick ON Trick.winner=Hand.position AND Trick.game_id=Hand.game_id'.
@@ -1695,14 +1731,14 @@ switch($mystatus)
                                   ' LEFT JOIN Play ON Trick.id=Play.trick_id'.
                                   ' LEFT JOIN Hand_Card ON Hand_Card.id=Play.hand_card_id'.
                                   ' LEFT JOIN Card ON Card.id=Hand_Card.card_id'.
-                                  " WHERE Hand.game_id='$gameid'".
+                                  " WHERE Hand.game_id=".DB_quote_smart($gameid).
                                   ' GROUP BY Hand.party' );
-               $email_message .= "\nTotals:\n";
+               $email_totals="";
                $re     = 0;
                $contra = 0;
                while( $r = DB_fetch_array($result) )
                  {
-                   $email_message .= '    '.$r[0].' '.$r[1]."\n";
+                   $email_totals .= '    '.$r[0].' '.$r[1]."\n";
                    if($r[0] == 're')
                      $re = $r[1];
                    else if($r[0] == 'contra')
@@ -1867,39 +1903,36 @@ switch($mystatus)
                            DB_query('INSERT INTO Score'.
                                     " VALUES( NULL,NULL,$gameid,'contra',NULL,NULL,'call$p')");
                        }
-                   }
-
+                   };
 
                  /* add score points to email */
-                 $email_message .= "\n";
                  $Tpoint = 0;
-                 $email_message .= " Points Re: \n";
+
+                 $email_points_re="";
                  $queryresult = DB_query('SELECT score FROM Score '.
-                                         "  WHERE game_id=$gameid AND party='re'");
+                                         "  WHERE game_id=".DB_quote_smart($gameid)." AND party='re'");
                  while($r = DB_fetch_array($queryresult) )
                    {
-                     $email_message .= '   '.$r[0]."\n";
+                     $email_points_re .= '   '.$r[0]."\n";
                      $Tpoint ++;
                    }
-                 $email_message .= " Points Contra: \n";
+
+                 $email_points_contra="";
                  $queryresult = DB_query('SELECT score FROM Score '.
-                                         "  WHERE game_id=$gameid AND party='contra'");
+                                         "  WHERE game_id=".DB_quote_smart($gameid)." AND party='contra'");
                  while($r = DB_fetch_array($queryresult) )
                    {
-                     $email_message .= '   '.$r[0]."\n";
+                     $email_points_contra .= '   '.$r[0]."\n";
                      $Tpoint --;
                    }
-                 $email_message .= " Total Points (from the Re point of view): $Tpoint\n";
-                 $email_message .= "\n";
 
                  $session = DB_get_session_by_gameid($gameid);
                  $score = generate_score_table($session);
 
-                 $email_message .= "Score Table:\n";
-                 $email_message .= format_score_table_ascii($score);
-                 $email_message .= "\nUse these links to have a look at game ".DB_format_gameid($gameid).": \n";
+                 $email_score_table = format_score_table_ascii($score);
 
-                 /* send out final email */
+                 /* add user links */
+                 $email_user_links="";
                  foreach($userids as $user)
                    {
                      /* add links for all players */
@@ -1907,15 +1940,41 @@ switch($mystatus)
                      $name = DB_get_name('userid',$user);
 
                      $link = "$name: ".$HOST.$INDEX."?action=game&me=".$hash."\n" ;
-                     $email_message .= $link;
+                     $email_user_links .= $link;
+                   }
+
+                 foreach($userids as $user)
+                   {
+                     /* set correct language for this user */
+                     set_language($user,'uid');
+
+                     /* generate message */
+                     $email_message  = _("The game is over. Thanks for playing :)")."\n";
+                     $email_message .= _("Final score:")."\n";
+                     $email_message .= $email_final_score;
+                     $email_message .= "\n"._("Totals:")."\n";
+                     $email_message .= $email_totals;
+                     $email_message .= "\n "._("Points Re:")." \n";
+                     $email_message .= $email_points_re;
+                     $email_message .= " "._("Points Contra:")." \n";
+                     $email_message .= $email_points_contra;
+                     $email_message .= " "._("Total Points (from the Re point of view):")." $Tpoint\n\n";
+                     $email_message .= _("Score Table:")."\n";
+                     $email_message .= $email_score_table;
+                     $email_message .= "\n"._("Use these links to have a look at game")." ".DB_format_gameid($gameid).": \n";
+                     $email_message .= $email_user_links;
+                     $email_message .= "\n\n "._("(use in-game comments to reach all players)")."\n\n";
+
+                     /* send email */
+                     mymail($user,$gameid, GAME_OVER, $email_message);
                    }
-                 $email_message .= "\n\n (you can use reply all on this email to reach all the players.)\n\n";
-                 mymail($userids,$gameid, GAME_OVER, $email_message);
+                 /* reset language */
+                 set_language($myid,'uid');
              }
          }
        else
          {
-           $messages[] = "can't find that card?!";
+           $messages[] = _("can't find that card?!");
          }
       }
     else if(myisset('card') && !$myturn )
@@ -1939,7 +1998,7 @@ switch($mystatus)
                           ' LEFT JOIN Play ON Trick.id=Play.trick_id'.
                           ' LEFT JOIN Hand_Card ON Hand_Card.id=Play.hand_card_id'.
                           ' LEFT JOIN Card ON Card.id=Hand_Card.card_id'.
-                          " WHERE Hand.game_id='$gameid'".
+                          " WHERE Hand.game_id=".DB_quote_smart($gameid).
                           ' GROUP BY User.fullname' );
        while( $r = DB_fetch_array($result))
          echo '      <div class="card'.($r[3]-1)."\">\n".
@@ -1953,27 +2012,29 @@ switch($mystatus)
                           ' LEFT JOIN Play ON Trick.id=Play.trick_id'.
                           ' LEFT JOIN Hand_Card ON Hand_Card.id=Play.hand_card_id'.
                           ' LEFT JOIN Card ON Card.id=Hand_Card.card_id'.
-                          " WHERE Hand.game_id='$gameid'".
+                          " 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='$gameid'");
+                               " 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=$gameid AND party='re'");
+                               "  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=$gameid AND party='contra'");
+                               "  WHERE game_id=".DB_quote_smart($gameid)." AND party='contra'");
        while($r = DB_fetch_array($queryresult) )
          echo '       '.$r[0]."<br />\n";
        echo "      </div>\n";
@@ -2113,10 +2174,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? */
@@ -2186,7 +2248,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);
@@ -2207,7 +2270,8 @@ switch ($card_status) {
           $name = DB_get_name('userid',$user);
           $oldcards = DB_get_all_hand($userhash);
           $oldcards = mysort($oldcards,$gametype);
-          echo "$name's cards were: <br />\n";
+          printf(_("%s's cards were:"),$name);
+          echo " <br />\n";
           foreach($oldcards as $card)
             display_card($card,$PREF['cardset']);
         }
@@ -2228,7 +2292,7 @@ if( sizeof($messages) )
     echo "\n<div class=\"message\">\n";
     foreach($messages as $message)
       {
-       echo "  <div>$message <div>close</div> </div>\n";
+       echo "  <div>$message <div>"._("close")."</div> </div>\n";
       }
     echo "</div>\n\n";
   }
@@ -2256,7 +2320,7 @@ if($commentCall != '')
 echo "<div class=\"gameinfo\">\n";
 
 /* get time from the last action of the game */
-$r = DB_query_array("SELECT mod_date from Game WHERE id='$gameid' " );
+$r = DB_query_array("SELECT mod_date from Game WHERE id=".DB_quote_smart($gameid));
 $gameend = time() - strtotime($r[0]);
 
 /* comment box */
@@ -2283,7 +2347,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);