19declare(strict_types=1);
57 new ILIAS\
Mail\Transformation\Utf8Mb4Sanitizer()
75 array $context_parameters,
76 int $mails_per_task = 100
78 $num_value_objects = count($value_objects);
80 if ($num_value_objects <= 0) {
81 throw new ilMailException(
'First parameter must contain at least 1 array element');
84 if ($mails_per_task <= 0) {
87 'The mails per task MUST be a positive integer, "%s" given',
93 foreach ($value_objects as $value_object) {
95 throw new ilMailException(
'Array MUST contain ilMailValueObjects ONLY');
100 $remaining_objects = [];
101 foreach ($value_objects as $value_object) {
104 $remaining_objects[] = $value_object;
105 if ($task_counter === $mails_per_task) {
106 $interaction = $this->
createInteraction($usr_id, $context_id, $context_parameters, $remaining_objects);
108 $this->
runTask($interaction, $usr_id);
111 $remaining_objects = [];
115 if ([] !== $remaining_objects) {
116 $interaction = $this->
createInteraction($usr_id, $context_id, $context_parameters, $remaining_objects);
118 $this->
runTask($interaction, $usr_id);
122 private function runTask(\
ILIAS\BackgroundTasks\Task $task,
int $usr_id): void
125 $bucket->setUserId($usr_id);
127 $bucket->setTask($task);
128 $bucket->setTitle($this->
language->txt(
'mail_bg_task_title'));
130 $this->
logger->info(
'Delegated delivery to background task');
131 $this->task_manager->run($bucket);
137 array $context_parameters,
139 ):
ILIAS\BackgroundTasks\Task {
140 $json_string = $this->payload_encoder->encode($remaining_objects);
142 $task = $this->task_factory->createTask(ilMassMailDeliveryJob::class, [
146 serialize($context_parameters),
151 $parameters = [$task, $usr_id];
153 return $this->task_factory->createTask(
154 ilMailDeliveryJobUserInteraction::class,
Customizing of pimple-DIC for ILIAS.
static getLogger(string $a_component_id)
Get component logger.
Component logger with individual log levels by component id.
readonly ilLogger $logger
readonly TaskFactory $task_factory
readonly ilLanguage $language
readonly ILIAS Mail Object MailPayloadEncoder $payload_encoder
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, ?\ILIAS\Mail\Object\MailPayloadEncoder $payload_encoder=null)
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)
readonly TaskManager $task_manager
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.
RFC 822 Email address list validation Utility.