ILIAS  trunk Revision v12.0_alpha-377-g3641b37b9db
ILIAS\Mail\UserSettings\IncomingMail Class Reference
+ Inheritance diagram for ILIAS\Mail\UserSettings\IncomingMail:
+ Collaboration diagram for ILIAS\Mail\UserSettings\IncomingMail:

Public Member Functions

 getIdentifier ()
 
 isAvailable ()
 If this function returns false the setting will not be shown, even if it's PropertyAttributes would allow it to be. More...
 
 getLabel (Language $lng)
 
 getSettingsPage ()
 
 getSection ()
 
 getInput (FieldFactory $field_factory, Language $lng, Refinery $refinery, \ilSetting $settings, ?\ilObjUser $user=null)
 
 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, thus you can also not rely on the post_var anywhere else, as it will be changed. More...
 
 getDefaultValueForDisplay (Language $lng, \ilSetting $settings)
 
 hasUserPersonalizedSetting (\ilSetting $settings, \ilObjUser $user)
 
 persistUserInput (\ilObjUser $user, mixed $input, ?\ilPropertyFormGUI $form=null)
 
 retrieveValueFromUser (\ilObjUser $user)
 
- Public Member Functions inherited from ILIAS\User\Settings\SettingDefinition
 isAvailable ()
 If this function returns false the setting will not be shown, even if it's PropertyAttributes would allow it to be. More...
 
 getSettingsPage ()
 
 getDefaultValueForDisplay (Language $lng, \ilSetting $settings)
 
 hasUserPersonalizedSetting (\ilSetting $settings, \ilObjUser $user)
 
 getInput (FieldFactory $field_factory, Language $lng, Refinery $refinery, \ilSetting $settings, ?\ilObjUser $user=null)
 
 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, thus you can also not rely on the post_var anywhere else, as it will be changed. More...
 
 persistUserInput (\ilObjUser $user, mixed $input)
 
 getIdentifier ()
 
 getLabel (Language $lng)
 
 getSection ()
 
 retrieveValueFromUser (\ilObjUser $user)
 

Private Member Functions

 buildTransformation (Refinery $refinery, ?\ilObjUser $user=null)
 
 buildValueSetterArray (\ilSetting $settings, ?\ilObjUser $user=null)
 
 buildEmailInputs (Language $lng, FieldFactory $field_factory, ?\ilObjUser $user)
 
 mailOptionsFor (\ilObjUser $user)
 

Private Attributes

array $mail_options_by_user = []
 

Detailed Description

Definition at line 32 of file IncomingMail.php.

Member Function Documentation

◆ buildEmailInputs()

ILIAS\Mail\UserSettings\IncomingMail::buildEmailInputs ( Language  $lng,
FieldFactory  $field_factory,
?\ilObjUser  $user 
)
private

Definition at line 269 of file IncomingMail.php.

273 : array {
274 if ($user === null || (empty($user->getEmail()) && empty($user->getSecondEmail()))) {
275 return [];
276 }
277
278 return [
279 'mail_address_option' => $field_factory
280 ->radio(
281 $lng->txt('email')
282 )
283 ->withOption(
285 $lng->txt('mail_first_email'),
286 $user->getEmail() === ''
287 ? $lng->txt('first_email_missing_info')
288 : $user->getEmail()
289 )
290 ->withOption(
292 $lng->txt('mail_second_email'),
293 empty($user->getSecondEmail())
294 ? $lng->txt('second_email_missing_info')
295 : $user->getSecondEmail()
296 )
297 ->withOption((string) \ilMailOptions::BOTH_EMAIL, $lng->txt('mail_both_email'))
298 ];
299 }
final const int FIRST_EMAIL
final const int BOTH_EMAIL
final const int SECOND_EMAIL
global $lng
Definition: privfeed.php:31

◆ buildTransformation()

ILIAS\Mail\UserSettings\IncomingMail::buildTransformation ( Refinery  $refinery,
?\ilObjUser  $user = null 
)
private

Definition at line 212 of file IncomingMail.php.

