Author:   Lars Michelsen <[email protected]>
Date:     Tue Aug 30 11:52:58 2011 +0200
Committer:   Lars Michelsen <[email protected]>
Commit-Date: Tue Aug 30 11:52:58 2011 +0200

Fixed user language handling after latest recodings

---

 share/server/core/classes/GlobalLanguage.php |   40 +++++++++++++++++---------
 share/server/core/defines/global.php         |    1 +
 share/server/core/functions/index.php        |    3 ++
 3 files changed, 30 insertions(+), 14 deletions(-)

diff --git a/share/server/core/classes/GlobalLanguage.php 
b/share/server/core/classes/GlobalLanguage.php
index 46f6250..5addfe8 100644
--- a/share/server/core/classes/GlobalLanguage.php
+++ b/share/server/core/classes/GlobalLanguage.php
@@ -44,23 +44,13 @@ class GlobalLanguage {
 
         $this->textDomain = $textDomain;
 
-        $this->USERCFG = new CoreUserCfg();
-
-        $this->sCurrentLanguage = $this->gatherCurrentLanguage();
-
         // Append encoding (UTF8)
         $this->sCurrentEncoding = 'UTF-8';
 
         // Check for gettext extension
         require_once('../../server/core/ext/php-gettext-1.0.9/gettext.inc');
 
-        // Check if choosen language is available
-        $this->checkLanguageAvailable($this->sCurrentLanguage, true, true);
-
-        // Set the language to us
-        putenv('LC_ALL='.$this->sCurrentLanguage.'.'.$this->sCurrentEncoding);
-        putenv('LANG='.$this->sCurrentLanguage.'.'.$this->sCurrentEncoding);
-        T_setlocale(LC_MESSAGES, 
$this->sCurrentLanguage.'.'.$this->sCurrentEncoding);
+        $this->setLanguage();
 
         T_bindtextdomain($this->textDomain, cfg('paths', 'language'));
         T_bind_textdomain_codeset($this->textDomain, $this->sCurrentEncoding);
@@ -78,6 +68,25 @@ class GlobalLanguage {
     }
 
     /**
+     * Sets the language to be used for future localized strings
+     * while processing the current page.
+     */
+    public function setLanguage($handleUserCfg = false) {
+        if($handleUserCfg)
+            $this->USERCFG = new CoreUserCfg();
+
+        $this->sCurrentLanguage = $this->gatherCurrentLanguage();
+
+        // Check if choosen language is available
+        $this->checkLanguageAvailable($this->sCurrentLanguage, true, true);
+
+        // Set the language to us
+        putenv('LC_ALL='.$this->sCurrentLanguage.'.'.$this->sCurrentEncoding);
+        putenv('LANG='.$this->sCurrentLanguage.'.'.$this->sCurrentEncoding);
+        T_setlocale(LC_MESSAGES, 
$this->sCurrentLanguage.'.'.$this->sCurrentEncoding);
+    }
+
+    /**
      * Reads the language to use in NagVis
      *
      * @return  String
@@ -92,7 +101,8 @@ class GlobalLanguage {
                 switch($sMethod) {
                     case 'session':
                         // Read the user choice from user options
-                        $sReturn = $this->USERCFG->getValue('language', '');
+                        if($this->USERCFG !== null)
+                            $sReturn = $this->USERCFG->getValue('language', 
'');
                     break;
                     case 'browser':
                         // Read the prefered language from the users browser
@@ -107,8 +117,10 @@ class GlobalLanguage {
                         $sReturn = $this->getUserLanguage();
 
                         // Save language to user config when user set one
-                        if($sReturn != '' && $sReturn != 
$this->USERCFG->getValue('language', ''))
-                                       $this->USERCFG->doSet(Array('language' 
=> $sReturn));
+                        if($sReturn != ''
+                           && $this->USERCFG !== null
+                           && $sReturn != $this->USERCFG->getValue('language', 
''))
+                            $this->USERCFG->doSet(Array('language' => 
$sReturn));
                     break;
                     case 'config':
                         // Read default language from configuration
diff --git a/share/server/core/defines/global.php 
b/share/server/core/defines/global.php
index 31b921f..a374d82 100644
--- a/share/server/core/defines/global.php
+++ b/share/server/core/defines/global.php
@@ -100,6 +100,7 @@ define('GET_PHYSICAL_PATH', false);
 define('DONT_GET_OBJECT_STATE', false);
 define('DONT_GET_SINGLE_MEMBER_STATES', false);
 define('GET_SINGLE_MEMBER_STATES', true);
+define('HANDLE_USERCFG', true);
 
 define('ONLY_STATE', true);
 define('COMPLETE', false);
diff --git a/share/server/core/functions/index.php 
b/share/server/core/functions/index.php
index bbb2e4a..8b451cd 100644
--- a/share/server/core/functions/index.php
+++ b/share/server/core/functions/index.php
@@ -57,6 +57,9 @@ if($AUTH->isAuthenticated()) {
 // Make the AA information available to whole NagVis for permission checks
 $CORE->setAA($AUTH, $AUTHORISATION);
 
+// Re-set the language to handle the user individual language
+$_LANG->setLanguage(HANDLE_USERCFG);
+
 /*
 * Module handling 1: Choose modules
 */


------------------------------------------------------------------------------
Special Offer -- Download ArcSight Logger for FREE!
Finally, a world-class log management solution at an even better 
price-free! And you'll get a free "Love Thy Logs" t-shirt when you
download Logger. Secure your free ArcSight Logger TODAY!
http://p.sf.net/sfu/arcsisghtdev2dev
_______________________________________________
Nagvis-checkins mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/nagvis-checkins

Reply via email to