ILIAS  trunk Revision v11.0_alpha-2662-g519ff7d528f
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, ?ilMailValueObjectJsonService $object_json_service=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 ilMailValueObjectJsonService $object_json_service
 

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,
?ilMailValueObjectJsonService  $object_json_service = null 
)

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

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

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  $this->object_json_service = $object_json_service ?? new ilMailValueObjectJsonService();
53  }
static getLogger(string $a_component_id)
Get component logger.
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
readonly ilMailValueObjectJsonService $object_json_service
global $DIC
Definition: shib_login.php:26
$dic
Definition: result.php:31
language()
description: > Example for rendring a language glyph.
Definition: language.php:41
+ 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 126 of file class.ilMassMailTaskProcessor.php.

Referenced by run().

132  $json_string = $this->object_json_service->convertToJson($remaining_objects);
133 
134  $task = $this->task_factory->createTask(ilMassMailDeliveryJob::class, [
135  $usr_id,
136  $json_string,
137  $context_id,
138  serialize($context_parameters),
139  ]);
140 
141  // Important: Don't return the task (e.g. as an early return for anonymous user id) https://mantis.ilias.de/view.php?id=33618
142 
143  $parameters = [$task, $usr_id];
144 
145  return $this->task_factory->createTask(
146  ilMailDeliveryJobUserInteraction::class,
147  $parameters
148  );
149  }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Definition: Job.php:19
+ Here is the caller graph for this function:

◆ 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 63 of file class.ilMassMailTaskProcessor.php.

References createInteraction(), and runTask().

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

◆ runTask()

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

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

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

Referenced by run().

114  : void
115  {
116  $bucket = new BasicBucket();
117  $bucket->setUserId($usr_id);
118 
119  $bucket->setTask($task);
120  $bucket->setTitle($this->language->txt('mail_bg_task_title'));
121 
122  $this->logger->info('Delegated delivery to background task');
123  $this->task_manager->run($bucket);
124  }
language()
description: > Example for rendring a language glyph.
Definition: language.php:41
+ Here is the call graph for this function:
+ Here is the caller 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.

◆ $object_json_service

readonly ilMailValueObjectJsonService ilMassMailTaskProcessor::$object_json_service
private

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

◆ $task_factory

readonly TaskFactory ilMassMailTaskProcessor::$task_factory
private

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

◆ $task_manager

readonly TaskManager ilMassMailTaskProcessor::$task_manager
private

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


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