Marius Burkard
2016-07-01 49441bdd0f3ff75d5092d5b832b97ea722a66363
server/lib/classes/cron.d/500-backup_mail.inc.php
@@ -176,7 +176,7 @@
                  $dir_handle = dir($mail_backup_dir);
                  $files = array();
                  while (false !== ($entry = $dir_handle->read())) {
                     if($entry != '.' && $entry != '..' && substr($entry,0,4+strlen($rec['mailuser_id'])) == 'mail'.$rec['mailuser_id'] && is_file($mail_backup_dir.'/'.$entry)) {
                     if($entry != '.' && $entry != '..' && substr($entry,0,5+strlen($rec['mailuser_id'])) == 'mail'.$rec['mailuser_id'].'_' && is_file($mail_backup_dir.'/'.$entry)) {
                        $files[] = $entry;
                     }
                  }
@@ -198,7 +198,7 @@
                  /* remove archives */
                  $mail_backup_dir = realpath($backup_dir.'/mail'.$domain_rec['domain_id']);
                  $mail_backup_file = 'mail'.$rec['mailuser_id'].'_*';
                  $mail_backup_file = 'mail'.$rec['mailuser_id'].'_';
                  if(is_dir($mail_backup_dir)) {
                     $dir_handle = opendir($mail_backup_dir.'/');
                     while ($file = readdir($dir_handle)) {
@@ -219,6 +219,19 @@
               }
            }
            // remove non-existing backups from database
            $backups = $app->db->queryAllRecords("SELECT * FROM mail_backup WHERE server_id = ?", $conf['server_id']);
            if(is_array($backups) && !empty($backups)){
               foreach($backups as $backup){
                  $mail_backup_dir = $backup_dir.'/mail'.$backup['parent_domain_id'];
                  if(!is_file($mail_backup_dir.'/'.$backup['filename'])){
                     $sql = "DELETE FROM mail_backup WHERE server_id = ? AND parent_domain_id = ? AND filename = ?";
                     $app->db->query($sql, $conf['server_id'], $backup['parent_domain_id'], $backup['filename']);
                     if($app->db->dbHost != $app->dbmaster->dbHost) $app->dbmaster->query($sql);
                  }
               }
            }
            if( $server_config['backup_dir_is_mount'] == 'y' ) $app->system->umount_backup_dir($backup_dir);
            //* end run_backups
         }