diff --git a/mysql/drop_dbase.cgi b/mysql/drop_dbase.cgi index dc3d21e86..2ae0e76ca 100755 --- a/mysql/drop_dbase.cgi +++ b/mysql/drop_dbase.cgi @@ -10,6 +10,7 @@ $access{'edonly'} && &error($text{'dbase_ecannot'}); if ($in{'confirm'}) { # Drop the database &execute_sql_logged($master_db, "drop database "."estr($in{'db'})); + &delete_database_backup_job($in{'db'}); &webmin_log("delete", "db", $in{'db'}); &redirect(""); } diff --git a/mysql/drop_dbases.cgi b/mysql/drop_dbases.cgi index 980841580..16f27e609 100755 --- a/mysql/drop_dbases.cgi +++ b/mysql/drop_dbases.cgi @@ -16,6 +16,7 @@ if ($in{'confirm'}) { # Drop the databases foreach $db (@dbs) { &execute_sql_logged($master_db,"drop database "."estr($db)); + &delete_database_backup_job($db); } &webmin_log("delete", "dbs", scalar(@dbs), \%in); &redirect(""); diff --git a/mysql/mysql-lib.pl b/mysql/mysql-lib.pl index a8ae7d890..e00a3ebc1 100755 --- a/mysql/mysql-lib.pl +++ b/mysql/mysql-lib.pl @@ -1434,5 +1434,21 @@ if ($? || $out) { return undef; } +# delete_database_backup_job(db) +# If there is a backup scheduled for some database, remove it +sub delete_database_backup_job +{ +my ($db) = @_; +&foreign_require("cron"); +my @jobs = &cron::list_cron_jobs(); +my $cmd = "$cron_cmd $db"; +my ($job) = grep { $_->{'command'} eq $cmd } @jobs; +if ($job) { + &lock_file(&cron::cron_file($job)); + &cron::delete_cron_job($job); + &unlock_file(&cron::cron_file($job)); + } +} + 1;