19 declare(strict_types=1);
68 $this->db = $db ?? $DIC->database();
69 $this->
settings = $settings ?? $DIC->settings();
71 $this->clockService = $clockService ?? (
new DataFactory())->clock()->utc();
73 $this->incomingType = self::INCOMING_LOCAL;
74 $default_incoming_type = $this->
settings->get(
'mail_incoming_mail',
'');
75 if ($default_incoming_type !==
'') {
76 $this->default_incoming_type = (
int) $default_incoming_type;
80 $this->emailAddressMode = self::FIRST_EMAIL;
81 $default_email_address_mode = $this->
settings->get(
'mail_address_option',
'');
82 if ($default_email_address_mode !==
'') {
83 $this->default_email_address_mode = (
int) $default_email_address_mode;
88 $this->signature =
'';
100 $this->table_mail_options,
102 'user_id' => [
'integer', $this->usrId],
105 'signature' => [
'text', $this->signature],
106 'incoming_type' => [
'integer', $this->default_incoming_type],
107 'mail_address_option' => [
'integer', $this->default_email_address_mode],
118 $this->
settings->get(
'usr_settings_disable_mail_incoming_mail') !==
'1' 124 return $this->
settings->get(
'usr_settings_hide_mail_incoming_mail') !==
'1';
129 return $this->
settings->get(
'show_mail_settings') ===
'1';
132 protected function read(): void
134 $query =
'SELECT mail_options.cronjob_notification, 135 mail_options.signature, 137 mail_options.incoming_type, 138 mail_options.mail_address_option, 139 mail_options.absence_status, 140 mail_options.absent_from, 141 mail_options.absent_until, 142 mail_options.absence_ar_subject, 143 mail_options.absence_ar_body, 145 usr_data.second_email 147 INNER JOIN usr_data ON mail_options.user_id = usr_data.usr_id 148 WHERE mail_options.user_id = %s';
149 $res = $this->db->queryF(
154 $row = $this->db->fetchObject(
$res);
156 $this->mailTransportSettings->adjust($this->firstEmailAddress, $this->secondEmailAddress,
false);
160 $this->firstEmailAddress = (string) $row->email;
161 $this->secondEmailAddress = (
string) $row->second_email;
164 $this->signature = (
string) $row->signature;
173 $this->incomingType = (
int) $row->incoming_type;
174 $this->emailAddressMode = (
int) $row->mail_address_option;
176 if (
false === filter_var(
179 [
'options' => [
'min_range' => self::INCOMING_LOCAL,
'max_range' => self::INCOMING_BOTH]]
181 $this->incomingType = self::INCOMING_LOCAL;
184 if (
false === filter_var(
185 $this->emailAddressMode,
187 [
'options' => [
'min_range' => self::FIRST_EMAIL,
'max_range' => self::BOTH_EMAIL]]
189 $this->emailAddressMode = self::FIRST_EMAIL;
193 $this->mailTransportSettings->adjust($this->firstEmailAddress, $this->secondEmailAddress);
204 if ($this->
settings->get(
'mail_notification',
'0')) {
207 $data[
'cronjob_notification'] = [
'integer', self::lookupNotificationSetting($this->usrId)];
216 return $this->db->replace(
217 $this->table_mail_options,
219 'user_id' => [
'integer', $this->usrId],
274 $row = $DIC->database()->fetchAssoc($DIC->database()->queryF(
275 'SELECT cronjob_notification FROM mail_options WHERE user_id = %s',
280 return (
int) $row[
'cronjob_notification'];
288 $emailAddresses = [];
291 case self::SECOND_EMAIL:
292 if ($this->secondEmailAddress !==
'') {
294 } elseif ($this->firstEmailAddress !==
'') {
300 case self::BOTH_EMAIL:
301 if ($this->firstEmailAddress !==
'') {
304 if ($this->secondEmailAddress !==
'') {
309 case self::FIRST_EMAIL:
311 if ($this->firstEmailAddress !==
'') {
313 } elseif ($this->secondEmailAddress !==
'') {
320 return $emailAddresses;
379 $this->
getAbsentFrom() <= $this->clockService->now()->getTimestamp() &&
380 $this->
getAbsentUntil() >= $this->clockService->now()->getTimestamp();
getExternalEmailAddresses()
maySeeIndividualTransportSettings()
string $absence_auto_responder_subject
getAbsenceAutoresponderSubject()
createMailOptionsEntry()
create entry in table_mail_options for a new user this method should only be called from createUser()...
Interface Observer Contains several chained tasks and infos about them.
setAbsentFrom(int $absent_from)
mayModifyIndividualTransportSettings()
getAbsenceAutoresponderBody()
string $firstEmailAddress
__construct(protected int $usrId, ?ilMailTransportSettings $mailTransportSettings=null, ?ClockInterface $clockService=null, ?ilSetting $settings=null, ?ilDBInterface $db=null)
mayManageInvididualSettings()
setSignature(string $signature)
bool $isCronJobNotificationEnabled
ClockInterface $clockService
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
final const INCOMING_LOCAL
final const INCOMING_EMAIL
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
int $default_email_address_mode
final const ABSENCE_STATUS_ABSENT
setAbsenceStatus(bool $absence_status)
setIsCronJobNotificationStatus(bool $isCronJobNotificationEnabled)
string $absence_auto_responder_body
string $table_mail_options
setAbsenceAutoresponderBody(string $absence_auto_responder_body)
setAbsenceAutoresponderSubject(string $absence_auto_responder_subject)
ilMailTransportSettings $mailTransportSettings
setEmailAddressMode(int $emailAddressMode)
setIncomingType(int $incomingType)
setAbsentUntil(int $absent_until)
isCronJobNotificationEnabled()
final const INCOMING_BOTH
string $secondEmailAddress
final const ABSENCE_STATUS_PRESENT
static lookupNotificationSetting(int $usrId)
int $default_incoming_type