Skip to content

Commit 764f10b

Browse files
author
Marius Burkard
committed
- proposed fix for missing database backups
1 parent 0e1c9a8 commit 764f10b

File tree

1 file changed

+15
-6
lines changed

1 file changed

+15
-6
lines changed

server/lib/classes/backup.inc.php

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1145,7 +1145,7 @@ protected static function make_database_backup($web_domain, $backup_job)
11451145
if (empty($backup_job))
11461146
$backup_job = "auto";
11471147

1148-
$records = $app->db->queryAllRecords("SELECT * FROM web_database WHERE server_id = ? AND parent_domain_id = ?", $server_id, $domain_id);
1148+
$records = $app->dbmaster->queryAllRecords("SELECT * FROM web_database WHERE server_id = ? AND parent_domain_id = ?", $server_id, $domain_id);
11491149
if (empty($records)){
11501150
$app->log('Skipping database backup for domain ' . $web_domain['domain_id'] . ', because no related databases found.', LOGLEVEL_DEBUG);
11511151
return true;
@@ -1396,17 +1396,17 @@ protected static function prepare_backup_dir($server_id, $domain_data)
13961396
*/
13971397
public static function run_backup($domain_id, $type, $backup_job, $mount = true)
13981398
{
1399-
global $app;
1399+
global $app, $conf;
14001400

14011401
$domain_id = intval($domain_id);
14021402

14031403
$sql = "SELECT * FROM web_domain WHERE (type = 'vhost' OR type = 'vhostsubdomain' OR type = 'vhostalias') AND domain_id = ?";
1404-
$rec = $app->db->queryOneRecord($sql, $domain_id);
1404+
$rec = $app->dbmaster->queryOneRecord($sql, $domain_id);
14051405
if (empty($rec)) {
14061406
$app->log('Failed to make backup of type ' . $type . ', because no information present about requested domain id ' . $domain_id, LOGLEVEL_ERROR);
14071407
return false;
14081408
}
1409-
$server_id = intval($rec['server_id']);
1409+
$server_id = intval($conf['server_id']);
14101410

14111411
if ($mount && !self::mount_backup_dir($server_id)) {
14121412
$app->log('Failed to make backup of type ' . $type . ' for domain id ' . $domain_id . ', because failed to mount backup directory', LOGLEVEL_ERROR);
@@ -1419,6 +1419,7 @@ public static function run_backup($domain_id, $type, $backup_job, $mount = true)
14191419
$ok = self::make_web_backup($rec, $backup_job);
14201420
break;
14211421
case 'mysql':
1422+
$rec['server_id'] = $server_id;
14221423
$ok = self::make_database_backup($rec, $backup_job);
14231424
break;
14241425
default:
@@ -1443,7 +1444,7 @@ public static function run_all_backups($server_id, $backup_job = "auto")
14431444
$server_id = intval($server_id);
14441445

14451446
$sql = "SELECT * FROM web_domain WHERE server_id = ? AND (type = 'vhost' OR type = 'vhostsubdomain' OR type = 'vhostalias') AND active = 'y' AND backup_interval != 'none' AND backup_interval != ''";
1446-
$domains = $app->db->queryAllRecords($sql, $server_id);
1447+
$domains = $app->dbmaster->queryAllRecords($sql, $server_id);
14471448

14481449
if (!self::mount_backup_dir($server_id)) {
14491450
$app->log('Failed to run regular backups routine because failed to mount backup directory', LOGLEVEL_ERROR);
@@ -1456,7 +1457,15 @@ public static function run_all_backups($server_id, $backup_job = "auto")
14561457
foreach ($domains as $domain) {
14571458
if (($domain['backup_interval'] == 'daily' or ($domain['backup_interval'] == 'weekly' && $date_of_week == 0) or ($domain['backup_interval'] == 'monthly' && $date_of_month == '01'))) {
14581459
self::run_backup($domain['domain_id'], 'web', $backup_job, false);
1459-
self::run_backup($domain['domain_id'], 'mysql', $backup_job, false);
1460+
}
1461+
}
1462+
1463+
$sql = "SELECT DISTINCT d.*, db.server_id as `server_id` FROM web_database as db INNER JOIN web_domain as d ON (d.domain_id = db.parent_domain_id) WHERE db.server_id = ? AND db.active = 'y' AND d.backup_interval != 'none' AND d.backup_interval != ''";
1464+
$databases = $app->dbmaster->queryAllRecords($sql, $server_id);
1465+
1466+
foreach ($databases as $database) {
1467+
if (($database['backup_interval'] == 'daily' or ($database['backup_interval'] == 'weekly' && $date_of_week == 0) or ($database['backup_interval'] == 'monthly' && $date_of_month == '01'))) {
1468+
self::run_backup($database['domain_id'], 'mysql', $backup_job, false);
14601469
}
14611470
}
14621471
self::unmount_backup_dir($server_id);

0 commit comments

Comments
 (0)