ILIAS  trunk Revision v11.0_alpha-1851-ga8564da6fed
All Data Structures Namespaces Files Functions Variables Enumerations Enumerator Modules Pages
ilMailOptions Class Reference

Class ilMailOptions this class handles user mails. More...

+ Collaboration diagram for ilMailOptions:

Public Member Functions

 __construct (protected int $usrId, ?ilMailTransportSettings $mailTransportSettings=null, ?ClockInterface $clockService=null, ?ilSetting $settings=null, ?ilDBInterface $db=null)
 
 createMailOptionsEntry ()
 create entry in table_mail_options for a new user this method should only be called from createUser() More...
 
 mayModifyIndividualTransportSettings ()
 
 maySeeIndividualTransportSettings ()
 
 mayManageInvididualSettings ()
 
 updateOptions ()
 
 getSignature ()
 
 getIncomingType ()
 
 setSignature (string $signature)
 
 setIncomingType (int $incomingType)
 
 setIsCronJobNotificationStatus (bool $isCronJobNotificationEnabled)
 
 isCronJobNotificationEnabled ()
 
 getEmailAddressMode ()
 
 setEmailAddressMode (int $emailAddressMode)
 
 getUsrId ()
 
 getExternalEmailAddresses ()
 
 setAbsenceAutoresponderBody (string $absence_auto_responder_body)
 
 getAbsenceAutoresponderBody ()
 
 setAbsenceStatus (bool $absence_status)
 
 getAbsenceStatus ()
 
 setAbsentFrom (int $absent_from)
 
 getAbsentFrom ()
 
 setAbsentUntil (int $absent_until)
 
 getAbsentUntil ()
 
 setAbsenceAutoresponderSubject (string $absence_auto_responder_subject)
 
 getAbsenceAutoresponderSubject ()
 
 isAbsent ()
 

Data Fields

final const INCOMING_LOCAL = 0
 
final const INCOMING_EMAIL = 1
 
final const INCOMING_BOTH = 2
 
final const FIRST_EMAIL = 3
 
final const SECOND_EMAIL = 4
 
final const BOTH_EMAIL = 5
 
final const ABSENCE_STATUS_PRESENT = false
 
final const ABSENCE_STATUS_ABSENT = true
 

Protected Member Functions

 read ()
 

Protected Attributes

ILIAS $ilias
 
ilDBInterface $db
 
ilSetting $settings
 
string $table_mail_options = 'mail_options'
 
string $signature = ''
 
bool $isCronJobNotificationEnabled = false
 
int $incomingType = self::INCOMING_LOCAL
 
int $default_incoming_type = self::INCOMING_LOCAL
 
int $emailAddressMode = self::FIRST_EMAIL
 
int $default_email_address_mode = self::FIRST_EMAIL
 
ilMailTransportSettings $mailTransportSettings
 
string $firstEmailAddress = ''
 
string $secondEmailAddress = ''
 
bool $absence_status = self::ABSENCE_STATUS_PRESENT
 
int $absent_from = 0
 
int $absent_until = 0
 
string $absence_auto_responder_body = ''
 
string $absence_auto_responder_subject = ''
 
ClockInterface $clockService
 

Static Private Member Functions

static lookupNotificationSetting (int $usrId)
 

Detailed Description

Class ilMailOptions this class handles user mails.

Author
Stefan Meyer meyer.nosp@m.@lei.nosp@m.fos.c.nosp@m.om

Definition at line 29 of file class.ilMailOptions.php.

Constructor & Destructor Documentation

◆ __construct()

ilMailOptions::__construct ( protected int  $usrId,
?ilMailTransportSettings  $mailTransportSettings = null,
?ClockInterface  $clockService = null,
?ilSetting  $settings = null,
?ilDBInterface  $db = null 
)

Definition at line 60 of file class.ilMailOptions.php.

References $default_email_address_mode, $default_incoming_type, $DIC, ILIAS\Repository\int(), isCronJobNotificationEnabled(), read(), and ILIAS\Repository\settings().

