X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDB%2FBackgroundJob.pm;h=e8ae55bac9a394448ff16695c250b5b6716e72a5;hb=f7c4665fd435b94e599ea1ac2ba23d8e21a8420f;hp=18f8e428fabbd5ae665964b224dbbff895781d60;hpb=3be85e174a63158503c333e7f0682abfc969bf8b;p=kivitendo-erp.git diff --git a/SL/DB/BackgroundJob.pm b/SL/DB/BackgroundJob.pm index 18f8e428f..e8ae55bac 100644 --- a/SL/DB/BackgroundJob.pm +++ b/SL/DB/BackgroundJob.pm @@ -8,11 +8,19 @@ use English qw(-no_match_vars); use SL::DB::MetaSetup::BackgroundJob; use SL::DB::Manager::BackgroundJob; -use SL::DB::BackgroundJobHistory; - -use SL::BackgroundJob::Test; use SL::System::Process; +__PACKAGE__->meta->initialize; + +__PACKAGE__->before_save('_before_save_set_next_run_at'); + +sub _before_save_set_next_run_at { + my ($self) = @_; + + $self->update_next_run_at if !$self->next_run_at; + return 1; +} + sub update_next_run_at { my $self = shift; @@ -28,7 +36,10 @@ sub run { my $run_at = DateTime->now_local; my $history; + require SL::DB::BackgroundJobHistory; + my $ok = eval { + eval "require $package" or die $@; my $result = $package->new->run($self); $history = SL::DB::BackgroundJobHistory @@ -68,6 +79,16 @@ sub data_as_hash { return {}; } +sub set_data { + my ($self, %data) = @_; + + my $data = YAML::Load($self->data); + $data->{$_} = $data{$_} for keys %data; + $self->data(YAML::Dump($data)); + + $self; +} + sub validate { my ($self) = @_; @@ -81,7 +102,7 @@ sub validate { } eval { - DateTime::Event::Cron->new_from_cron($self->cron_spec)->next(DateTime->now_local); + DateTime::Event::Cron->new_from_cron($self->cron_spec || '* * * * *')->next(DateTime->now_local); 1; } or push @errors, $::locale->text('The execution schedule is invalid.');