updated copyright to 2014
[e-DoKo.git] / include / functions.php
index b1c70891b566aff1f438a1ed03e15dfaf313922b..b476f6de7eb8e6ab151908c61db6c24359edade2 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.
  *
@@ -122,22 +122,22 @@ function mymail($uid,$gameid=0,$type,$message)
       /* do we send the email right away or save it in the database? */
       $send_now = 1;
 
-      $name    = DB_get_name('userid',$uid);
-      $header  = sprintf(_('Hello %s'),$name);
-      $header .= "\n\n";
-
-      $To = DB_get_email('userid',$uid);
+      $name = DB_get_name('userid',$user);
+      $To   = DB_get_email('userid',$user);
 
       /* check if user wants email right away or if we should save it in
        * the database for later delivery
        */
 
-      $uidPREF = DB_get_PREF($uid);
+      $uidPREF = DB_get_PREF($user);
       if( $uidPREF['digest'] != 'digest-off' )
         $send_now = 0;
       /* use local language */
       set_language($uidPREF['language']);
 
+      $header  = sprintf(_('Hello %s'),$name);
+      $header .= "\n\n";
+
       /* add standard header and footer */
       $subject = "$EmailName ";
       if($gameid)
@@ -185,7 +185,7 @@ function mymail($uid,$gameid=0,$type,$message)
         }
 
       /* standard goodbye */
-      $footer  = "\n"._("Have a nice day\n   your E-Doko service department").
+      $footer  = "\n"._('Have a nice day')."\n   "._('your E-Doko service department').
         "\n\n".
         "-- \n".
         _('You can change your mail delivery mode in the preference menu.').
@@ -201,6 +201,7 @@ function mymail($uid,$gameid=0,$type,$message)
           DB_digest_insert_email($To,$message,$type,$gameid);
         }
     }
+
   /* reset language to original user*/
   set_language($PREF['language']);
 
@@ -217,6 +218,10 @@ function sendmail($To,$Subject,$message)
   if(isset($EMAIL_REPLY))
     $header .= "From: e-DoKo daemon <$EMAIL_REPLY>\r\n";
 
