From b9a3ef486ebcde18a5ade37865ff8f397185d24f Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Sun, 24 Jul 2016 05:30:59 -0400
Subject: [PATCH] Fixed #3979 Mailbox users unable to save autoresponders

---
 server/lib/app.inc.php |   33 +++++++++++++++++++++++++--------
 1 files changed, 25 insertions(+), 8 deletions(-)

diff --git a/server/lib/app.inc.php b/server/lib/app.inc.php
index a1e75af..dd8be5a 100755
--- a/server/lib/app.inc.php
+++ b/server/lib/app.inc.php
@@ -35,6 +35,7 @@
 
 	var $loaded_modules = array();
 	var $loaded_plugins = array();
+	var $_calling_script = '';
 
 	function __construct() {
 
@@ -50,7 +51,7 @@
 					*/
 
 			if($conf['dbmaster_host'] != '' && ($conf['dbmaster_host'] != $conf['db_host'] || ($conf['dbmaster_host'] == $conf['db_host'] && $conf['dbmaster_database'] != $conf['db_database']))) {
-				$this->dbmaster = new db($conf['dbmaster_host'], $conf['dbmaster_user'], $conf['dbmaster_password'], $conf['dbmaster_database']);
+				$this->dbmaster = new db($conf['dbmaster_host'], $conf['dbmaster_user'], $conf['dbmaster_password'], $conf['dbmaster_database'], $conf['dbmaster_port']);
 			} else {
 				$this->dbmaster = $this->db;
 			}
@@ -58,6 +59,23 @@
 
 		}
 
+	}
+
+	function setCaller($caller) {
+		$this->_calling_script = $caller;
+	}
+	
+	function getCaller() {
+		return $this->_calling_script;
+	}
+	
+	function forceErrorExit($errmsg = 'undefined') {
+		global $conf;
+		
+		if($this->_calling_script == 'server') {
+			@unlink($conf['temppath'] . $conf['fs_div'] . '.ispconfig_lock');
+		}
+		die('Exiting because of error: ' . $errmsg);
 	}
 
 	function uses($classes) {
@@ -133,19 +151,18 @@
 			if(isset($this->dbmaster)) {
 				$server_id = $conf['server_id'];
 				$loglevel = $priority;
-				$tstamp = time();
-				$message = $this->dbmaster->quote($msg);
+				$message = $msg;
 				$datalog_id = (isset($this->modules->current_datalog_id) && $this->modules->current_datalog_id > 0)?$this->modules->current_datalog_id:0;
 				if($datalog_id > 0) {
-					$tmp_rec = $this->dbmaster->queryOneRecord("SELECT count(syslog_id) as number FROM sys_log WHERE datalog_id = $datalog_id AND loglevel = ".LOGLEVEL_ERROR);
+					$tmp_rec = $this->dbmaster->queryOneRecord("SELECT count(syslog_id) as number FROM sys_log WHERE datalog_id = ? AND loglevel = ?", $datalog_id, LOGLEVEL_ERROR);
 					//* Do not insert duplicate errors into the web log.
 					if($tmp_rec['number'] == 0) {
-						$sql = "INSERT INTO sys_log (server_id,datalog_id,loglevel,tstamp,message) VALUES ('$server_id',$datalog_id,'$loglevel','$tstamp','$message')";
-						$this->dbmaster->query($sql);
+						$sql = "INSERT INTO sys_log (server_id,datalog_id,loglevel,tstamp,message) VALUES (?, ?, ?, UNIX_TIMESTAMP(), ?)";
+						$this->dbmaster->query($sql, $server_id, $datalog_id, $loglevel, $message);
 					}
 				} else {
-					$sql = "INSERT INTO sys_log (server_id,datalog_id,loglevel,tstamp,message) VALUES ('$server_id',0,'$loglevel','$tstamp','$message')";
-					$this->dbmaster->query($sql);
+					$sql = "INSERT INTO sys_log (server_id,datalog_id,loglevel,tstamp,message) VALUES (?, 0, ?, UNIX_TIMESTAMP(), ?)";
+					$this->dbmaster->query($sql, $server_id, $loglevel, $message);
 				}
 			}
 

--
Gitblit v1.9.1