66  {
67  global $DIC;
68  $this->db = $db ?? $DIC->database();
69  $this->settings = $settings ?? $DIC->settings();
70  $this->mailTransportSettings = $mailTransportSettings ?? new ilMailTransportSettings($this);
71  $this->clockService = $clockService ?? (new DataFactory())->clock()->utc();
72 
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;
77  $this->incomingType = $this->default_incoming_type;
78  }
79 
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;
84  $this->emailAddressMode = $this->default_email_address_mode;
85  }
86 
87  $this->isCronJobNotificationEnabled = false;
88  $this->signature = '';
89 
90  $this->read();
91  }
ilDBInterface $db
ClockInterface $clockService
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
global $DIC
Definition: shib_login.php:22
ilMailTransportSettings $mailTransportSettings
+ Here is the call graph for this function:

Member Function Documentation

◆ createMailOptionsEntry()

ilMailOptions::createMailOptionsEntry ( )

create entry in table_mail_options for a new user this method should only be called from createUser()

Definition at line 97 of file class.ilMailOptions.php.

References isCronJobNotificationEnabled().

97  : void
98  {
99  $this->db->replace(
100  $this->table_mail_options,
101  [
102  'user_id' => ['integer', $this->usrId],
103  ],
104  [
105  'signature' => ['text', $this->signature],
106  'incoming_type' => ['integer', $this->default_incoming_type],
107  'mail_address_option' => ['integer', $this->default_email_address_mode],
108  'cronjob_notification' => ['integer', (int) $this->isCronJobNotificationEnabled]
109  ]
110  );
111  }
+ Here is the call graph for this function:

◆ getAbsenceAutoresponderBody()

ilMailOptions::getAbsenceAutoresponderBody ( )

Definition at line 328 of file class.ilMailOptions.php.

References $absence_auto_responder_body.

Referenced by updateOptions().

328  : string
329  {
331  }
string $absence_auto_responder_body
+ Here is the caller graph for this function:

◆ getAbsenceAutoresponderSubject()

ilMailOptions::getAbsenceAutoresponderSubject ( )

Definition at line 368 of file class.ilMailOptions.php.

References $absence_auto_responder_subject.

Referenced by updateOptions().

368  : string
369  {
371  }
string $absence_auto_responder_subject
+ Here is the caller graph for this function:

◆ getAbsenceStatus()

ilMailOptions::getAbsenceStatus ( )

Definition at line 338 of file class.ilMailOptions.php.

References $absence_status.

Referenced by isAbsent(), and updateOptions().

338  : bool
339  {
340  return $this->absence_status;
341  }
+ Here is the caller graph for this function:

◆ getAbsentFrom()

ilMailOptions::getAbsentFrom ( )

Definition at line 348 of file class.ilMailOptions.php.

References $absent_from.

Referenced by isAbsent(), and updateOptions().

348  : int
349  {
350  return $this->absent_from;
351  }
+ Here is the caller graph for this function:

◆ getAbsentUntil()

ilMailOptions::getAbsentUntil ( )

Definition at line 358 of file class.ilMailOptions.php.

References $absent_until.

Referenced by isAbsent(), and updateOptions().

358  : int
359  {
360  return $this->absent_until;
361  }
+ Here is the caller graph for this function:

◆ getEmailAddressMode()

ilMailOptions::getEmailAddressMode ( )

Definition at line 255 of file class.ilMailOptions.php.

References $emailAddressMode.

Referenced by getExternalEmailAddresses(), and updateOptions().

255  : int
256  {
258  }
+ Here is the caller graph for this function:

◆ getExternalEmailAddresses()

ilMailOptions::getExternalEmailAddresses ( )
Returns
string[]

Definition at line 286 of file class.ilMailOptions.php.

References $firstEmailAddress, $secondEmailAddress, and getEmailAddressMode().

286  : array
287  {
288  $emailAddresses = [];
289 
290  switch ($this->getEmailAddressMode()) {
291  case self::SECOND_EMAIL:
292  if ($this->secondEmailAddress !== '') {
293  $emailAddresses[] = $this->secondEmailAddress;
294  } elseif ($this->firstEmailAddress !== '') {
295  // fallback, use first email address
296  $emailAddresses[] = $this->firstEmailAddress;
297  }
298  break;
299 
300  case self::BOTH_EMAIL:
301  if ($this->firstEmailAddress !== '') {
302  $emailAddresses[] = $this->firstEmailAddress;
303  }
304  if ($this->secondEmailAddress !== '') {
305  $emailAddresses[] = $this->secondEmailAddress;
306  }
307  break;
308 
309  case self::FIRST_EMAIL:
310  default:
311  if ($this->firstEmailAddress !== '') {
312  $emailAddresses[] = $this->firstEmailAddress;
313  } elseif ($this->secondEmailAddress !== '') {
314  // fallback, use first email address
315  $emailAddresses[] = $this->secondEmailAddress;
316  }
317  break;
318  }
319 
320  return $emailAddresses;
321  }
+ Here is the call graph for this function:

◆ getIncomingType()

ilMailOptions::getIncomingType ( )

Definition at line 230 of file class.ilMailOptions.php.

References $incomingType.

Referenced by updateOptions().

230  : int
231  {
232  return $this->incomingType;
233  }
+ Here is the caller graph for this function:

◆ getSignature()

ilMailOptions::getSignature ( )

Definition at line 225 of file class.ilMailOptions.php.

References $signature.

Referenced by updateOptions().

225  : string
226  {
227  return $this->signature;
228  }
+ Here is the caller graph for this function:

◆ getUsrId()

ilMailOptions::getUsrId ( )

Definition at line 265 of file class.ilMailOptions.php.

265  : int
266  {
267  return $this->usrId;
268  }

◆ isAbsent()

ilMailOptions::isAbsent ( )

Definition at line 373 of file class.ilMailOptions.php.

References getAbsenceStatus(), getAbsentFrom(), and getAbsentUntil().

Referenced by ILIAS\Mail\Autoresponder\AutoresponderServiceImpl\enqueueAutoresponderIfEnabled().

