Revision d83769ec
Von Moritz Bunkus vor fast 6 Jahren hinzugefügt
SL/Controller/BackgroundJob.pm | ||
---|---|---|
use SL::Controller::Helper::GetModels;
|
||
use SL::DB::BackgroundJob;
|
||
use SL::Helper::Flash;
|
||
use SL::JSON;
|
||
use SL::Locale::String;
|
||
use SL::System::TaskServer;
|
||
|
||
... | ... | |
back_to => $self->url_for(action => 'edit', id => $self->background_job->id));
|
||
}
|
||
|
||
sub action_execute_class {
|
||
my ($self) = @_;
|
||
|
||
my $result;
|
||
|
||
my $ok = eval {
|
||
die "no class name given in parameter 'class'" if !$::form->{class} || ($::form->{class} =~ m{[^a-z0-9]}i);
|
||
die "invalid class" if ! -f "SL/BackgroundJob/" . $::form->{class} . ".pm";
|
||
|
||
my $package = "SL::BackgroundJob::" . $::form->{class};
|
||
|
||
eval "require $package" or die $@;
|
||
$result = $package->new->run(SL::DB::BackgroundJob->new);
|
||
|
||
1;
|
||
};
|
||
|
||
my $reply = {
|
||
status => $ok ? 'succeeded' : 'failed',
|
||
result => $ok ? $result : $@,
|
||
};
|
||
|
||
$self->render(\to_json($reply), { type => 'json' });
|
||
}
|
||
|
||
#
|
||
# filters
|
||
#
|
Auch abrufbar als: Unified diff
Hintergrundjobs: Controller-Action zur einmaligen Ausführung eines Jobs
Gedacht für Aufruf von extern, gibt JSON zurück. Beispiel:
curl --silent --user "<username>:<password>" \
'https://<hostname>/kivitendo/controller.pl?action=BackgroundJob/execute_class&class=CleanAuthSessions'