19 declare(strict_types=1);
48 $this->task_manager = $task_manager ??
$dic->backgroundTasks()->taskManager();
49 $this->task_factory = $task_factory ??
$dic->backgroundTasks()->taskFactory();
67 array $context_parameters,
68 int $mails_per_task = 100
70 $num_value_objects = count($value_objects);
72 if ($num_value_objects <= 0) {
73 throw new ilMailException(
'First parameter must contain at least 1 array element');
76 if ($mails_per_task <= 0) {
79 'The mails per task MUST be a positive integer, "%s" given',
85 foreach ($value_objects as $value_object) {
87 throw new ilMailException(
'Array MUST contain ilMailValueObjects ONLY');
92 $remaining_objects = [];
93 foreach ($value_objects as $value_object) {
96 $remaining_objects[] = $value_object;
97 if ($task_counter === $mails_per_task) {
98 $interaction = $this->
createInteraction($usr_id, $context_id, $context_parameters, $remaining_objects);
100 $this->
runTask($interaction, $usr_id);
103 $remaining_objects = [];
107 if ([] !== $remaining_objects) {
108 $interaction = $this->
createInteraction($usr_id, $context_id, $context_parameters, $remaining_objects);
110 $this->
runTask($interaction, $usr_id);
117 $bucket->setUserId($usr_id);
119 $bucket->setTask($task);
120 $bucket->setTitle($this->
language->txt(
'mail_bg_task_title'));
122 $this->
logger->info(
'Delegated delivery to background task');
123 $this->task_manager->run($bucket);
129 array $context_parameters,
132 $json_string = $this->object_json_service->convertToJson($remaining_objects);
134 $task = $this->task_factory->createTask(ilMassMailDeliveryJob::class, [
138 serialize($context_parameters),
143 $parameters = [$task, $usr_id];
145 return $this->task_factory->createTask(
146 ilMailDeliveryJobUserInteraction::class,
runTask(\ILIAS\BackgroundTasks\Task $task, int $usr_id)
run(array $value_objects, int $usr_id, string $context_id, array $context_parameters, int $mails_per_task=100)
static getLogger(string $a_component_id)
Get component logger.
Interface Observer Contains several chained tasks and infos about them.
readonly ilLogger $logger
Customizing of pimple-DIC for ILIAS.
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
readonly ilMailValueObjectJsonService $object_json_service
readonly TaskFactory $task_factory
createInteraction(int $usr_id, string $context_id, array $context_parameters, $remaining_objects)
__construct(private readonly int $anonymous_user_id=ANONYMOUS_USER_ID, ?TaskManager $task_manager=null, ?TaskFactory $task_factory=null, ?ilLanguage $language=null, ?ilLogger $logger=null, ?Container $dic=null, ?ilMailValueObjectJsonService $object_json_service=null)
language()
description: > Example for rendring a language glyph.
readonly ilLanguage $language
readonly TaskManager $task_manager