BUGFIX: removed side effect from getting the user's preferences: the language used...
authorArun Persaud <arun@nubati.net>
Wed, 9 May 2012 04:25:49 +0000 (21:25 -0700)
committerArun Persaud <arun@nubati.net>
Wed, 9 May 2012 04:31:26 +0000 (21:31 -0700)
the DB_get_Prefs($myid) functions used to set the _SESSION variable for the language, but was also called with ids that belonged to other players overwriting the language settings with that from another user

digest.php
include/db.php
include/game.php
include/preferences.php
include/stats.php
include/user.php
index.php

index 4426bc2b05ecb66f601a3a4ddca3ff921bf51bfb..07625192fd57e90ca9f18d69f1d1459c8bb12e3a 100644 (file)
@@ -45,13 +45,31 @@ global $defaulttimezone;
 foreach($users as $uid)
   {
     // get local time
 foreach($users as $uid)
   {
     // get local time
-
     $zone  = DB_get_user_timezone($uid);
     date_default_timezone_set($zone);
     $time = (int)(date("H"));
 
     $zone  = DB_get_user_timezone($uid);
     date_default_timezone_set($zone);
     $time = (int)(date("H"));
 
-    // calculate mod by digest-time
+    // load users preferences
     $PREF = DB_get_PREF($uid);
     $PREF = DB_get_PREF($uid);
+
+    // set users language preference
+    $language = $PREF['language'];
+
+    switch($language)
+      {
+      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 */
+      }
+
+    // calculate mod by digest-time
     switch($PREF['digest'])
       {
       case 'digest-off':
     switch($PREF['digest'])
       {
       case 'digest-off':
index cf39d85a72e4b7fdc670158a5a2d3221cd43f014..0523fea4b675e3093dcc8ce0c3ef264b523d8504 100644 (file)
@@ -863,7 +863,7 @@ function DB_get_PREF($myid)
          break;
        }
     }
          break;
        }
     }
-  $_SESSION['language'] =  $PREF['language'];
+
   return $PREF;
 }
 
   return $PREF;
 }
 
index 3890c0299b2660b377ab838a3104e8c0aa134acc..f862fecbbb94aad4f4c86ded1bed245285591d77 100644 (file)
@@ -57,6 +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);
 
 /* 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)*/
+$_SESSION['language'] = $PREF['language'];
+
 
 /* get rule set for this game */
 $RULES = DB_get_RULES($gameid);
 
 /* get rule set for this game */
 $RULES = DB_get_RULES($gameid);
index bd58eac300374f4aa618829b9f31e8de875dc938..d3cbf925466f46a560ba738a0bb0bffa30d0660c 100644 (file)
@@ -49,6 +49,8 @@ display_user_menu($myid);
 
 /* get old infos */
 $PREF = DB_get_PREF($myid);
 
 /* get old infos */
 $PREF = DB_get_PREF($myid);
+/* set language chosen in preferences, will become active on the next reload (see index.php)*/
+$_SESSION['language'] = $PREF['language'];
 $timezone =  DB_get_user_timezone($myid);
 
 DB_update_user_timestamp($myid);
 $timezone =  DB_get_user_timezone($myid);
 
 DB_update_user_timestamp($myid);
index 8ab7c6a5e903bbc4217fb126136c2f4008288511..f0d436b089b639196f583e223fb6fe7f9cc03660 100644 (file)
@@ -35,6 +35,8 @@ if(!$myid)
   return;
 
 $PREF = DB_get_PREF($myid);
   return;
 
 $PREF = DB_get_PREF($myid);
+/* set language chosen in preferences, will become active on the next reload (see index.php)*/
+$_SESSION['language'] = $PREF['language'];
 
 DB_update_user_timestamp($myid);
 
 
 DB_update_user_timestamp($myid);
 
index 3d0b7291f178e66d59e6fe3c3dc8061963d5eb84..1b3d83e69d2b20d95ef01cf6a6bd25addd244fcc 100644 (file)
@@ -121,6 +121,8 @@ else
        $_SESSION['name'] = $myname;
 
        $PREF = DB_get_PREF($myid);
        $_SESSION['name'] = $myname;
 
        $PREF = DB_get_PREF($myid);
+       /* set language chosen in preferences, will become active on the next reload (see index.php)*/
+       $_SESSION['language'] = $PREF['language'];
 
        DB_update_user_timestamp($myid);
 
 
        DB_update_user_timestamp($myid);
 
index 4b716f8fad308041b752f04321b0e1775cb3d637..51aa24dfb9980d719b2634500f0f8ddcf7add429 100644 (file)
--- a/index.php
+++ b/index.php
@@ -58,13 +58,12 @@ if($DBopen<0)
 if(myisset('language') || isset($_SESSION['language']))
   {
     $language = 'en';
 if(myisset('language') || isset($_SESSION['language']))
   {
     $language = 'en';
-    if(isset($_SESSION['language']))
-       $language = $_SESSION['language'];
+
     if(myisset('language'))
     if(myisset('language'))
-      {
-       $language = $_REQUEST['language'];
-       $_SESSION['language'] = $language; /* overrule preferences */
-      }
+      $language = $_REQUEST['language'];
+    else if(isset($_SESSION['language']))
+      $language = $_SESSION['language'];
+
     switch($language)
       {
       case 'de':
     switch($language)
       {
       case 'de':