19 declare(strict_types=1);
39 int $global_idle_time_interval,
40 private bool $auto_responder_status,
47 $this->idle_time_interval =
new DateInterval(
'P' . $global_idle_time_interval .
'D');
52 return $this->auto_responder_status;
57 $this->auto_responder_status =
true;
62 $this->auto_responder_status =
false;
67 if ($this->auto_responder_data === []) {
71 foreach ($this->auto_responder_data as $auto_responder_sender_usr_id => $mail_options) {
72 if ($this->auto_responder_repository->exists(
73 $auto_responder_sender_usr_id,
74 $auto_responder_receiver_usr_id
76 $auto_responder = $this->auto_responder_repository->findBySenderIdAndReceiverId(
77 $auto_responder_sender_usr_id,
78 $auto_responder_receiver_usr_id
82 $auto_responder_sender_usr_id,
83 $auto_responder_receiver_usr_id,
85 ->
sub($this->idle_time_interval)
91 $auto_responder = $auto_responder->
withSentTime($this->clock->now());
93 if ($this->mail_action !==
null) {
95 $auto_responder_sender_usr_id,
97 $auto_responder->getSentTime()->add($this->idle_time_interval)
102 $auto_responder_receiver_usr_id,
103 $auto_responder->getSentTime()->add($this->idle_time_interval)
108 $this->auto_responder_repository->store($auto_responder);
115 return $date_time->setTimezone(
new DateTimeZone(
'UTC'));
121 $last_send_time_with_added_interval = $this
122 ->normalizeDateTimezone($auto_responder->
getSentTime())
123 ->
add($this->idle_time_interval);
128 return $last_send_time_with_added_interval->format(
'Y-m-d H:i:s') <= $now->format(
'Y-m-d H:i:s');
136 if ($this->auto_responder_status && $mail_receiver_options->
isAbsent()) {
137 $this->auto_responder_data[$sender_id] = $mail_receiver_options;
143 $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)