19 declare(strict_types=1);
42 int $global_idle_time_interval,
43 private bool $auto_responder_status,
49 $this->idle_time_interval =
new DateInterval(
'P' . $global_idle_time_interval .
'D');
54 return $this->auto_responder_status;
59 $this->auto_responder_status =
true;
64 $this->auto_responder_status =
false;
69 if ($this->auto_responder_data === []) {
73 foreach ($this->auto_responder_data as $auto_responder_sender_usr_id => $mail_options) {
74 if ($this->auto_responder_repository->exists(
75 $auto_responder_sender_usr_id,
76 $auto_responder_receiver_usr_id
78 $auto_responder = $this->auto_responder_repository->findBySenderIdAndReceiverId(
79 $auto_responder_sender_usr_id,
80 $auto_responder_receiver_usr_id
84 $auto_responder_sender_usr_id,
85 $auto_responder_receiver_usr_id,
87 ->
sub($this->idle_time_interval)
93 $auto_responder = $auto_responder->
withSentTime($this->clock->now());
95 if ($this->mail_action !==
null) {
97 $auto_responder_sender_usr_id,
99 $auto_responder->getSentTime()->add($this->idle_time_interval)
104 $auto_responder_receiver_usr_id,
105 $auto_responder->getSentTime()->add($this->idle_time_interval)
110 $this->auto_responder_repository->store($auto_responder);
117 return $date_time->setTimezone(
new DateTimeZone(
'UTC'));
123 $last_send_time_with_added_interval = $this
124 ->normalizeDateTimezone($auto_responder->
getSentTime())
125 ->
add($this->idle_time_interval);
130 return $last_send_time_with_added_interval->format(
'Y-m-d H:i:s') <= $now->format(
'Y-m-d H:i:s');
138 if ($this->auto_responder_status && $mail_receiver_options->
isAbsent()) {
139 $this->auto_responder_data[$sender_id] = $mail_receiver_options;
145 $this->auto_responder_data = [];
enqueueAutoresponderIfEnabled(int $sender_id, ilMailOptions $mail_receiver_options, ilMailOptions $mail_sender_options)
add()
description: > Example for rendring an add glyph.
__construct(int $global_idle_time_interval, private bool $auto_responder_status, private readonly AutoresponderRepository $auto_responder_repository, private readonly ClockInterface $clock, ?callable $mail_action=null)
normalizeDateTimezone(DateTimeImmutable $date_time)
shouldSendAutoresponder(AutoresponderDto $auto_responder)
readonly DateInterval $idle_time_interval
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
array $auto_responder_data
withSentTime(DateTimeImmutable $sent_time)
handleAutoresponderMails(int $auto_responder_receiver_usr_id)