19declare(strict_types=1);
61 protected int $usr_id,
69 $this->db =
$db ??
$DIC->database();
72 $this->clock_service =
$clock_service ?? (
new DataFactory())->clock()->utc();
77 if ($default_incoming_type !==
'') {
84 if ($default_email_address_mode !==
'') {
89 $this->is_cron_notification_enabled =
false;
90 $this->signature =
'';
104 $this->table_mail_options,
106 'user_id' => [
'integer', $this->usr_id],
109 'signature' => [
'text', $this->signature],
110 'incoming_type' => [
'integer', $this->default_incoming_type],
111 'mail_address_option' => [
'integer', $this->default_email_address_mode],
112 'cronjob_notification' => [
'integer', (
int) $this->is_cron_notification_enabled]
120 && $this->user_settings->settingAvailableToUser(IncomingMail::class);
126 && $this->user_settings->settingAvailableToUser(NewMailNotification::class);
131 return $this->
settings->get(
'show_mail_settings') ===
'1';
134 protected function read(): void
136 $query =
'SELECT mail_options.cronjob_notification,
137 mail_options.signature,
139 mail_options.incoming_type,
140 mail_options.mail_address_option,
141 mail_options.absence_status,
142 mail_options.absent_from,
143 mail_options.absent_until,
144 mail_options.absence_ar_subject,
145 mail_options.absence_ar_body,
147 usr_data.second_email
149 INNER JOIN usr_data ON mail_options.user_id = usr_data.usr_id
150 WHERE mail_options.user_id = %s';
151 $res = $this->db->queryF(
156 $row = $this->db->fetchObject(
$res);
158 $this->mail_transport_settings->adjust($this->first_mail_address, $this->second_mail_address,
false);
162 $this->first_mail_address = (string) $row->email;
163 $this->second_mail_address = (
string) $row->second_email;
164 $this->stored_email_address_mode = (
int) $row->mail_address_option;
167 $this->is_cron_notification_enabled = (bool) $row->cronjob_notification;
168 $this->signature = (
string) $row->signature;
177 $this->incoming_type = (
int) $row->incoming_type;
178 $this->email_address_mode = (
int) $row->mail_address_option;
181 $this->incoming_type,
183 [
'options' => [
'min_range' => self::INCOMING_LOCAL,
'max_range' => self::INCOMING_BOTH]]
189 $this->email_address_mode,
191 [
'options' => [
'min_range' => self::FIRST_EMAIL,
'max_range' => self::BOTH_EMAIL]]
197 $this->mail_transport_settings->adjust($this->first_mail_address, $this->second_mail_address);
208 if ($this->
settings->get(
'mail_notification',
'0')) {
222 return $this->db->replace(
223 $this->table_mail_options,
225 'user_id' => [
'integer', $this->usr_id],
278 return $this->usr_id;
285 $row =
$DIC->database()->fetchAssoc(
$DIC->database()->queryF(
286 'SELECT cronjob_notification FROM mail_options WHERE user_id = %s',
291 return (
int) $row[
'cronjob_notification'];
299 $email_addresses = [];
302 if ($this->second_mail_address !==
'') {
304 } elseif ($this->first_mail_address !==
'') {
311 if ($this->first_mail_address !==
'') {
314 if ($this->second_mail_address !==
'') {
321 if ($this->first_mail_address !==
'') {
323 } elseif ($this->second_mail_address !==
'') {
330 return $email_addresses;
389 $this->
getAbsentFrom() <= $this->clock_service->now()->getTimestamp() &&
390 $this->
getAbsentUntil() >= $this->clock_service->now()->getTimestamp();
setSignature(string $signature)
getAbsenceAutoresponderBody()
bool $is_cron_notification_enabled
final const int INCOMING_BOTH
getStoredEmailAddressMode()
ilMailTransportSettings $mail_transport_settings
__construct(protected int $usr_id, ?ilMailTransportSettings $mail_transport_settings=null, ?ClockInterface $clock_service=null, ?ilSetting $settings=null, ?ilDBInterface $db=null, ?Settings $user_settings=null)
createMailOptionsEntry()
create entry in table_mail_options for a new user this method should only be called from createUser()
final const int FIRST_EMAIL
setAbsenceStatus(bool $absence_status)
final const bool ABSENCE_STATUS_ABSENT
mayModifyNewMailNotificationSetting()
setAbsenceAutoresponderSubject(string $absence_auto_responder_subject)
setAbsentUntil(int $absent_until)
final const int INCOMING_LOCAL
setAbsenceAutoresponderBody(string $absence_auto_responder_body)
mayModifyIndividualTransportSetting()
ClockInterface $clock_service
setEmailAddressmode(int $email_address_mode)
final const int BOTH_EMAIL
final const int INCOMING_EMAIL
string $absence_auto_responder_body
int $default_email_address_mode
string $second_mail_address
static lookupNotificationSetting(int $usr_id)
setIncomingType(int $incoming_type)
string $absence_auto_responder_subject
final const bool ABSENCE_STATUS_PRESENT
getAbsenceAutoresponderSubject()
isCronJobNotificationEnabled()
setAbsentFrom(int $absent_from)
setIsCronJobNotificationStatus(bool $is_cron_notification_enabled)
mayManageInvididualSettings()
int $stored_email_address_mode
int $default_incoming_type
string $table_mail_options
string $first_mail_address
getExternalEmailAddresses()
final const int SECOND_EMAIL
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.
if(!file_exists('../ilias.ini.php'))