From d5b5d3d8fc4ce9380653d6ff60ae8b678e858433 Mon Sep 17 00:00:00 2001
From: Marius Cramer <m.cramer@pixcept.de>
Date: Fri, 09 Jan 2015 11:15:03 -0500
Subject: [PATCH] Merge branch 'master' of git.ispconfig.org:ispconfig/ispconfig3

---
 interface/web/sites/templates/web_backup_list.htm |    4 +++-
 interface/lib/classes/plugin_backuplist.inc.php   |   30 ++++++++++++++++++++++++++----
 server/plugins-available/backup_plugin.inc.php    |    4 ++--
 3 files changed, 31 insertions(+), 7 deletions(-)

diff --git a/interface/lib/classes/plugin_backuplist.inc.php b/interface/lib/classes/plugin_backuplist.inc.php
index d3650c3..ffdc4d9 100644
--- a/interface/lib/classes/plugin_backuplist.inc.php
+++ b/interface/lib/classes/plugin_backuplist.inc.php
@@ -67,13 +67,16 @@
 			}
 
 			if($_GET['backup_action'] == 'download' && $backup_id > 0) {
+				$server_id = $this->form->dataRecord['server_id'];
+				$backup = $app->db->queryOneRecord("SELECT * FROM web_backup WHERE backup_id = ".$backup_id);
+				if($backup['server_id'] > 0) $server_id = $backup['server_id'];
 				$sql = "SELECT count(action_id) as number FROM sys_remoteaction WHERE action_state = 'pending' AND action_type = 'backup_download' AND action_param = '$backup_id'";
 				$tmp = $app->db->queryOneRecord($sql);
 				if($tmp['number'] == 0) {
 					$message .= $wb['download_info_txt'];
 					$sql =  "INSERT INTO sys_remoteaction (server_id, tstamp, action_type, action_param, action_state, response) " .
 						"VALUES (".
-						(int)$this->form->dataRecord['server_id'] . ", " .
+						(int)$server_id . ", " .
 						time() . ", " .
 						"'backup_download', " .
 						"'".$backup_id."', " .
@@ -86,13 +89,16 @@
 				}
 			}
 			if($_GET['backup_action'] == 'restore' && $backup_id > 0) {
+				$server_id = $this->form->dataRecord['server_id'];
+				$backup = $app->db->queryOneRecord("SELECT * FROM web_backup WHERE backup_id = ".$backup_id);
+				if($backup['server_id'] > 0) $server_id = $backup['server_id'];
 				$sql = "SELECT count(action_id) as number FROM sys_remoteaction WHERE action_state = 'pending' AND action_type = 'backup_restore' AND action_param = '$backup_id'";
 				$tmp = $app->db->queryOneRecord($sql);
 				if($tmp['number'] == 0) {
 					$message .= $wb['restore_info_txt'];
 					$sql =  "INSERT INTO sys_remoteaction (server_id, tstamp, action_type, action_param, action_state, response) " .
 						"VALUES (".
-						(int)$this->form->dataRecord['server_id'] . ", " .
+						(int)$server_id . ", " .
 						time() . ", " .
 						"'backup_restore', " .
 						"'".$backup_id."', " .
@@ -110,9 +116,22 @@
 		//* Get the data
 		$server_ids = array();
 		$web = $app->db->queryOneRecord("SELECT server_id FROM web_domain WHERE domain_id = ".$app->functions->intval($this->form->id));
-		$database = $app->db->queryOneRecord("SELECT server_id FROM web_database WHERE parent_domain_id = ".$app->functions->intval($this->form->id));
+		$databases = $app->db->queryAllRecords("SELECT server_id FROM web_database WHERE parent_domain_id = ".$app->functions->intval($this->form->id));
 		if($app->functions->intval($web['server_id']) > 0) $server_ids[] = $app->functions->intval($web['server_id']);
-		if($app->functions->intval($database['server_id']) > 0) $server_ids[] = $app->functions->intval($database['server_id']);
+		if(is_array($databases) && !empty($databases)){
+			foreach($databases as $database){
+				if($app->functions->intval($database['server_id']) > 0) $server_ids[] = $app->functions->intval($database['server_id']);
+			}
+		}
+		$server_ids = array_unique($server_ids);
+		$web = $app->db->queryOneRecord("SELECT server_id FROM web_domain WHERE domain_id = ".$app->functions->intval($this->form->id));
+		$databases = $app->db->queryAllRecords("SELECT server_id FROM web_database WHERE parent_domain_id = ".$app->functions->intval($this->form->id));
+		if($app->functions->intval($web['server_id']) > 0) $server_ids[] = $app->functions->intval($web['server_id']);
+		if(is_array($databases) && !empty($databases)){
+			foreach($databases as $database){
+				if($app->functions->intval($database['server_id']) > 0) $server_ids[] = $app->functions->intval($database['server_id']);
+			}
+		}
 		$server_ids = array_unique($server_ids);
 		$sql = "SELECT * FROM web_backup WHERE parent_domain_id = ".$app->functions->intval($this->form->id)." AND server_id IN (".implode(',', $server_ids).") ORDER BY tstamp DESC, backup_type ASC";
 		$records = $app->db->queryAllRecords($sql);
@@ -127,6 +146,9 @@
 
 				$rec['date'] = date($app->lng('conf_format_datetime'), $rec['tstamp']);
 				$rec['backup_type'] = $wb[('backup_type_'.$rec['backup_type'])];
+				
+				$rec['download_available'] = true;
+				if($rec['server_id'] != $web['server_id']) $rec['download_available'] = false;
 
 				$records_new[] = $rec;
 			}
diff --git a/interface/web/sites/templates/web_backup_list.htm b/interface/web/sites/templates/web_backup_list.htm
index 332987c..c5cd4c8 100644
--- a/interface/web/sites/templates/web_backup_list.htm
+++ b/interface/web/sites/templates/web_backup_list.htm
@@ -29,7 +29,9 @@
                             <td class="text-right">
                                 <div class="buttons">
                                     <button class="btn btn-default formbutton-default" type="button" onclick="confirm_action('sites/web_domain_edit.php?id={tmpl_var name='parent_id'}&next_tab=backup&backup_action=restore&backup_id={tmpl_var name='backup_id'}','{tmpl_var name='restore_confirm_txt'}');">{tmpl_var name="restore_backup_txt"}</button>
-                                    <button class="btn btn-default formbutton-default" type="button" data-load-content="sites/web_domain_edit.php?id={tmpl_var name='parent_id'}&next_tab=backup&backup_action=download&backup_id={tmpl_var name='backup_id'}">{tmpl_var name="download_backup_txt"}</button>
+                                    <tmpl_if name="download_available">
+										<button class="btn btn-default formbutton-default" type="button" data-load-content="sites/web_domain_edit.php?id={tmpl_var name='parent_id'}&next_tab=backup&backup_action=download&backup_id={tmpl_var name='backup_id'}">{tmpl_var name="download_backup_txt"}</button>
+									</tmpl_if>
                                 </div>
                             </td>
                         </tr>
diff --git a/server/plugins-available/backup_plugin.inc.php b/server/plugins-available/backup_plugin.inc.php
index 6184dd5..863ac98 100644
--- a/server/plugins-available/backup_plugin.inc.php
+++ b/server/plugins-available/backup_plugin.inc.php
@@ -68,7 +68,7 @@
 
 			$app->uses('ini_parser,file,getconf,system');
 
-			$web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$backup['parent_domain_id']);
+			$web = $app->dbmaster->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$backup['parent_domain_id']);
 			$server_config = $app->getconf->get_server_config($conf['server_id'], 'server');
 			$backup_dir = $server_config['backup_dir'].'/web'.$web['domain_id'];
 			
@@ -80,7 +80,7 @@
 				//* Make backup available for download
 				if($action_name == 'backup_download') {
 					//* Copy the backup file to the backup folder of the website
-					if(file_exists($backup_dir.'/'.$backup['filename']) && !stristr($backup_dir.'/'.$backup['filename'], '..') && !stristr($backup_dir.'/'.$backup['filename'], 'etc')) {
+					if(file_exists($backup_dir.'/'.$backup['filename']) && file_exists($web['document_root'].'/backup/') && !stristr($backup_dir.'/'.$backup['filename'], '..') && !stristr($backup_dir.'/'.$backup['filename'], 'etc')) {
 						copy($backup_dir.'/'.$backup['filename'], $web['document_root'].'/backup/'.$backup['filename']);
 						chgrp($web['document_root'].'/backup/'.$backup['filename'], $web['system_group']);
 						$app->log('cp '.$backup_dir.'/'.$backup['filename'].' '.$web['document_root'].'/backup/'.$backup['filename'], LOGLEVEL_DEBUG);

--
Gitblit v1.9.1