From 556e4c1ef189e63a08df9f0ffab386cbbacf5313 Mon Sep 17 00:00:00 2001
From: mcramer <m.cramer@pixcept.de>
Date: Sat, 27 Oct 2012 05:03:43 -0400
Subject: [PATCH] Bugfix: Backup did not work correctly on multiple databases in one web. "X Copies" were not preserved per database so not all databases were backed up Bugfix: Select box did behave strange in some cases

---
 server/cron_daily.php |   35 +++++++++++++++++++----------------
 1 files changed, 19 insertions(+), 16 deletions(-)

diff --git a/server/cron_daily.php b/server/cron_daily.php
index dcc84ec..f0d5f57 100644
--- a/server/cron_daily.php
+++ b/server/cron_daily.php
@@ -747,25 +747,28 @@
 				$dir_handle = dir($db_backup_dir);
 				$files = array();
 				while (false !== ($entry = $dir_handle->read())) {
-					if($entry != '.' && $entry != '..' && substr($entry,0,2) == 'db' && is_file($db_backup_dir.'/'.$entry)) {
-						$files[] = $entry;
+					if($entry != '.' && $entry != '..' && preg_match('/^db_(.*?)_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}\.sql.gz$/', $entry, $matches) && is_file($db_backup_dir.'/'.$entry)) {
+                        if(array_key_exists($matches[1], $files) == false) $files[$matches[1]] = array();
+						$files[$matches[1]][] = $entry;
 					}
 				}
 				$dir_handle->close();
-
-				rsort($files);
-
-				for ($n = $backup_copies; $n <= 10; $n++) {
-					if(isset($files[$n]) && is_file($db_backup_dir.'/'.$files[$n])) {
-						unlink($db_backup_dir.'/'.$files[$n]);
-						$sql = "SELECT backup_id FROM web_backup WHERE server_id = ".$conf['server_id']." AND parent_domain_id = $web_id AND filename = '".$app->db->quote($files[$n])."'";
-						$tmp = $app->dbmaster->queryOneRecord($sql);
-						//$app->dbmaster->datalogDelete('web_backup', 'backup_id', $tmp['backup_id']);
-						$sql = "DELETE FROM web_backup WHERE backup_id = ".intval($tmp['backup_id']);
-						$app->db->query($sql);
-						$app->dbmaster->query($sql);
-					}
-				}
+                
+                reset($files);
+                foreach($files as $db_name => $filelist) {
+                    rsort($filelist);
+                    for ($n = $backup_copies; $n <= 10; $n++) {
+                        if(isset($filelist[$n]) && is_file($db_backup_dir.'/'.$filelist[$n])) {
+                            unlink($db_backup_dir.'/'.$filelist[$n]);
+                            $sql = "SELECT backup_id FROM web_backup WHERE server_id = ".$conf['server_id']." AND parent_domain_id = $web_id AND filename = '".$app->db->quote($filelist[$n])."'";
+                            $tmp = $app->dbmaster->queryOneRecord($sql);
+                            //$app->dbmaster->datalogDelete('web_backup', 'backup_id', $tmp['backup_id']);
+                            $sql = "DELETE FROM web_backup WHERE backup_id = ".intval($tmp['backup_id']);
+                            $app->db->query($sql);
+                            $app->dbmaster->query($sql);
+                        }
+                    }
+                }
 
 				unset($files);
 				unset($dir_handle);

--
Gitblit v1.9.1