215 : Transformation {
216 return $refinery->custom()->transformation(
217 function (array $v) use ($refinery, $user): array {
218 $email_address_option = $v[1]['mail_address_option'] ?? null;
219 if ($user !== null) {
220 if (!empty($user->getEmail()) && empty($user->getSecondEmail())) {
221 $email_address_option = \ilMailOptions::FIRST_EMAIL;
222 } elseif (!empty($user->getSecondEmail()) && empty($user->getEmail())) {
223 $email_address_option = \ilMailOptions::SECOND_EMAIL;
224 }
225 }
226
227 $incoming_type = $refinery->kindlyTo()->int()->transform($v[0]);
228 if ($email_address_option === null) {
229 $incoming_type = \ilMailOptions::INCOMING_LOCAL;
230 }
231
232 return [
233 'incoming_mail' => $incoming_type,
234 'mail_address_option' => $email_address_option === null && $user !== null
235 ? $this->mailOptionsFor($user)->getStoredEmailAddressMode()
236 : $refinery->byTrying([
237 $refinery->kindlyTo()->int(),
238 $refinery->always(null)
239 ])->transform($email_address_option)
240 ];
241 }
242 );
243 }
final const int INCOMING_LOCAL

References ilMailOptions\FIRST_EMAIL, ilObjUser\getEmail(), ilObjUser\getSecondEmail(), and ilMailOptions\SECOND_EMAIL.

+ Here is the call graph for this function:

◆ buildValueSetterArray()

ILIAS\Mail\UserSettings\IncomingMail::buildValueSetterArray ( \ilSetting  $settings,
?\ilObjUser  $user = null 
)
private

Definition at line 245 of file IncomingMail.php.

248 : int|array {
249 $value = $user !== null
250 ? $this->retrieveValueFromUser($user)
251 : [
252 'incoming_mail' => (int) $settings->get('mail_incoming_mail', (string) \ilMailOptions::INCOMING_LOCAL),
253 'mail_address_option' => (int) $settings->get('mail_address_option', (string) \ilMailOptions::FIRST_EMAIL)
254 ];
255
256 if ($value['incoming_mail'] === \ilMailOptions::INCOMING_LOCAL ||
257 (empty($user->getEmail()) && empty($user->getSecondEmail()))) {
258 return $value['incoming_mail'];
259 }
260
261 return [
262 0 => $value['incoming_mail'],
263 1 => [
264 'mail_address_option' => $value['mail_address_option']
265 ]
266 ];
267 }
get(string $class_name)

◆ getDefaultValueForDisplay()

ILIAS\Mail\UserSettings\IncomingMail::getDefaultValueForDisplay ( Language  $lng,
\ilSetting  $settings 
)

Implements ILIAS\User\Settings\SettingDefinition.

Definition at line 125 of file IncomingMail.php.

128 : string {
129 $setting = (int) $settings->get('mail_incoming_mail', (string) \ilMailOptions::INCOMING_LOCAL);
130 $value = match ($setting) {
131 \ilMailOptions::INCOMING_LOCAL => $lng->txt('mail_incoming_local'),
132 \ilMailOptions::INCOMING_EMAIL => $lng->txt('mail_incoming_smtp'),
133 \ilMailOptions::INCOMING_BOTH => $lng->txt('mail_incoming_both')
134 };
136 return $value;
137 }
138
139 return match ((int) $settings->get('mail_address_option', (string) \ilMailOptions::FIRST_EMAIL)) {
140 \ilMailOptions::FIRST_EMAIL => "{$value}: {$lng->txt('mail_first_email')}",
141 \ilMailOptions::SECOND_EMAIL => "{$value}: {$lng->txt('mail_second_email')}",
142 \ilMailOptions::BOTH_EMAIL => "{$value}: {$lng->txt('mail_both_email')}",
143 };
144 }
ilSetting $setting
Definition: class.ilias.php:68
final const int INCOMING_BOTH
final const int INCOMING_EMAIL
get(string $a_keyword, ?string $a_default_value=null)
get setting

References $lng, ilMailOptions\INCOMING_BOTH, ilMailOptions\INCOMING_EMAIL, and ilMailOptions\INCOMING_LOCAL.

◆ getIdentifier()

