From ebc41d2bed365692c35ccb99e26f51a9f3ebfa15 Mon Sep 17 00:00:00 2001
From: cfoe <cfoe@ispconfig3>
Date: Fri, 31 Aug 2012 10:40:16 -0400
Subject: [PATCH] fix for IE7 + IE8 compatibility

---
 server/lib/classes/modules.inc.php |   23 +++++++++++++++++------
 1 files changed, 17 insertions(+), 6 deletions(-)

diff --git a/server/lib/classes/modules.inc.php b/server/lib/classes/modules.inc.php
index ef600bd..ce29432 100644
--- a/server/lib/classes/modules.inc.php
+++ b/server/lib/classes/modules.inc.php
@@ -83,11 +83,11 @@
 		global $app,$conf;
 		
 		//* If its a multiserver setup
-		if($app->db->dbHost != $app->dbmaster->dbHost) {
+		if($app->db->dbHost != $app->dbmaster->dbHost || ($app->db->dbHost == $app->dbmaster->dbHost && $app->db->dbName != $app->dbmaster->dbName)) {
 			if($conf['mirror_server_id'] > 0) {
-				$sql = "SELECT * FROM sys_datalog WHERE datalog_id > ".$conf['last_datalog_id']." AND (server_id = ".$conf['server_id']." OR server_id = ".$conf['mirror_server_id']." OR server_id = 0) ORDER BY datalog_id";
+				$sql = "SELECT * FROM sys_datalog WHERE datalog_id > ".$conf['last_datalog_id']." AND (server_id = ".$conf['server_id']." OR server_id = ".$conf['mirror_server_id']." OR server_id = 0) ORDER BY datalog_id LIMIT 0,1000";
 			} else {
-				$sql = "SELECT * FROM sys_datalog WHERE datalog_id > ".$conf['last_datalog_id']." AND (server_id = ".$conf['server_id']." OR server_id = 0) ORDER BY datalog_id";
+				$sql = "SELECT * FROM sys_datalog WHERE datalog_id > ".$conf['last_datalog_id']." AND (server_id = ".$conf['server_id']." OR server_id = 0) ORDER BY datalog_id LIMIT 0,1000";
 			}
 			
 			$records = $app->dbmaster->queryAllRecords($sql);
@@ -108,6 +108,7 @@
 				*/
 				
 				$replication_error = false;
+				$data['mirrored'] = false;
 				
 				$this->current_datalog_id = $d['datalog_id'];
 				
@@ -115,9 +116,16 @@
 				* If we are in a mirror setup, rewrite the server_id of records that originally 
 				* belonged to the mirrored server to the local server_id
 				*/
+				
 				if($conf['mirror_server_id'] > 0 && $d['dbtable'] != 'server') {
-					if(isset($data['new']['server_id']) && $data['new']['server_id'] == $conf['mirror_server_id']) $data['new']['server_id'] = $conf['server_id'];
-					if(isset($data['old']['server_id']) && $data['old']['server_id'] == $conf['mirror_server_id']) $data['old']['server_id'] = $conf['server_id'];
+					if(isset($data['new']['server_id']) && $data['new']['server_id'] == $conf['mirror_server_id']) {
+						$data['new']['server_id'] = $conf['server_id'];
+						$data['mirrored'] = true;
+					}
+					if(isset($data['old']['server_id']) && $data['old']['server_id'] == $conf['mirror_server_id']) {
+						$data['old']['server_id'] = $conf['server_id'];
+						$data['mirrored'] = true;
+					}
 				}
 				
 				if(count($data['new']) > 0) {
@@ -199,7 +207,7 @@
 			
 		//* if we have a single server setup
 		} else {
-			$sql = "SELECT * FROM sys_datalog WHERE datalog_id > ".$conf['last_datalog_id']." AND (server_id = ".$conf['server_id']." OR server_id = 0) ORDER BY datalog_id";
+			$sql = "SELECT * FROM sys_datalog WHERE datalog_id > ".$conf['last_datalog_id']." AND (server_id = ".$conf['server_id']." OR server_id = 0) ORDER BY datalog_id LIMIT 0,1000";
 			$records = $app->db->queryAllRecords($sql);
 			foreach($records as $d) {
 				
@@ -217,6 +225,9 @@
 				}
 				*/
 				
+				//* Data on a single server is never mirrored
+				$data['mirrored'] = false;
+				
 				$this->current_datalog_id = $d['datalog_id'];
 				if(is_array($data['old']) || is_array($data['new'])) {
 					$this->raiseTableHook($d['dbtable'],$d['action'],$data);

--
Gitblit v1.9.1