From ef3719783d6ec416ddad2e8a9151f5f430efc4b2 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Wed, 10 Feb 2010 10:34:04 -0500
Subject: [PATCH] Added a option to debug the language files (show strings that are not contained in the lang file surrounded by #....#) Fixed: FS#1063 - Missing language variables in shell user options 

---
 interface/lib/app.inc.php |   79 +++++++++++++++++++++++++++++----------
 1 files changed, 59 insertions(+), 20 deletions(-)

diff --git a/interface/lib/app.inc.php b/interface/lib/app.inc.php
index 354ffd6..bc7c9c3 100644
--- a/interface/lib/app.inc.php
+++ b/interface/lib/app.inc.php
@@ -1,7 +1,7 @@
 <?php
 
 /*
-Copyright (c) 2007, Till Brehm, projektfarm Gmbh
+Copyright (c) 2007 - 2009, Till Brehm, projektfarm Gmbh
 All rights reserved.
 
 Redistribution and use in source and binary forms, with or without modification,
@@ -44,6 +44,11 @@
 	public function __construct()
     {
 		global $conf;
+		
+		if (isset($_REQUEST['GLOBALS']) || isset($_FILES['GLOBALS']) || isset($_REQUEST['s']) || isset($_REQUEST['s_old']) || isset($_REQUEST['conf'])) {
+			die('Internal Error: var override attempt detected');
+		}
+		
 		$this->_conf = $conf;
 		if($this->_conf['start_db'] == true) {
 			$this->load('db_'.$this->_conf['db_type']);
@@ -60,7 +65,7 @@
 			if(empty($_SESSION['s']['language'])) $_SESSION['s']['language'] = $conf['language'];
 		}
 		
-		$this->uses('auth');
+		$this->uses('auth,plugin');
 	}
 
 	public function uses($classes)
@@ -93,7 +98,15 @@
 	/** Priority values are: 0 = DEBUG, 1 = WARNING,  2 = ERROR */
 	public function log($msg, $priority = 0)
     {	
+		global $conf;
 		if($priority >= $this->_conf['log_priority']) {
+			// $server_id = $conf["server_id"];
+			$server_id = 0;
+			$priority = intval($priority);
+			$tstamp = time();
+			$msg = $this->db->quote('[INTERFACE]: '.$msg);
+			$this->db->query("INSERT INTO sys_log (server_id,datalog_id,loglevel,tstamp,message) VALUES ($server_id,0,$priority,$tstamp,'$msg')");
+			/*
 			if (is_writable($this->_conf['log_file'])) {
 				if (!$fp = fopen ($this->_conf['log_file'], 'a')) {
 					$this->error('Unable to open logfile.');
@@ -105,6 +118,7 @@
 			} else {
 				$this->error('Unable to write to logfile.');
 			}
+			*/
 		} 
 	} 
 
@@ -120,17 +134,19 @@
 <head>
 <title>Error</title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<link href="../themes/default/style.css" rel="stylesheet" type="text/css" />
+<link href="../themes/default/css/central.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
-<br /><br /><br />
-<table width="100%" border="0" cellspacing="0" cellpadding="2">
-<tr>
-<td class="error"><b>Error:</b><br />'.$msg;
-		if($next_link != '') $msg .= '<a href="'.$next_link.'">Next</a><br />';
-		$msg .= '</td>
-</tr>
-</table>
+<div class="uniForm">
+  <div id="errorMsg">
+    <h3>Error</h3>
+      <ol>
+        <li>'.$msg;
+			if($next_link != '') $msg .= '<a href="'.$next_link.'">Next</a>';
+			$msg .= '</li>
+      </ol>
+  </div>
+</div>
 </body>
 </html>';
 			die($msg);
@@ -140,31 +156,54 @@
 		}
 	}
 
-    /** Loads language */
+    /** Translates strings in current language */
     public function lng($text)
     {
 		if($this->_language_inc != 1) {
-			//* loading global and module Wordbook
-            // TODO: this need to be made clearer somehow - pedro
-			@include_once(ISPC_ROOT_PATH.'/lib/lang/'.$_SESSION['s']['language'].'.lng');
+			//* loading global Wordbook
+			$this->load_language_file('/lib/lang/'.$_SESSION['s']['language'].'.lng');
+			//* Load module wordbook, if it exists
 			if(isset($_SESSION['s']['module']['name']) && isset($_SESSION['s']['language'])) {
-				$lng_file = ISPC_ROOT_PATH.'/web/'.$_SESSION['s']['module']['name'].'/lib/lang/'.$_SESSION['s']['language'].'.lng';
-				if(!file_exists($lng_file)) $lng_file = ISPC_ROOT_PATH.'/web/'.$_SESSION['s']['module']['name'].'/lib/lang/en.lng';
-				@include_once($lng_file);
+				$lng_file = '/web/'.$_SESSION['s']['module']['name'].'/lib/lang/'.$_SESSION['s']['language'].'.lng';
+				if(!file_exists(ISPC_ROOT_PATH.$lng_file)) $lng_file = '/web/'.$_SESSION['s']['module']['name'].'/lib/lang/en.lng';
+				$this->load_language_file($lng_file);
 			}
-			$this->_wb = $wb;
 			$this->_language_inc = 1;
 		}		
 		if(!empty($this->_wb[$text])) {
 			$text = $this->_wb[$text];
+		} else {
+			if($this->_conf['debug_language']) {
+				$text = '#'.$text.'#';
+			}
 		}
 		return $text;
+	}
+	
+	//** Helper function to load the language files.
+	public function load_language_file($filename) {
+		$filename = ISPC_ROOT_PATH.'/'.$filename;
+		if(substr($filename,-4) != '.lng') $this->error('Language file has wrong extension.');
+		if(file_exists($filename)) {
+			@include_once($filename);
+			if(is_array($wb)) {
+				if(is_array($this->_wb)) {
+					$this->_wb = array_merge($this->_wb,$wb);
+				} else {
+					$this->_wb = $wb;
+				}
+			}
+		}
 	}
 
     public function tpl_defaults()
     {	
 		$this->tpl->setVar('app_title', $this->_conf['app_title']);
-		$this->tpl->setVar('app_version', $this->_conf['app_version']);
+		if(isset($_SESSION['s']['user'])) {
+			$this->tpl->setVar('app_version', $this->_conf['app_version']);
+		} else {
+			$this->tpl->setVar('app_version', '');
+		}
 		$this->tpl->setVar('app_link', $this->_conf['app_link']);
 		if(isset($this->_conf['app_logo']) && $this->_conf['app_logo'] != '' && @is_file($this->_conf['app_logo'])){
 			$this->tpl->setVar('app_logo', '<img src="'.$this->_conf['app_logo'].'">');

--
Gitblit v1.9.1