ILIAS\Mail\UserSettings\IncomingMail::getIdentifier ( )

Implements ILIAS\User\Property.

Definition at line 37 of file IncomingMail.php.

37 : string
38 {
39 return 'incoming_mail';
40 }

◆ getInput()

ILIAS\Mail\UserSettings\IncomingMail::getInput ( FieldFactory  $field_factory,
Language  $lng,
Refinery  $refinery,
\ilSetting  $settings,
?\ilObjUser  $user = null 
)

Implements ILIAS\User\Settings\SettingDefinition.

Definition at line 62 of file IncomingMail.php.

68 : Input {
69 $lng->loadLanguageModule('mail');
70
71 $inputs = $this->buildEmailInputs($lng, $field_factory, $user);
72
73 return $field_factory->switchableGroup(
74 [
75 \ilMailOptions::INCOMING_LOCAL => $field_factory->group([], $lng->txt('mail_incoming_local')),
76 \ilMailOptions::INCOMING_EMAIL => $field_factory->group(
77 $inputs,
78 $lng->txt('mail_incoming_smtp')
79 )->withDisabled(
80 $user === null || (
81 empty($user->getEmail()) &&
82 empty($user->getSecondEmail())
83 )
84 ),
85 \ilMailOptions::INCOMING_BOTH => $field_factory->group(
86 $inputs,
87 $lng->txt('mail_incoming_both')
88 )->withDisabled(
89 $user === null || (
90 empty($user->getEmail()) &&
91 empty($user->getSecondEmail())
92 )
93 )
94 ],
95 $lng->txt('mail_incoming')
96 )->withAdditionalTransformation(
97 $this->buildTransformation($refinery, $user)
98 )->withValue(
99 $this->buildValueSetterArray($settings, $user)
100 );
101 }
buildValueSetterArray(\ilSetting $settings, ?\ilObjUser $user=null)
buildTransformation(Refinery $refinery, ?\ilObjUser $user=null)
buildEmailInputs(Language $lng, FieldFactory $field_factory, ?\ilObjUser $user)

◆ getLabel()

ILIAS\Mail\UserSettings\IncomingMail::getLabel ( Language  $lng)

Implements ILIAS\User\Property.

Definition at line 47 of file IncomingMail.php.

47 : string
48 {
49 return $lng->txt('mail_incoming');
50 }

References $lng.

◆ getLegacyInput()

ILIAS\Mail\UserSettings\IncomingMail::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, thus you can also not rely on the post_var anywhere else, as it will be changed.

Implements ILIAS\User\Settings\SettingDefinition.

Definition at line 103 of file IncomingMail.php.

108 $lng->loadLanguageModule('mail');
109
110 $input = new \ilIncomingMailInputGUI($lng->txt('mail_incoming'), 'incoming_mail');
111 $input->setFreeOptionChoice(false);
112 $input->setUser($user);
113 $input->setValueByArray(
114 $user !== null
115 ? $this->retrieveValueFromUser($user)
116 : [
117 'incoming_mail' => (int) $settings->get('mail_incoming_mail', (string) \ilMailOptions::INCOMING_LOCAL),
118 'mail_address_option' => (int) $settings->get('mail_address_option', (string) \ilMailOptions::FIRST_EMAIL)
119 ]
120 );
121
122 return $input;
123 }
This class represents a property in a property form.

◆ getSection()

ILIAS\Mail\UserSettings\IncomingMail::getSection ( )

Implements ILIAS\User\Property.

Definition at line 57 of file IncomingMail.php.

58 {
59 return AvailableSections::Communication;
60 }

◆ getSettingsPage()

ILIAS\Mail\UserSettings\IncomingMail::getSettingsPage ( )

Implements ILIAS\User\Settings\SettingDefinition.

Definition at line 52 of file IncomingMail.php.

53 {
54 return AvailablePages::MainSettings;
55 }

◆ hasUserPersonalizedSetting()

ILIAS\Mail\UserSettings\IncomingMail::hasUserPersonalizedSetting ( \ilSetting  $settings,
\ilObjUser  $user 
)

Implements ILIAS\User\Settings\SettingDefinition.

