Hintergrundjobs: einmalige Jobausführung: Daten übergeben können
authorMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 22 Jul 2019 09:36:59 +0000 (11:36 +0200)
committerMoritz Bunkus <m.bunkus@linet-services.de>
Mon, 22 Jul 2019 09:43:05 +0000 (11:43 +0200)
Entweder, man übergibt `data` als Parameter in
URI-Hash-Form (z.B. '&data.var=value'), als normaler YAML-encodierter
String, so wie er auch in der Datenbank
steht (z.B. '&data=---%0Avar%3Dvalue'), oder man übergibt
JSON-encodierte Daten in
`json_data` (z.B. '&json_data=%7B%22var%22%3A%22value%22%7D`).

SL/Controller/BackgroundJob.pm

index e97b369..27a1c69 100644 (file)
@@ -131,7 +131,9 @@ sub action_execute_class {
     my $package = "SL::BackgroundJob::" . $::form->{class};
 
     eval "require $package" or die $@;
-    $result = $package->new->run(SL::DB::BackgroundJob->new);
+    my $job = SL::DB::BackgroundJob->new(data => $::form->{data});
+    $job->data(decode_json($::form->{json_data})) if $::form->{json_data};
+    $result = $package->new->run($job);
 
     1;
   };