ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
ilMassMailTaskProcessor Class Reference
+ Collaboration diagram for ilMassMailTaskProcessor:

Public Member Functions

 __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)
 
 run (array $value_objects, int $usr_id, string $context_id, array $context_parameters, int $mails_per_task=100)
 

Private Member Functions

 runTask (\ILIAS\BackgroundTasks\Task $task, int $usr_id)
 
 createInteraction (int $usr_id, string $context_id, array $context_parameters, $remaining_objects)
 

Private Attributes

readonly TaskManager $task_manager
 
readonly TaskFactory $task_factory
 
readonly ilLanguage $language
 
readonly ilLogger $logger
 
readonly ILIAS Mail Object MailPayloadEncoder $payload_encoder
 

Detailed Description

Definition at line 26 of file class.ilMassMailTaskProcessor.php.

Constructor & Destructor Documentation

◆ __construct()

ilMassMailTaskProcessor::__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 
)

Definition at line 34 of file class.ilMassMailTaskProcessor.php.

42 {
43 if ($dic === null) {
44 global $DIC;
45 $dic = $DIC;
46 }
47
48 $this->task_manager = $task_manager ?? $dic->backgroundTasks()->taskManager();
49 $this->task_factory = $task_factory ?? $dic->backgroundTasks()->taskFactory();
50 $this->language = $language ?? $dic->language();
51 $this->logger = $logger ?? ilLoggerFactory::getLogger('mail');
52 if ($payload_encoder === null) {
54 new ILIAS\Mail\Object\PureJsonMailEncoder(
56 ),
57 new ILIAS\Mail\Transformation\Utf8Mb4Sanitizer()
58 );
59 }
60 $this->payload_encoder = $payload_encoder;
61 }
static getLogger(string $a_component_id)
Get component logger.
readonly ILIAS Mail Object MailPayloadEncoder $payload_encoder
$dic
Definition: ltiresult.php:33
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.
RFC 822 Email address list validation Utility.
global $DIC
Definition: shib_login.php:26

References $DIC, $dic, $payload_encoder, $task_factory, $task_manager, ilLoggerFactory\getLogger(), ILIAS\UI\examples\Symbol\Glyph\Language\language(), and ILIAS\Repository\logger().

+ Here is the call graph for this function:

Member Function Documentation

◆ createInteraction()

ilMassMailTaskProcessor::createInteraction ( int  $usr_id,
string  $context_id,
array  $context_parameters,
  $remaining_objects 
)
private

Definition at line 134 of file class.ilMassMailTaskProcessor.php.

140 $json_string = $this->payload_encoder->encode($remaining_objects);
141
142 $task = $this->task_factory->createTask(ilMassMailDeliveryJob::class, [
143 $usr_id,
144 $json_string,
145 $context_id,
146 serialize($context_parameters),
147 ]);
148
149 // Important: Don't return the task (e.g. as an early return for anonymous user id) https://mantis.ilias.de/view.php?id=33618
150
151 $parameters = [$task, $usr_id];
152
153 return $this->task_factory->createTask(
154 ilMailDeliveryJobUserInteraction::class,
155 $parameters
156 );
157 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Definition: Job.php:19

◆ run()

ilMassMailTaskProcessor::run ( array  $value_objects,
int  $usr_id,
string  $context_id,
array  $context_parameters,
int  $mails_per_task = 100 
)
Parameters
list<ilMailValueObject>$value_objects - One MailValueObject = One Task
int$usr_id- User ID of the user who executes the background task
string$context_id- context ID of the Background task
array$context_parameters- context parameters for the background tasks
int$mails_per_task- Defines how many mails will be added before a background task is executed
Exceptions
ilMailException

Definition at line 71 of file class.ilMassMailTaskProcessor.php.

77 : void {
78 $num_value_objects = count($value_objects);
79
80 if ($num_value_objects <= 0) {
81 throw new ilMailException('First parameter must contain at least 1 array element');
82 }
83
84 if ($mails_per_task <= 0) {
85 throw new ilMailException(
86 sprintf(
87 'The mails per task MUST be a positive integer, "%s" given',
88 $mails_per_task
89 )
90 );
91 }
92
93 foreach ($value_objects as $value_object) {
94 if (!($value_object instanceof ilMailValueObject)) {
95 throw new ilMailException('Array MUST contain ilMailValueObjects ONLY');
96 }
97 }
98
99 $task_counter = 0;
100 $remaining_objects = [];
101 foreach ($value_objects as $value_object) {
102 $task_counter++;
103
104 $remaining_objects[] = $value_object;
105 if ($task_counter === $mails_per_task) {
106 $interaction = $this->createInteraction($usr_id, $context_id, $context_parameters, $remaining_objects);
107
108 $this->runTask($interaction, $usr_id);
109
110 $task_counter = 0;
111 $remaining_objects = [];
112 }
113 }
114
115 if ([] !== $remaining_objects) {
116 $interaction = $this->createInteraction($usr_id, $context_id, $context_parameters, $remaining_objects);
117
118 $this->runTask($interaction, $usr_id);
119 }
120 }
createInteraction(int $usr_id, string $context_id, array $context_parameters, $remaining_objects)
runTask(\ILIAS\BackgroundTasks\Task $task, int $usr_id)

◆ runTask()

ilMassMailTaskProcessor::runTask ( \ILIAS\BackgroundTasks\Task  $task,
int  $usr_id 
)
private

Definition at line 122 of file class.ilMassMailTaskProcessor.php.

122 : void
123 {
124 $bucket = new BasicBucket();
125 $bucket->setUserId($usr_id);
126
127 $bucket->setTask($task);
128 $bucket->setTitle($this->language->txt('mail_bg_task_title'));
129
130 $this->logger->info('Delegated delivery to background task');
131 $this->task_manager->run($bucket);
132 }

References ILIAS\UI\examples\Symbol\Glyph\Language\language(), and ILIAS\Repository\logger().

+ Here is the call graph for this function:

Field Documentation

◆ $language

readonly ilLanguage ilMassMailTaskProcessor::$language
private

Definition at line 30 of file class.ilMassMailTaskProcessor.php.

◆ $logger

readonly ilLogger ilMassMailTaskProcessor::$logger
private

Definition at line 31 of file class.ilMassMailTaskProcessor.php.

◆ $payload_encoder

readonly ILIAS Mail Object MailPayloadEncoder ilMassMailTaskProcessor::$payload_encoder
private

Definition at line 32 of file class.ilMassMailTaskProcessor.php.

Referenced by __construct().

◆ $task_factory

readonly TaskFactory ilMassMailTaskProcessor::$task_factory
private

Definition at line 29 of file class.ilMassMailTaskProcessor.php.

Referenced by __construct().

◆ $task_manager

readonly TaskManager ilMassMailTaskProcessor::$task_manager
private

Definition at line 28 of file class.ilMassMailTaskProcessor.php.

Referenced by __construct().


The documentation for this class was generated from the following file: