ILIAS  trunk Revision v11.0_alpha-3011-gc6b235a2e85
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 268 of file IncomingMail.php.

272 : array {
273 if ($user === null || ($user->getEmail() === '' && $user->getSecondEmail() === '')) {
274 return [];
275 }
276
277 return [
278 'mail_address_option' => $field_factory
279 ->radio(
280 $lng->txt('email')
281 )
282 ->withOption(
284 $lng->txt('mail_first_email'),
285 $user->getEmail() === ''
286 ? $lng->txt('first_email_missing_info')
287 : $user->getEmail()
288 )
289 ->withOption(
291 $lng->txt('mail_second_email'),
292 $user->getSecondEmail() === ''
293 ? $lng->txt('second_email_missing_info')
294 : $user->getSecondEmail()
295 )
296 ->withOption((string) \ilMailOptions::BOTH_EMAIL, $lng->txt('mail_both_email'))
297 ];
298 }
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 211 of file IncomingMail.php.

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

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

◆ getDefaultValueForDisplay()

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

Implements ILIAS\User\Settings\SettingDefinition.

Definition at line 124 of file IncomingMail.php.

127 : string {
128 $setting = (int) $settings->get('mail_incoming_mail', (string) \ilMailOptions::INCOMING_LOCAL);
129 $value = match ($setting) {
130 \ilMailOptions::INCOMING_LOCAL => $lng->txt('mail_incoming_local'),
131 \ilMailOptions::INCOMING_EMAIL => $lng->txt('mail_incoming_smtp'),
132 \ilMailOptions::INCOMING_BOTH => $lng->txt('mail_incoming_both')
133 };
135 return $value;
136 }
137
138 return match ((int) $settings->get('mail_address_option', (string) \ilMailOptions::FIRST_EMAIL)) {
139 \ilMailOptions::FIRST_EMAIL => "{$value}: {$lng->txt('mail_first_email')}",
140 \ilMailOptions::SECOND_EMAIL => "{$value}: {$lng->txt('mail_second_email')}",
141 \ilMailOptions::BOTH_EMAIL => "{$value}: {$lng->txt('mail_both_email')}",
142 };
143 }
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 $user->getEmail() === '' &&
82 $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 $user->getEmail() === '' &&
91 $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->setValueByArray(
113 $user !== null
114 ? $this->retrieveValueFromUser($user)
115 : [
116 'incoming_mail' => (int) $settings->get('mail_incoming_mail', (string) \ilMailOptions::INCOMING_LOCAL),
117 'mail_address_option' => (int) $settings->get('mail_address_option', (string) \ilMailOptions::FIRST_EMAIL)
118 ]
119 );
120
121 return $input;
122 }
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 145 of file IncomingMail.php.

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

◆ 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') === '1';
45 }
ILIAS Setting Class.

◆ mailOptionsFor()

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

Definition at line 300 of file IncomingMail.php.

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

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 158 of file IncomingMail.php.

162 : \ilObjUser {
163 $mail_options = $this->mailOptionsFor($user);
164 if ($input === null) {
165 $settings = new \ilSetting();
166 $mail_options->setIncomingType(
167 (int) $settings->get('mail_incoming_mail', (string) \ilMailOptions::INCOMING_LOCAL)
168 );
169 $mail_options->setEmailAddressmode(
170 (int) $settings->get('mail_address_option', (string) \ilMailOptions::FIRST_EMAIL)
171 );
172 $mail_options->updateOptions();
173
174 return $user;
175 }
176
177 $incoming_type = \is_array($input) ? $input['incoming_mail'] : (int) $input;
178 $mail_options->setIncomingType($incoming_type);
179 if ((int) $input === \ilMailOptions::INCOMING_LOCAL) {
180 $mail_options->updateOptions();
181
182 return $user;
183 }
184
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');
189 } else {
190 $address_mode = $mail_options->getEmailAddressMode();
191 }
192 if (\is_int($address_mode)) {
193 $mail_options->setEmailAddressmode($address_mode);
194 }
195
196 $mail_options->updateOptions();
197
198 return $user;
199 }
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 201 of file IncomingMail.php.

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

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: