CLEANUP: GT,gametype,mygametype variable, make it translatable, some code cleanup
[e-DoKo.git] / include / game.php
index 72e7db18bc9d78bb74ae1d5f93bc3581a37b8fc4..541c70a184a2a627a16bd684d4e78f51cc6380de 100644 (file)
@@ -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;
   }
 
@@ -65,17 +65,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 +218,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 +228,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 +282,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 +309,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 +331,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' && $gametyep_solo == 'silent') )
+         echo " ($GT)";
+
     if(isset($_SESSION['id']) && $_SESSION['id']==$myid)
       {
        if($previous)
@@ -378,9 +383,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 +394,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' && $gametyep_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;
@@ -566,7 +566,6 @@ switch($mystatus)
            $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);
            $startplayer = DB_get_startplayer_by_gameid($gameid); /* need this to check which solo goes first */
 
            if( $_REQUEST['solo']!='No' )
@@ -581,7 +580,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 +588,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')
@@ -663,7 +665,9 @@ switch($mystatus)
 
        $messages[] = _('Ok, everyone is done... figuring out what kind of game we are playing.');
 
-       $gametype    = DB_get_gametype_by_gameid($gameid);
+       /* gametype for displaying it (hides hidden solo)*/
+       $GT           = get_display_gametype($gameid);
+
        $startplayer = DB_get_startplayer_by_gameid($gameid);
 
        /* check for sickness */
@@ -690,7 +694,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 +714,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 +750,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 +765,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,7 +787,8 @@ 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').' :)';
@@ -792,7 +799,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 +847,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 +861,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';
                  }
              }
          }
@@ -1009,12 +1018,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;
@@ -1258,19 +1270,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 +1314,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 +1538,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')
@@ -1578,13 +1575,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 )
@@ -2012,23 +2004,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) )
@@ -2127,12 +2121,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 +2162,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 +2236,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 +2258,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 +2335,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 +2380,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);