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 4426bc2..0762519 100644 (file)
@@ -45,13 +45,31 @@ global $defaulttimezone;
 foreach($users as $uid)
   {
     // get local time
-
     $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);
+
+    // 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':
index cf39d85..0523fea 100644 (file)
@@ -863,7 +863,7 @@ function DB_get_PREF($myid)
          break;
        }
     }
-  $_SESSION['language'] =  $PREF['language'];
+
   return $PREF;
 }
 
index 3890c02..f862fec 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);
+/* 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);
index bd58eac..d3cbf92 100644 (file)
@@ -49,6 +49,8 @@ display_user_menu($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);
index 8ab7c6a..f0d436b 100644 (file)
@@ -35,6 +35,8 @@ if(!$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);
 
index 3d0b729..1b3d83e 100644 (file)
@@ -121,6 +121,8 @@ else
        $_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);
 
index 4b716f8..51aa24d 100644 (file)
--- a/index.php
+++ b/index.php
@@ -58,13 +58,12 @@ if($DBopen<0)
 if(myisset('language') || isset($_SESSION['language']))
   {
     $language = 'en';
-    if(isset($_SESSION['language']))
-       $language = $_SESSION['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':