From f2ea1ac2223dd3c86abe2d41f96b58ea30f8fe61 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Tue, 27 Oct 2009 12:02:32 -0400
Subject: [PATCH] Added: FS#696 - Make the allow override settings configurable per server and website 

---
 interface/lib/app.inc.php |   98 +++++++++++++++++++++++++++++++-----------------
 1 files changed, 63 insertions(+), 35 deletions(-)

diff --git a/interface/lib/app.inc.php b/interface/lib/app.inc.php
index ae5d9f4..e70922a 100644
--- a/interface/lib/app.inc.php
+++ b/interface/lib/app.inc.php
@@ -1,15 +1,7 @@
 <?php
-/**
- * Application Class
- * 
- * @author Till Brehm
- * @copyright  2005, Till Brehm, projektfarm Gmbh
- * @version 0.1
- * @package ISPConfig
- */
 
 /*
-Copyright (c) 2005, 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,
@@ -36,6 +28,10 @@
 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
 
+/*
+    Application Class
+*/
+
 ob_start('ob_gzhandler');
 
 class app {
@@ -43,15 +39,20 @@
 	private $_language_inc = 0;
 	private $_wb;
 	private $_loaded_classes = array();
-    private $_conf;
+	private $_conf;
 
 	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']);
-				$this->db = new db;
+			$this->load('db_'.$this->_conf['db_type']);
+			$this->db = new db;
 		}
 		
 		//* Start the session
@@ -118,21 +119,25 @@
 		//$this->uses("error");
 		//$this->error->message($msg, $priority);
 		if($stop == true){
-			$msg = '<html>
+			$msg = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
 <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">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<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);
@@ -142,15 +147,18 @@
 		}
 	}
 
-    /** 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');
-			@include_once(ISPC_ROOT_PATH.'/web/'.$_SESSION['s']['module']['name'].'/lib/lang/'.$_SESSION['s']['language'].'.lng');
-			$this->_wb = $wb;
+			//* 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 = '/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->_language_inc = 1;
 		}		
 		if(!empty($this->_wb[$text])) {
@@ -158,22 +166,42 @@
 		}
 		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($wb,$this->_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'].'">');
+		} else {
+			$this->tpl->setVar('app_logo', '&nbsp;');
+		}
 
 		$this->tpl->setVar('phpsessid', session_id());
 
 		$this->tpl->setVar('theme', $_SESSION['s']['theme']);
 		$this->tpl->setVar('html_content_encoding', $this->_conf['html_content_encoding']);
-		if(isset($this->_conf['logo']) && $this->_conf['logo'] != '' && @is_file($this->_conf['logo'])){
-			$this->tpl->setVar('logo', '<img src="'.$this->_conf['logo'].'" border="0" alt="">');
-		} else {
-			$this->tpl->setVar('logo', '&nbsp;');
-		}
 
 		$this->tpl->setVar('delete_confirmation', $this->lng('delete_confirmation'));
         //print_r($_SESSION);

--
Gitblit v1.9.1