373  : bool
374  {
375  return
376  $this->getAbsenceStatus() &&
377  $this->getAbsentFrom() &&
378  $this->getAbsentUntil() &&
379  $this->getAbsentFrom() <= $this->clockService->now()->getTimestamp() &&
380  $this->getAbsentUntil() >= $this->clockService->now()->getTimestamp();
381  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ isCronJobNotificationEnabled()

ilMailOptions::isCronJobNotificationEnabled ( )

Definition at line 250 of file class.ilMailOptions.php.

References $isCronJobNotificationEnabled.

Referenced by __construct(), createMailOptionsEntry(), read(), setIsCronJobNotificationStatus(), and updateOptions().

250  : bool
251  {
253  }
bool $isCronJobNotificationEnabled
+ Here is the caller graph for this function:

◆ lookupNotificationSetting()

static ilMailOptions::lookupNotificationSetting ( int  $usrId)
staticprivate

Definition at line 270 of file class.ilMailOptions.php.

References $DIC.

270  : int
271  {
272  global $DIC;
273 
274  $row = $DIC->database()->fetchAssoc($DIC->database()->queryF(
275  'SELECT cronjob_notification FROM mail_options WHERE user_id = %s',
276  ['integer'],
277  [$usrId]
278  ));
279 
280  return (int) $row['cronjob_notification'];
281  }
global $DIC
Definition: shib_login.php:22

◆ mayManageInvididualSettings()

ilMailOptions::mayManageInvididualSettings ( )

Definition at line 127 of file class.ilMailOptions.php.

References ILIAS\Repository\settings().

Referenced by mayModifyIndividualTransportSettings(), and read().

127  : bool
128  {
129  return $this->settings->get('show_mail_settings') === '1';
130  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ mayModifyIndividualTransportSettings()

ilMailOptions::mayModifyIndividualTransportSettings ( )

Definition at line 113 of file class.ilMailOptions.php.

References mayManageInvididualSettings(), maySeeIndividualTransportSettings(), and ILIAS\Repository\settings().

Referenced by read().

113  : bool
114  {
115  return (
116  $this->mayManageInvididualSettings() &&
118  $this->settings->get('usr_settings_disable_mail_incoming_mail') !== '1'
119  );
120  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ maySeeIndividualTransportSettings()

ilMailOptions::maySeeIndividualTransportSettings ( )

Definition at line 122 of file class.ilMailOptions.php.

References ILIAS\Repository\settings().

Referenced by mayModifyIndividualTransportSettings().

122  : bool
123  {
124  return $this->settings->get('usr_settings_hide_mail_incoming_mail') !== '1';
125  }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ read()

ilMailOptions::read ( )
protected

Definition at line 132 of file class.ilMailOptions.php.

References $res, ILIAS\Repository\int(), isCronJobNotificationEnabled(), mayManageInvididualSettings(), mayModifyIndividualTransportSettings(), null, setAbsenceAutoresponderBody(), setAbsenceAutoresponderSubject(), setAbsenceStatus(), setAbsentFrom(), and setAbsentUntil().

Referenced by __construct().

132  : void
133  {
134  $query = 'SELECT mail_options.cronjob_notification,
135  mail_options.signature,
136 
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,
144  usr_data.email,
145  usr_data.second_email
146  FROM mail_options
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(
150  $query,
151  ['integer'],
152  [$this->usrId]
153  );
154  $row = $this->db->fetchObject($res);
155  if ($row === null) {
156  $this->mailTransportSettings->adjust($this->firstEmailAddress, $this->secondEmailAddress, false);
157  return;
158  }
159 
160  $this->firstEmailAddress = (string) $row->email;
161  $this->secondEmailAddress = (string) $row->second_email;
162  if ($this->mayManageInvididualSettings()) {
163  $this->isCronJobNotificationEnabled = (bool) $row->cronjob_notification;
164  $this->signature = (string) $row->signature;
165  $this->setAbsenceStatus((bool) $row->absence_status);
166  $this->setAbsentFrom((int) $row->absent_from);
167  $this->setAbsentUntil((int) $row->absent_until);
168  $this->setAbsenceAutoresponderSubject($row->absence_ar_subject ?? '');
169  $this->setAbsenceAutoresponderBody($row->absence_ar_body ?? '');
170  }
171 
173  $this->incomingType = (int) $row->incoming_type;
174  $this->emailAddressMode = (int) $row->mail_address_option;
175 
176  if (false === filter_var(
177  $this->incomingType,
178  FILTER_VALIDATE_INT,
179  ['options' => ['min_range' => self::INCOMING_LOCAL, 'max_range' => self::INCOMING_BOTH]]
180  )) {
181  $this->incomingType = self::INCOMING_LOCAL;
182  }
183 
184  if (false === filter_var(
185  $this->emailAddressMode,
186  FILTER_VALIDATE_INT,
187  ['options' => ['min_range' => self::FIRST_EMAIL, 'max_range' => self::BOTH_EMAIL]]
188  )) {
189  $this->emailAddressMode = self::FIRST_EMAIL;
190  }
191  }
192 
193  $this->mailTransportSettings->adjust($this->firstEmailAddress, $this->secondEmailAddress);
194  }
$res
Definition: ltiservices.php:66
setAbsentFrom(int $absent_from)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
setAbsenceStatus(bool $absence_status)
setAbsenceAutoresponderBody(string $absence_auto_responder_body)
setAbsenceAutoresponderSubject(string $absence_auto_responder_subject)
setAbsentUntil(int $absent_until)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ setAbsenceAutoresponderBody()

ilMailOptions::setAbsenceAutoresponderBody ( string  $absence_auto_responder_body)

Definition at line 323 of file class.ilMailOptions.php.

References $absence_auto_responder_body.

Referenced by read().

323  : void
324  {
325  $this->absence_auto_responder_body = $absence_auto_responder_body;
326  }
string $absence_auto_responder_body
+ Here is the caller graph for this function:

◆ setAbsenceAutoresponderSubject()

ilMailOptions::setAbsenceAutoresponderSubject ( string  $absence_auto_responder_subject)

Definition at line 363 of file class.ilMailOptions.php.

References $absence_auto_responder_subject.

Referenced by read().

363  : void
364  {
365  $this->absence_auto_responder_subject = $absence_auto_responder_subject;
366  }
string $absence_auto_responder_subject
+ Here is the caller graph for this function:

◆ setAbsenceStatus()

ilMailOptions::setAbsenceStatus ( bool  $absence_status)

Definition at line 333 of file class.ilMailOptions.php.

References $absence_status.

Referenced by read().

333  : void
334  {
335  $this->absence_status = $absence_status;
336  }
+ Here is the caller graph for this function:

◆ setAbsentFrom()

ilMailOptions::setAbsentFrom ( int  $absent_from)

Definition at line 343 of file class.ilMailOptions.php.

References $absent_from.

Referenced by read().

343  : void
344  {
345  $this->absent_from = $absent_from;
346  }
+ Here is the caller graph for this function:

◆ setAbsentUntil()

ilMailOptions::setAbsentUntil ( int  $absent_until)

Definition at line 353 of file class.ilMailOptions.php.

References $absent_until.

Referenced by read().

353  : void
354  {
355  $this->absent_until = $absent_until;
356  }
+ Here is the caller graph for this function:

◆ setEmailAddressMode()

ilMailOptions::setEmailAddressMode ( int  $emailAddressMode)

Definition at line 260 of file class.ilMailOptions.php.

References $emailAddressMode.

260  : void
261  {
262  $this->emailAddressMode = $emailAddressMode;
263  }

◆ setIncomingType()

ilMailOptions::setIncomingType ( int  $incomingType)

Definition at line 240 of file class.ilMailOptions.php.

References $incomingType.

240  : void
241  {
242  $this->incomingType = $incomingType;
243  }

◆ setIsCronJobNotificationStatus()

ilMailOptions::setIsCronJobNotificationStatus ( bool  $isCronJobNotificationEnabled)

Definition at line 245 of file class.ilMailOptions.php.

References $isCronJobNotificationEnabled, and isCronJobNotificationEnabled().

245  : void
246  {
248  }
bool $isCronJobNotificationEnabled
+ Here is the call graph for this function:

◆ setSignature()

ilMailOptions::setSignature ( string  $signature)

Definition at line 235 of file class.ilMailOptions.php.

References $signature.

235  : void
236  {
237  $this->signature = $signature;
238  }

◆ updateOptions()

ilMailOptions::updateOptions ( )

Definition at line 196 of file class.ilMailOptions.php.

References $data, getAbsenceAutoresponderBody(), getAbsenceAutoresponderSubject(), getAbsenceStatus(), getAbsentFrom(), getAbsentUntil(), getEmailAddressMode(), getIncomingType(), getSignature(), ILIAS\Repository\int(), isCronJobNotificationEnabled(), and ILIAS\Repository\settings().

196  : int
197  {
198  $data = [
199  'signature' => ['text', $this->getSignature()],
200  'incoming_type' => ['integer', $this->getIncomingType()],
201  'mail_address_option' => ['integer', $this->getEmailAddressMode()],
202  ];
203 
204  if ($this->settings->get('mail_notification', '0')) {
205  $data['cronjob_notification'] = ['integer', (int) $this->isCronJobNotificationEnabled()];
206  } else {
207  $data['cronjob_notification'] = ['integer', self::lookupNotificationSetting($this->usrId)];
208  }
209 
210  $data['absence_status'] = ['integer', (int) $this->getAbsenceStatus()];
211  $data['absent_from'] = ['integer', $this->getAbsentFrom()];
212  $data['absent_until'] = ['integer', $this->getAbsentUntil()];
213  $data['absence_ar_subject'] = ['text', $this->getAbsenceAutoresponderSubject()];
214  $data['absence_ar_body'] = ['clob', $this->getAbsenceAutoresponderBody()];
215 
216  return $this->db->replace(
217  $this->table_mail_options,
218  [
219  'user_id' => ['integer', $this->usrId],
220  ],
221  $data
222  );
223  }
+ Here is the call graph for this function:

Field Documentation

◆ $absence_auto_responder_body

string ilMailOptions::$absence_auto_responder_body = ''
protected

◆ $absence_auto_responder_subject

string ilMailOptions::$absence_auto_responder_subject = ''
protected

◆ $absence_status

bool ilMailOptions::$absence_status = self::ABSENCE_STATUS_PRESENT
protected

Definition at line 53 of file class.ilMailOptions.php.

Referenced by getAbsenceStatus(), and setAbsenceStatus().

◆ $absent_from

int ilMailOptions::$absent_from = 0
protected

Definition at line 54 of file class.ilMailOptions.php.

Referenced by getAbsentFrom(), and setAbsentFrom().

◆ $absent_until

int ilMailOptions::$absent_until = 0
protected

Definition at line 55 of file class.ilMailOptions.php.

Referenced by getAbsentUntil(), and setAbsentUntil().

◆ $clockService

ClockInterface ilMailOptions::$clockService
protected

Definition at line 58 of file class.ilMailOptions.php.

◆ $db

ilDBInterface ilMailOptions::$db
protected

Definition at line 41 of file class.ilMailOptions.php.

◆ $default_email_address_mode

int ilMailOptions::$default_email_address_mode = self::FIRST_EMAIL
protected

Definition at line 49 of file class.ilMailOptions.php.

Referenced by __construct().

◆ $default_incoming_type

int ilMailOptions::$default_incoming_type = self::INCOMING_LOCAL
protected

Definition at line 47 of file class.ilMailOptions.php.

Referenced by __construct().

◆ $emailAddressMode

int ilMailOptions::$emailAddressMode = self::FIRST_EMAIL
protected

Definition at line 48 of file class.ilMailOptions.php.

Referenced by getEmailAddressMode(), and setEmailAddressMode().

◆ $firstEmailAddress

string ilMailOptions::$firstEmailAddress = ''
protected

Definition at line 51 of file class.ilMailOptions.php.

Referenced by getExternalEmailAddresses().

◆ $ilias

ILIAS ilMailOptions::$ilias
protected

Definition at line 40 of file class.ilMailOptions.php.

◆ $incomingType

int ilMailOptions::$incomingType = self::INCOMING_LOCAL
protected

Definition at line 46 of file class.ilMailOptions.php.

Referenced by getIncomingType(), and setIncomingType().

◆ $isCronJobNotificationEnabled

bool ilMailOptions::$isCronJobNotificationEnabled = false
protected

◆ $mailTransportSettings

ilMailTransportSettings ilMailOptions::$mailTransportSettings
protected

Definition at line 50 of file class.ilMailOptions.php.

◆ $secondEmailAddress

string ilMailOptions::$secondEmailAddress = ''
protected

Definition at line 52 of file class.ilMailOptions.php.

Referenced by getExternalEmailAddresses().

◆ $settings

ilSetting ilMailOptions::$settings
protected

Definition at line 42 of file class.ilMailOptions.php.

◆ $signature

string ilMailOptions::$signature = ''
protected

Definition at line 44 of file class.ilMailOptions.php.

Referenced by getSignature(), and setSignature().

◆ $table_mail_options

string ilMailOptions::$table_mail_options = 'mail_options'
protected

Definition at line 43 of file class.ilMailOptions.php.

◆ ABSENCE_STATUS_ABSENT

final const ilMailOptions::ABSENCE_STATUS_ABSENT = true

Definition at line 38 of file class.ilMailOptions.php.

◆ ABSENCE_STATUS_PRESENT

final const ilMailOptions::ABSENCE_STATUS_PRESENT = false

Definition at line 37 of file class.ilMailOptions.php.

◆ BOTH_EMAIL

final const ilMailOptions::BOTH_EMAIL = 5

◆ FIRST_EMAIL

◆ INCOMING_BOTH

◆ INCOMING_EMAIL

◆ INCOMING_LOCAL

◆ SECOND_EMAIL

final const ilMailOptions::SECOND_EMAIL = 4

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