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)
 
__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
 
array $auto_responder_data
 
withSentTime(DateTimeImmutable $sent_time)
 
handleAutoresponderMails(int $auto_responder_receiver_usr_id)