19declare(strict_types=1);
39 return 'incoming_mail';
44 return (
new \
ilSetting())->get(
'show_mail_settings') ===
'1';
49 return $lng->txt(
'mail_incoming');
54 return AvailablePages::MainSettings;
59 return AvailableSections::Communication;
63 FieldFactory $field_factory,
69 $lng->loadLanguageModule(
'mail');
73 return $field_factory->switchableGroup(
78 $lng->txt(
'mail_incoming_smtp')
81 $user->getEmail() ===
'' &&
82 $user->getSecondEmail() ===
''
87 $lng->txt(
'mail_incoming_both')
90 $user->getEmail() ===
'' &&
91 $user->getSecondEmail() ===
''
95 $lng->txt(
'mail_incoming')
96 )->withAdditionalTransformation(
108 $lng->loadLanguageModule(
'mail');
110 $input = new \ilIncomingMailInputGUI(
$lng->txt(
'mail_incoming'),
'incoming_mail');
111 $input->setFreeOptionChoice(
false);
112 $input->setValueByArray(
114 ? $this->retrieveValueFromUser($user)
128 $setting = (
int) $settings->
get(
'mail_incoming_mail', (string) \
ilMailOptions::INCOMING_LOCAL);
129 $value = match ($setting) {
149 $current = $this->retrieveValueFromUser($user);
155 return $current !== $default;
163 $mail_options = $this->mailOptionsFor($user);
164 if ($input ===
null) {
165 $settings = new \ilSetting();
166 $mail_options->setIncomingType(
169 $mail_options->setEmailAddressmode(
172 $mail_options->updateOptions();
177 $incoming_type = \is_array($input) ? $input[
'incoming_mail'] : (
int) $input;
178 $mail_options->setIncomingType($incoming_type);
180 $mail_options->updateOptions();
185 if (\is_array($input)) {
186 $address_mode = $input[
'mail_address_option'];
187 } elseif ($form !==
null) {
188 $address_mode = (
int) $form->getInput(
'mail_address_option');
190 $address_mode = $mail_options->getEmailAddressMode();
192 if (\is_int($address_mode)) {
193 $mail_options->setEmailAddressmode($address_mode);
196 $mail_options->updateOptions();
203 $mail_options = $this->mailOptionsFor($user);
206 'incoming_mail' => $mail_options->getIncomingType(),
207 'mail_address_option' => $mail_options->getEmailAddressMode()
216 function (array $v) use (
$refinery, $user): array {
217 $email_address_option = $v[1][
'mail_address_option'] ?? null;
218 if ($user !==
null) {
226 $incoming_type =
$refinery->kindlyTo()->int()->transform($v[0]);
227 if ($email_address_option ===
null) {
232 'incoming_mail' => $incoming_type,
233 'mail_address_option' => $email_address_option ===
null && $user !==
null
234 ? $this->mailOptionsFor($user)->getStoredEmailAddressMode()
238 ])->transform($email_address_option)
248 $value = $user !== null
249 ? $this->retrieveValueFromUser($user)
251 'incoming_mail' => (
int) $settings->
get(
'mail_incoming_mail', (string) \
ilMailOptions::INCOMING_LOCAL),
252 'mail_address_option' => (
int) $settings->
get(
'mail_address_option', (string) \
ilMailOptions::FIRST_EMAIL)
257 return $value[
'incoming_mail'];
261 0 => $value[
'incoming_mail'],
263 'mail_address_option' => $value[
'mail_address_option']
270 FieldFactory $field_factory,
273 if ($user === null || ($user->getEmail() ===
'' && $user->getSecondEmail() ===
'')) {
278 'mail_address_option' => $field_factory
284 $lng->txt(
'mail_first_email'),
286 ?
$lng->txt(
'first_email_missing_info')
291 $lng->txt(
'mail_second_email'),
293 ?
$lng->txt(
'second_email_missing_info')
302 if (!\array_key_exists($user->
getId(), $this->mail_options_by_user)) {
303 $this->mail_options_by_user[$user->
getId()] = new \ilMailOptions($user->
getId());
306 return $this->mail_options_by_user[$user->
getId()];
getLegacyInput(Language $lng, \ilSetting $settings, ?\ilObjUser $user=null)
You don't need to add a post_var to the input as the User will handle this for you,...
getDefaultValueForDisplay(Language $lng, \ilSetting $settings)
persistUserInput(\ilObjUser $user, mixed $input, ?\ilPropertyFormGUI $form=null)
getInput(FieldFactory $field_factory, Language $lng, Refinery $refinery, \ilSetting $settings, ?\ilObjUser $user=null)
buildValueSetterArray(\ilSetting $settings, ?\ilObjUser $user=null)
buildTransformation(Refinery $refinery, ?\ilObjUser $user=null)
hasUserPersonalizedSetting(\ilSetting $settings, \ilObjUser $user)
isAvailable()
If this function returns false the setting will not be shown, even if it's PropertyAttributes would a...
array $mail_options_by_user
buildEmailInputs(Language $lng, FieldFactory $field_factory, ?\ilObjUser $user)
mailOptionsFor(\ilObjUser $user)
retrieveValueFromUser(\ilObjUser $user)
final const int INCOMING_BOTH
final const int FIRST_EMAIL
final const int INCOMING_LOCAL
final const int BOTH_EMAIL
final const int INCOMING_EMAIL
final const int SECOND_EMAIL
get(string $a_keyword, ?string $a_default_value=null)
get setting
return['delivery_method'=> 'php',]
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
if(!file_exists('../ilias.ini.php'))