19 declare(strict_types=1);
48 if (null === $taskManager) {
49 $taskManager =
$dic->backgroundTasks()->taskManager();
53 if (null === $taskFactory) {
54 $taskFactory =
$dic->backgroundTasks()->taskFactory();
58 if (null === $language) {
59 $language =
$dic->language();
63 if (null === $logger) {
68 if ($payload_encoder === null) {
73 new ILIAS\
Mail\Transformation\Utf8Mb4Sanitizer()
88 array $mailValueObjects,
91 array $contextParameters,
92 int $mailsPerTask = 100
94 $objectsServiceSize = count($mailValueObjects);
96 if ($objectsServiceSize <= 0) {
97 throw new ilMailException(
'First parameter must contain at least 1 array element');
100 if ($mailsPerTask <= 0) {
103 'The mails per task MUST be a positive integer, "%s" given',
109 foreach ($mailValueObjects as $mailValueObject) {
111 throw new ilMailException(
'Array MUST contain ilMailValueObjects ONLY');
116 $remainingObjects = [];
117 foreach ($mailValueObjects as $mailValueObject) {
120 $remainingObjects[] = $mailValueObject;
121 if ($taskCounter === $mailsPerTask) {
122 $interaction = $this->
createInteraction($userId, $contextId, $contextParameters, $remainingObjects);
124 $this->
runTask($interaction, $userId);
127 $remainingObjects = [];
131 if ([] !== $remainingObjects) {
132 $interaction = $this->
createInteraction($userId, $contextId, $contextParameters, $remainingObjects);
134 $this->
runTask($interaction, $userId);
141 $bucket->setUserId($userId);
143 $bucket->setTask($task);
144 $bucket->setTitle($this->
language->txt(
'mail_bg_task_title'));
146 $this->
logger->info(
'Delegated delivery to background task');
147 $this->taskManager->run($bucket);
153 array $contextParameters,
156 $jsonString = $this->payload_encoder->encode($remainingObjects);
158 $task = $this->taskFactory->createTask(ilMassMailDeliveryJob::class, [
162 serialize($contextParameters),
167 $parameters = [$task, $userId];
169 return $this->taskFactory->createTask(
170 ilMailDeliveryJobUserInteraction::class,
__construct(private readonly int $anonymousUserId=ANONYMOUS_USER_ID, TaskManager $taskManager=null, TaskFactory $taskFactory=null, ilLanguage $language=null, ilLogger $logger=null, Container $dic=null, \ILIAS\Mail\Object\MailPayloadEncoder $payload_encoder=null)
static getLogger(string $a_component_id)
Get component logger.
Class ChatMainBarProvider .
createInteraction(int $userId, string $contextId, array $contextParameters, $remainingObjects)
readonly ilLogger $logger
run(array $mailValueObjects, int $userId, string $contextId, array $contextParameters, int $mailsPerTask=100)
Customizing of pimple-DIC for ILIAS.
runTask(\ILIAS\BackgroundTasks\Task $task, int $userId)
readonly ILIAS Mail Object MailPayloadEncoder $payload_encoder
readonly TaskFactory $taskFactory
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
RFC 822 Email address list validation Utility.
readonly TaskManager $taskManager
readonly ilLanguage $language