Definition at line 146 of file IncomingMail.php.

149 : bool {
150 $current = $this->retrieveValueFromUser($user);
151 $default = [
152 'incoming_mail' => (int) $settings->get('mail_incoming_mail', (string) \ilMailOptions::INCOMING_LOCAL),
153 'mail_address_option' => (int) $settings->get('mail_address_option', (string) \ilMailOptions::FIRST_EMAIL)
154 ];
155
156 return $current !== $default;
157 }

◆ isAvailable()

ILIAS\Mail\UserSettings\IncomingMail::isAvailable ( )

If this function returns false the setting will not be shown, even if it's PropertyAttributes would allow it to be.

This is meant e.g. to check if the chat server is configured or the badges enabled. Settings that are not available will also not be available on the table to define their PropertyAttributes

Implements ILIAS\User\Settings\SettingDefinition.

Definition at line 42 of file IncomingMail.php.

42 : bool
43 {
44 return (new \ilSetting())->get('show_mail_settings', '0') === '1';
45 }
ILIAS Setting Class.

◆ mailOptionsFor()

ILIAS\Mail\UserSettings\IncomingMail::mailOptionsFor ( \ilObjUser  $user)
private

Definition at line 301 of file IncomingMail.php.

302 {
303 if (!\array_key_exists($user->getId(), $this->mail_options_by_user)) {
304 $this->mail_options_by_user[$user->getId()] = new \ilMailOptions($user->getId());
305 }
306
307 return $this->mail_options_by_user[$user->getId()];
308 }

References ilObject\getId().

+ Here is the call graph for this function:

◆ persistUserInput()

ILIAS\Mail\UserSettings\IncomingMail::persistUserInput ( \ilObjUser  $user,
mixed  $input,
?\ilPropertyFormGUI  $form = null 
)

Definition at line 159 of file IncomingMail.php.

163 : \ilObjUser {
164 $mail_options = $this->mailOptionsFor($user);
165 if ($input === null) {
166 $settings = new \ilSetting();
167 $mail_options->setIncomingType(
168 (int) $settings->get('mail_incoming_mail', (string) \ilMailOptions::INCOMING_LOCAL)
169 );
170 $mail_options->setEmailAddressmode(
171 (int) $settings->get('mail_address_option', (string) \ilMailOptions::FIRST_EMAIL)
172 );
173 $mail_options->updateOptions();
174
175 return $user;
176 }
177
178 $incoming_type = \is_array($input) ? $input['incoming_mail'] : (int) $input;
179 $mail_options->setIncomingType($incoming_type);
180 if ((int) $input === \ilMailOptions::INCOMING_LOCAL) {
181 $mail_options->updateOptions();
182
183 return $user;
184 }
185
186 if (\is_array($input)) {
187 $address_mode = $input['mail_address_option'];
188 } elseif ($form !== null) {
189 $address_mode = (int) $form->getInput('mail_address_option');
190 } else {
191 $address_mode = $mail_options->getEmailAddressMode();
192 }
193 if (\is_int($address_mode)) {
194 $mail_options->setEmailAddressmode($address_mode);
195 }
196
197 $mail_options->updateOptions();
198
199 return $user;
200 }
User class.

References ilMailOptions\FIRST_EMAIL, ilSetting\get(), and ilMailOptions\INCOMING_LOCAL.

+ Here is the call graph for this function:

◆ retrieveValueFromUser()

ILIAS\Mail\UserSettings\IncomingMail::retrieveValueFromUser ( \ilObjUser  $user)

Implements ILIAS\User\Property.

Definition at line 202 of file IncomingMail.php.

202 : ?array
203 {
204 $mail_options = $this->mailOptionsFor($user);
205
206 return [
207 'incoming_mail' => $mail_options->getIncomingType(),
208 'mail_address_option' => $mail_options->getEmailAddressMode()
209 ];
210 }

Field Documentation

◆ $mail_options_by_user

array ILIAS\Mail\UserSettings\IncomingMail::$mail_options_by_user = []
private

Definition at line 35 of file IncomingMail.php.


The documentation for this class was generated from the following file: