From a0fd5ab7b5412985324e970573ca22a27b3a94d3 Mon Sep 17 00:00:00 2001
From: tbrehm <t.brehm@ispconfig.org>
Date: Tue, 16 Apr 2013 05:56:06 -0400
Subject: [PATCH] - Merged revisions 3922-3958 from svn stable branch - Added backup size to web backups

---
 server/lib/classes/modules.inc.php |   67 ++++++++++++++++++++++++++++-----
 1 files changed, 57 insertions(+), 10 deletions(-)

diff --git a/server/lib/classes/modules.inc.php b/server/lib/classes/modules.inc.php
index ebb468e..57ab22c 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) {
@@ -139,7 +147,7 @@
 						$app->db->query($sql);
 						if($app->db->errorNumber > 0) {
 							$replication_error = true;
-							$app->log("Replication failed. Error: (" . $d[dbtable] . ") in MySQL server: (".$app->db->dbHost.") " . $app->db->errorMessage . " # SQL: " . $sql,LOGLEVEL_ERROR);
+							$app->log("Replication failed. Error: (" . $d['dbtable'] . ") in MySQL server: (".$app->db->dbHost.") " . $app->db->errorMessage . " # SQL: " . $sql,LOGLEVEL_ERROR);
 						}
 						$app->log('Replicated from master: '.$sql,LOGLEVEL_DEBUG);
 					}
@@ -175,13 +183,11 @@
 				
 					if($replication_error == false) {
 						if(is_array($data['old']) || is_array($data['new'])) {
+							$app->db->query("UPDATE server SET updated = ".$d["datalog_id"]." WHERE server_id = ".$conf['server_id']);
 							$this->raiseTableHook($d['dbtable'],$d['action'],$data);
 						} else {
 							$app->log('Data array was empty for datalog_id '.$d['datalog_id'],LOGLEVEL_WARN);
 						}
-						//$this->raiseTableHook($d["dbtable"],$d["action"],$data);
-						//$app->dbmaster->query("DELETE FROM sys_datalog WHERE datalog_id = ".$d["datalog_id"]);
-						//$app->log("Deleting sys_datalog ID ".$d["datalog_id"],LOGLEVEL_DEBUG);
 						$app->dbmaster->query("UPDATE server SET updated = ".$d["datalog_id"]." WHERE server_id = ".$conf['server_id']);
 						$app->log('Processed datalog_id '.$d['datalog_id'],LOGLEVEL_DEBUG);
 					} else {
@@ -199,7 +205,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 +223,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);
@@ -229,8 +238,46 @@
 				$app->log('Processed datalog_id '.$d['datalog_id'],LOGLEVEL_DEBUG);
 			}
 		}
+	}
+	
+	function processActions() {
+		global $app,$conf;
 		
+		//* get the server_id of the local server
+		$server_id = intval($conf["server_id"]);
 		
+		include_once (SCRIPT_PATH."/lib/remote_action.inc.php");
+		
+		//* SQL query to get all pending actions
+		$sql = "SELECT action_id, action_type, action_param " .
+				"FROM sys_remoteaction " .
+				"WHERE server_id = " . $server_id . " ".
+				" AND  action_id > " . intval($maxid_remote_action) . " ".
+				"ORDER BY action_id";
+		
+		$actions = $app->dbmaster->queryAllRecords($sql);
+		
+		if(is_array($actions)) {
+			foreach($actions as $action) {
+				
+				//* Raise the action
+				$state = $app->plugins->raiseAction($action['action_type'],$action['action_param']);
+				
+				//* Update the action state
+				$sql = "UPDATE sys_remoteaction " .
+						"SET action_state = '" . $app->dbmaster->quote($state) . "' " .
+						"WHERE action_id = " . intval($action['action_id']);
+				$app->dbmaster->query($sql);
+
+				/*
+				* Then save the maxid for the next time...
+				*/
+				$fp = fopen(ISPC_LIB_PATH."/remote_action.inc.php", 'wb');
+				$content = '<?php' . "\n" . '$maxid_remote_action = ' . $action['action_id'] . ';' . "\n?>";
+				fwrite($fp, $content);
+				fclose($fp);
+			}
+		}
 		
 		
 		

--
Gitblit v1.9.1