+  $header .= "Content-Type: text/plain; charset = \"UTF-8\";\r\n";
+  $header .= "Content-Transfer-Encoding: 8bit\r\n";
+  $header .= "\r\n";
+
   if($debug)
     {
       /* display email on screen,
@@ -227,15 +232,12 @@ function sendmail($To,$Subject,$message)
                              "<a href=\"$1\">$1</a>", $message);
 
       echo "<br />To: $To<br />";
-      if($header != "")
-       echo $header."<br />";
+      echo $header."<br />";
       echo "Subject: $Subject <br />$message<br />\n";
     }
   else
-    if($header != "")
-      mail($To,$Subject,$message,$header);
-    else
-      mail($To,$Subject,$message);
+    mail($To,$Subject,$message,$header);
+
   return;
 }
 
@@ -983,23 +985,22 @@ function can_call($what,$hash)
 
 function display_table_begin ()
 {
-  global $gameid, $GT, $debug,$INDEX,$defaulttimezone,$session;
-  global $RULES,$GAME,$gametype;
-
-  $result = DB_query("SELECT  User.fullname as name,".
-                    "        Hand.position as position, ".
-                    "        User.id, ".
-                    "        Hand.party as party, ".
-                    "        Hand.sickness as sickness, ".
-                    "        Hand.point_call, ".
-                    "        User.last_login, ".
-                    "        Hand.hash,       ".
-                    "        User.timezone,    ".
-                    "        User.email       ".
-                    "FROM Hand ".
-                    "LEFT JOIN User ON User.id=Hand.user_id ".
-                    "WHERE Hand.game_id='".$gameid."' ".
-                    "ORDER BY position ASC");
+  global $gameid;
+
+  $result = DB_query('SELECT  User.fullname as name,'.
+                    '        Hand.position as position,'.
+                    '        User.id,'.
+                    '        Hand.party as party,'.
+                    '        Hand.sickness as sickness,'.
+                    '        Hand.point_call,'.
+                    '        User.last_login,'.
+                    '        Hand.hash,'.
+                    '        User.timezone,'.
+                    '        User.email'.
+                    ' FROM Hand'.
+                    ' LEFT JOIN User ON User.id=Hand.user_id'.
+                    ' WHERE Hand.game_id='.DB_quote_smart($gameid).
+                    ' ORDER BY position ASC');
 
   $row0 = DB_fetch_array($result);
   $row1 = DB_fetch_array($result);
@@ -1015,25 +1016,26 @@ function display_table_begin ()
 
   return;
 }
+
+
 function display_table_end ()
 {
-  global $gameid, $GT, $debug,$INDEX,$defaulttimezone,$session;
-  global $RULES,$GAME,$gametype;
-
-  $result = DB_query("SELECT  User.fullname as name,".
-                    "        Hand.position as position, ".
-                    "        User.id, ".
-                    "        Hand.party as party, ".
-                    "        Hand.sickness as sickness, ".
-                    "        Hand.point_call, ".
-                    "        User.last_login, ".
-                    "        Hand.hash,       ".
-                    "        User.timezone,    ".
-                    "        User.email       ".
-                    "FROM Hand ".
-                    "LEFT JOIN User ON User.id=Hand.user_id ".
-                    "WHERE Hand.game_id='".$gameid."' ".
-                    "ORDER BY position ASC");
+  global $gameid;
+
+  $result = DB_query('SELECT  User.fullname as name,'.
+                    '        Hand.position as position,'.
+                    '        User.id,'.
+                    '        Hand.party as party,'.
+                    '        Hand.sickness as sickness,'.
+                    '        Hand.point_call,'.
+                    '        User.last_login,'.
+                    '        Hand.hash,'.
+                    '        User.timezone,'.
+                    '        User.email'.
+                    ' FROM Hand'.
+                    ' LEFT JOIN User ON User.id=Hand.user_id'.
+                    ' WHERE Hand.game_id='.DB_quote_smart($gameid).
+                    ' ORDER BY position ASC');
 
   $row0 = DB_fetch_array($result);
   $row1 = DB_fetch_array($result);
@@ -1051,8 +1053,8 @@ function display_single_user($r,$start=0)
 {
   /* start=1, mark starting player, default=0, so the player on the left is not marked */
 
-  global $gameid, $GT, $debug,$INDEX,$defaulttimezone,$session;
-  global $RULES,$GAME,$gametype;
+  global $gameid, $debug,$INDEX,$defaulttimezone;
+  global $RULES,$GAME, $gametype_raw;
 
       $name  = $r[0];
       $pos   = $r[1];
@@ -1085,8 +1087,8 @@ function display_single_user($r,$start=0)
          $stop    = substr($vacation[1],0,10);
          $comment = $vacation[2];
 
-             $title = "begin: $start  end: $stop $comment";
-             echo "   <span class=\"vacation\" title=\"$title\">$gravatar (on vacation until $stop)</span> \n";
+         $title = _("begin:")." $start  "._("end:")." $stop $comment";
+             echo "   <span class=\"vacation\" title=\"$title\">$gravatar "._("(on vacation until $stop)")."</span> \n";
        }
       else
        echo "   $gravatar \n";
@@ -1094,11 +1096,11 @@ function display_single_user($r,$start=0)
        echo"   </a>\n";
 
       /* add hints for poverty, wedding, solo, etc */
-      if( $gametype != "solo")
+      if( $gametype_raw != "solo")
        if( $RULES["schweinchen"]=="both" && $GAME["schweinchen-who"]==$hash )
          echo " Schweinchen. <br />";
 
