Skip to content

Commit 55c012f

Browse files
author
Florian Schaal
committed
fixed issue with delete mail-backups when removing a email-user / email-domain
1 parent a8c50cd commit 55c012f

File tree

1 file changed

+16
-15
lines changed

1 file changed

+16
-15
lines changed

server/plugins-available/mail_plugin.inc.php

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -403,25 +403,26 @@ function user_delete($event_name, $data) {
403403
//* mount backup directory, if necessary
404404
if( $server_config['backup_dir_is_mount'] == 'y' && !$app->system->mount_backup_dir($backup_dir) ) $mount_backup = false;
405405
if($mount_backup){
406-
$sql = "SELECT * FROM mail_domain WHERE domain = '".explode("@",$data['old']['email'])[1]."'";
407-
$domain_rec = $app->db->queryOneRecord($sql);
408-
$mail_backup_dir = $backup_dir.'/mail'.$domain_rec['domain_id'];
409-
$mail_backup_files = 'mail'.$data['old']['mailuser_id'];
410-
exec(escapeshellcmd('rm -f '.$mail_backup_dir.'/'.$mail_backup_files).'*');
411-
//* cleanup database
412-
$sql = "DELETE FROM mail_backup WHERE server_id = ? AND parent_domain_id = ? AND mailuser_id = ?";
413-
$app->db->query($sql, $conf['server_id'], $domain_rec['domain_id'], $data['old']['mailuser_id']);
414-
if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql, $conf['server_id'], $domain_rec['domain_id'], $data['old']['mailuser_id']);
415-
416-
$app->log('Deleted the mail backups for: '.$data['old']['email'], LOGLEVEL_DEBUG);
406+
$sql = "SELECT * FROM mail_domain WHERE domain = ?";
407+
$domain_rec = $app->db->queryOneRecord($sql, explode("@",$data['old']['email'])[1]);
408+
if (is_array($domain_rec)) {
409+
$mail_backup_dir = $backup_dir.'/mail'.$domain_rec['domain_id'];
410+
$mail_backup_files = 'mail'.$data['old']['mailuser_id'];
411+
exec(escapeshellcmd('rm -f '.$mail_backup_dir.'/'.$mail_backup_files).'*');
412+
//* cleanup database
413+
$sql = "DELETE FROM mail_backup WHERE server_id = ? AND parent_domain_id = ? AND mailuser_id = ?";
414+
$app->db->query($sql, $conf['server_id'], $domain_rec['domain_id'], $data['old']['mailuser_id']);
415+
if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql, $conf['server_id'], $domain_rec['domain_id'], $data['old']['mailuser_id']);
416+
417+
$app->log('Deleted the mail backups for: '.$data['old']['email'], LOGLEVEL_DEBUG);
418+
}
417419
}
418420
}
419421
}
420422

421423
function domain_delete($event_name, $data) {
422424
global $app, $conf;
423425

424-
// get the config
425426
$app->uses("getconf");
426427
$mail_config = $app->getconf->get_server_config($conf['server_id'], 'mail');
427428

@@ -456,9 +457,9 @@ function domain_delete($event_name, $data) {
456457
$mail_backup_dir = $backup_dir.'/mail'.$data['old']['domain_id'];
457458
exec(escapeshellcmd('rm -rf '.$mail_backup_dir));
458459
//* cleanup database
459-
$sql = "DELETE FROM mail_backup WHERE server_id = ? AND parent_domain_id = ? AND mailuser_id = ?";
460-
$app->db->query($sql, $conf['server_id'], $data['old']['domain_id'], $data['old']['mailuser_id']);
461-
if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql, $conf['server_id'], $domain_rec['domain_id'], $data['old']['mailuser_id']);
460+
$sql = "DELETE FROM mail_backup WHERE server_id = ? AND parent_domain_id = ?";
461+
$app->db->query($sql, $conf['server_id'], $data['old']['domain_id']);
462+
if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql, $conf['server_id'], $domain_rec['domain_id']);
462463

463464
$app->log('Deleted the mail backup directory: '.$mail_backup_dir, LOGLEVEL_DEBUG);
464465
}

0 commit comments

Comments
 (0)