-      if($GT=="poverty" && $party=="re")
+      if($gametype_raw=="poverty" && $party=="re")
        if($sickness=="poverty" || ($RULES['lowtrump']=='poverty' && $sickness=='lowtrump'))
          {
            $userhash = DB_get_hash_from_gameid_and_userid($gameid,$user);
@@ -1115,7 +1117,7 @@ function display_single_user($r,$start=0)
          echo "   <img src=\"pics/button/poverty_partner_button.png\" class=\"button\" ".
            "alt=\"poverty partner\" title=\"poverty partner\" />\n";
 
-      if($GT=="dpoverty")
+      if($gametype_raw=="dpoverty")
        if($party=="re")
          if($sickness=="poverty" || ($RULES['lowtrump']=='poverty' && $sickness=='lowtrump'))
            {
@@ -1149,28 +1151,31 @@ function display_single_user($r,$start=0)
            echo "   <img src=\"pics/button/poverty2_partner_button.png\" class=\"button\" ".
              "alt=\"poverty2 >\" title=\"poverty2 partner\" />\n";
 
-      if($GT=="wedding" && $party=="re")
+      if($gametype_raw=="wedding" && $party=="re")
        if($sickness=="wedding")
          echo "   <img src=\"pics/button/wedding_button.png\" class=\"button\" alt=\"wedding\" title=\"wedding\" />\n";
        else
          echo "   <img src=\"pics/button/wedding_partner_button.png\" class=\"button\" ".
            "alt=\"wedding partner\" title=\"wedding partner\" />\n";
 
-      if( (strpos($GT,"solo")!==false) && $party=="re")
+      if( $gametype_raw=='solo' && $party=="re")
        {
-         if(strpos($GT,"queen")!==false)
+         $solotype = DB_get_solo_by_gameid($gameid);
+         $GT = get_display_gametype($gameid);
+
+         if($solotype=='queen')
            echo "   <img src=\"pics/button/queensolo_button.png\" class=\"button\" alt=\"$GT\" title=\"Queen solo\" />\n";
-         else if(strpos($GT,"jack")!==false)
+         else if($solotype=='jack')
            echo "   <img src=\"pics/button/jacksolo_button.png\" class=\"button\" alt=\"$GT\" title=\"Jack solo\" />\n";
-         else if(strpos($GT,"club")!==false)
+         else if($solotype=='club')
            echo "   <img src=\"pics/button/clubsolo_button.png\" class=\"button\" alt=\"$GT\" title=\"Club solo\" />\n";
-         else if(strpos($GT,"spade")!==false)
+         else if($solotype=='spade')
            echo "   <img src=\"pics/button/spadesolo_button.png\" class=\"button\" alt=\"$GT\" title=\"Spade solo\" />\n";
-         else if(strpos($GT,"heart")!==false)
+         else if($solotype=='heart')
            echo "   <img src=\"pics/button/heartsolo_button.png\" class=\"button\" alt=\"$GT\" title=\"Heart solo\" />\n";
-         else if(strpos($GT,"trumpless")!==false)
+         else if($solotype=='trumpless')
            echo "   <img src=\"pics/button/notrumpsolo_button.png\" class=\"button\" alt=\"$GT\" title=\"Trumpless solo\" />\n";
-         else if(strpos($GT,"trump")!==false)
+         else if($solotype=='trump')
            echo "   <img src=\"pics/button/trumpsolo_button.png\" class=\"button\" alt=\"$GT\" title=\"Trump solo\" />\n";
        }
 
@@ -1207,15 +1212,15 @@ function display_single_user($r,$start=0)
       switch($wins)
        {
        case 0:
-         echo "#tricks 0"; break;
+         echo _('#tricks 0'); break;
        case 1:
-         echo "#tricks 1"; break;
+         echo _('#tricks 1'); break;
        case 2:
        case 3:
        case 4:
-         echo "#tricks few"; break;
+         echo _('#tricks few'); break;
        default:
-         echo "#tricks many"; break;
+         echo _('#tricks many'); break;
        }
       echo "</span>\n";
       echo "  </div>\n";
@@ -1229,18 +1234,18 @@ function display_user_menu($id, $skiphash=NULL)
   if($skiphash)
     $result = DB_query("SELECT Hand.hash,Hand.game_id,Game.player from Hand".
                       " LEFT JOIN Game On Hand.game_id=Game.id".
-                      " WHERE Hand.user_id='$id'".
-                      " AND Hand.hash!='$skiphash'".
+                      " WHERE Hand.user_id=".DB_quote_smart($id).
+                      " AND Hand.hash!=".DB_quote_smart($skiphash).
                       " AND ( Game.player='$id' OR ISNULL(Game.player) )".
                       " AND ( Game.status='pre' OR Game.status='play' )".
                       " ORDER BY Game.session" );
   else
-    $result = DB_query("SELECT Hand.hash,Hand.game_id,Game.player from Hand".
-                      " LEFT JOIN Game On Hand.game_id=Game.id".
-                      " WHERE Hand.user_id='$id'".
-                      " AND ( Game.player='$id' OR ISNULL(Game.player) )".
+    $result = DB_query('SELECT Hand.hash,Hand.game_id,Game.player from Hand'.
+                      ' LEFT JOIN Game On Hand.game_id=Game.id'.
+                      ' WHERE Hand.user_id='.DB_quote_smart($id).
+                      ' AND ( Game.player='.DB_quote_smart($id).' OR ISNULL(Game.player) )'.
                       " AND ( Game.status='pre' OR Game.status='play' )".
-                      " ORDER BY Game.session" );
+                      ' ORDER BY Game.session' );
 
   $i=0;
   while( $r = DB_fetch_array($result))
@@ -1291,8 +1296,8 @@ function generate_score_table($session)
   $player_party = array();
 
   /* get player id from the first game */
-  $result = DB_query("SELECT user_id from Hand".
-                    " WHERE Hand.game_id=".$gameids[0][0]);
+  $result = DB_query('SELECT user_id from Hand'.
+                    ' WHERE Hand.game_id='.DB_quote_smart($gameids[0][0]));
   while( $r = DB_fetch_array($result))
     $player[$r[0]] = 0;
 
@@ -1308,18 +1313,18 @@ function generate_score_table($session)
       foreach($player as $id=>$points)
        {
          $party = $player_party[$id][$i][0];
-         if($party == "re")
-           if($gametype=="solo")
+         if($party == 're')
+           if($gametype=='solo')
              $player[$id] += 3*$re_score;
            else
              $player[$id] += $re_score;
-         else if ($party == "contra")
+         else if ($party == 'contra')
            $player[$id] -= $re_score;
        }
       $score[$i]['gameid']  = $gameid[0] ;
       $score[$i]['players'] = $player;
       $score[$i]['points']  = abs($re_score);
-      $score[$i]['solo']    = ($gametype=="solo");
+      $score[$i]['solo']    = ($gametype=='solo');
 
       $i++;
     }
@@ -1448,7 +1453,7 @@ function format_score_table_ascii($score)
 
   /* truncate table if we have too many games */
   $max = sizeof($score);
-  if($max>6) $output.=" (table truncated to last 6 games)\n";
+  if($max>6) $output.=" "._("(table truncated to last 6 games)")."\n";
 
   /* output header */
   foreach($score[0]['players'] as $id=>$points)
@@ -1576,7 +1581,7 @@ function check_vacation($userid)
 {
   /* get start date */
   $result = DB_query_array("SELECT value FROM User_Prefs".
-                    " WHERE user_id='$userid' AND pref_key='vacation start'" );
+                          " WHERE user_id=".DB_quote_smart($userid)." AND pref_key='vacation start'" );
   if($result)
     $start = $result[0];
   else
@@ -1584,7 +1589,7 @@ function check_vacation($userid)
 
   /* get end date */
   $result = DB_query_array("SELECT value FROM User_Prefs".
-                    " WHERE user_id='$userid' AND pref_key='vacation stop'" );
+                          " WHERE user_id=".DB_quote_smart($userid)." AND pref_key='vacation stop'" );
   if($result)
     $stop = $result[0];
   else
@@ -1592,7 +1597,7 @@ function check_vacation($userid)
 
   /* get comment */
   $result = DB_query_array("SELECT value FROM User_Prefs".
-                    " WHERE user_id='$userid' AND pref_key='vacation comment'" );
+                          " WHERE user_id=".DB_quote_smart($userid)." AND pref_key='vacation comment'" );
   if($result)
     $comment = $result[0];
   else
@@ -1725,16 +1730,72 @@ function set_language($l,$type='lang')
       case 'de':
        putenv("LC_ALL=de_DE");
        setlocale(LC_ALL, "de_DE");
-       // Specify location of translation tables
-       bindtextdomain("edoko", "./locale");
-       // Choose domain
-       textdomain("edoko");
        break;
       default:
-       /* do nothing */
+       putenv("LC_ALL=en_US");
+       setlocale(LC_ALL, "en_US");
+       break;
       }
 
+    // Specify location of translation tables
+    bindtextdomain("edoko", "./locale");
+    bind_textdomain_codeset("edoko", 'UTF-8');
+    // Choose domain
+    textdomain("edoko");
+
     return;
 }
 
+function get_display_gametype($gameid)
+{
+  /* return a readable string that can be displayed to show the game type
+   * this means hiding silent solo from the user
+   */
+
+  $gametype = DB_get_gametype_by_gameid($gameid);
+
+  if ($gametype == 'normal')
+    $GT = _('normal');
+  else if($gametype=='solo')
+    {
+      $solotype = DB_get_solo_by_gameid($gameid);
+
+      switch($solotype)
+       {
+       case 'trumpless':
+         $GT = _('trumpless solo');
+         break;
+        case 'jack':
+         $GT = _('jack solo');
+         break;
+        case 'queen':
+         $GT = _('queen solo');
+         break;
+        case 'trump':
+         $GT = _('trump solo');
+         break;
+        case 'club':
+         $GT = _('club solo');
+         break;
+        case 'spade':
+         $GT = _('spade solo');
+         break;
+        case 'heart':
+         $GT = _('heart solo');
+         break;
+        case 'silent':
+         $GT = _('normal');   /* this is change compared to $gametype */
+         break;
+        }
+    }
+  else if ($gametype == 'wedding')
+    $GT = _('wedding');
+  else if ($gametype == 'poverty')
+    $GT = _('poverty');
+  else if ($gametype == 'dpoverty')
+    $GT = _('double poverty');
+
+  return $GT;
+}
+
 ?>