ILIAS  trunk Revision v12.0_alpha-1338-g8f7e531aa3c
ilUserCronCheckAccounts Class Reference

This cron send notifications about expiring user accounts. More...

+ Inheritance diagram for ilUserCronCheckAccounts:
+ Collaboration diagram for ilUserCronCheckAccounts:

Public Member Functions

 getId ()
 
 getTitle ()
 
 getDescription ()
 
 getDefaultScheduleType ()
 
 getDefaultScheduleValue ()
 
 hasAutoActivation ()
 Is to be activated on "installation", does only work for ILIAS core cron jobs. More...
 
 hasFlexibleSchedule ()
 
 run ()
 
- Public Member Functions inherited from ILIAS\Cron\CronJob
 setDateTimeProvider (?\Closure $date_time_provider)
 
 isDue (?\DateTimeImmutable $last_run, ?JobScheduleType $schedule_type, ?int $schedule_value, bool $is_manually_executed=false)
 
 getScheduleType ()
 Get current schedule type (if flexible) More...
 
 getScheduleValue ()
 Get current schedule value (if flexible) More...
 
 setSchedule (?JobScheduleType $a_type, ?int $a_value)
 Update current schedule (if flexible) More...
 
 getAllScheduleTypes ()
 Get all available schedule types. More...
 
 getScheduleTypesWithValues ()
 
 getValidScheduleTypes ()
 Returns a collection of all valid schedule types for a specific job. More...
 
 isManuallyExecutable ()
 
 hasCustomSettings ()
 
 usesLegacyForms ()
 
 getCustomConfigurationInput (\ILIAS\UI\Factory $ui_factory, \ILIAS\Refinery\Factory $factory, \ilLanguage $lng)
 
 addCustomSettingsToForm (\ilPropertyFormGUI $a_form)
 
 saveCustomConfiguration (mixed $form_data)
 
 saveCustomSettings (\ilPropertyFormGUI $a_form)
 
 addToExternalSettingsForm (int $a_form_id, array &$a_fields, bool $a_is_active)
 
 activationWasToggled (\ilDBInterface $db, \ilSetting $setting, bool $a_currently_active)
 Important: This method is (also) called from the setup process, where the constructor of an ilCronJob ist NOT executed. More...
 
 getId ()
 
 getTitle ()
 
 getDescription ()
 
 hasAutoActivation ()
 Is to be activated on "installation", does only work for ILIAS core cron jobs. More...
 
 hasFlexibleSchedule ()
 
 getDefaultScheduleType ()
 
 getDefaultScheduleValue ()
 
 run ()
 

Protected Attributes

int $counter = 0
 
- Protected Attributes inherited from ILIAS\Cron\CronJob
JobScheduleType $schedule_type = null
 
int $schedule_value = null
 
Closure $date_time_provider = null
 

Private Attributes

ilDBInterface $db
 
ilLanguage $lng
 
ilComponentLogger $log
 

Detailed Description

This cron send notifications about expiring user accounts.

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

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

Member Function Documentation

◆ getDefaultScheduleType()

ilUserCronCheckAccounts::getDefaultScheduleType ( )

Reimplemented from ILIAS\Cron\CronJob.

Definition at line 70 of file class.ilUserCronCheckAccounts.php.

71 {
72 return JobScheduleType::DAILY;
73 }

◆ getDefaultScheduleValue()

ilUserCronCheckAccounts::getDefaultScheduleValue ( )

Reimplemented from ILIAS\Cron\CronJob.

Definition at line 75 of file class.ilUserCronCheckAccounts.php.

75 : ?int
76 {
77 return null;
78 }

◆ getDescription()

ilUserCronCheckAccounts::getDescription ( )

Reimplemented from ILIAS\Cron\CronJob.

Definition at line 65 of file class.ilUserCronCheckAccounts.php.

65 : string
66 {
67 return $this->lng->txt('check_user_accounts_desc');
68 }

References ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ getId()

ilUserCronCheckAccounts::getId ( )

Reimplemented from ILIAS\Cron\CronJob.

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

55 : string
56 {
57 return 'user_check_accounts';
58 }

◆ getTitle()

ilUserCronCheckAccounts::getTitle ( )

Reimplemented from ILIAS\Cron\CronJob.

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

60 : string
61 {
62 return $this->lng->txt('check_user_accounts');
63 }

References ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ hasAutoActivation()

ilUserCronCheckAccounts::hasAutoActivation ( )

Is to be activated on "installation", does only work for ILIAS core cron jobs.

Reimplemented from ILIAS\Cron\CronJob.

Definition at line 80 of file class.ilUserCronCheckAccounts.php.

80 : bool
81 {
82 return false;
83 }

◆ hasFlexibleSchedule()

ilUserCronCheckAccounts::hasFlexibleSchedule ( )

Reimplemented from ILIAS\Cron\CronJob.

Definition at line 85 of file class.ilUserCronCheckAccounts.php.

85 : bool
86 {
87 return false;
88 }

◆ run()

ilUserCronCheckAccounts::run ( )

Reimplemented from ILIAS\Cron\CronJob.

Definition at line 90 of file class.ilUserCronCheckAccounts.php.

90 : JobResult
91 {
92 $status = JobResult::STATUS_NO_ACTION;
93
94 $now = time();
95 $two_weeks_in_seconds = $now + (60 * 60 * 24 * 14); // #14630
96
97 // all users who are currently active and expire in the next 2 weeks
98 $query = 'SELECT usr_id, login, time_limit_until ' .
99 'FROM usr_data ' .
100 'WHERE expiration_reminder_sent = 0 ' .
101 'AND time_limit_unlimited = 0 ' .
102 'AND time_limit_from < ' . $this->db->quote($now, 'integer') . ' ' .
103 'AND time_limit_until > ' . $this->db->quote($now, 'integer') . ' ' .
104 'AND time_limit_until < ' . $this->db->quote($two_weeks_in_seconds, 'integer');
105
106 $res = $this->db->query($query);
107
108 while ($row = $this->db->fetchObject($res)) {
109 $expires = $row->time_limit_until;
110 $login = $row->login;
111 $usr_id = $row->usr_id;
112
114 $lng->loadLanguageModule('mail');
115
116 $salutation = ilMail::getSalutation($usr_id, $lng);
117
118 $body = $salutation . "\n\n";
119 $body .= sprintf(
120 $lng->txt('account_expires_body'),
121 $login,
122 ILIAS_HTTP_PATH,
123 date('Y-m-d H:i', $expires)
124 );
125
127
128 // force email
129 $mail = new ilMail(ANONYMOUS_USER_ID);
130 $mail->enqueue(
132 '',
133 '',
134 $lng->txt('account_expires_subject'),
135 $body,
136 []
137 );
138
139 // set status 'mail sent'
140 $query = 'UPDATE usr_data SET expiration_reminder_sent = 1' . PHP_EOL
141 . "WHERE usr_id = {$this->db->quote($usr_id, ilDBConstants::T_INTEGER)}";
142 $this->db->query($query);
143
144 // Send log message
145 $this->log->write('Cron: (checkUserAccounts()) sent message to ' . $login . '.');
146
147 $this->counter++;
148 }
149
150 if ($this->counter) {
151 $status = JobResult::STATUS_OK;
152 }
153 $result = new JobResult();
154 $result->setStatus($status);
155 return $result;
156 }
static _getLanguageOfUser(int $a_usr_id)
Get language object of user.
loadLanguageModule(string $a_module)
Load language module.
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
static getSalutation(int $a_usr_id, ?ilLanguage $a_language=null)
static _getAutoGeneratedMessageString(?ilLanguage $lang=null)
static _lookupEmail(int $a_user_id)
const ANONYMOUS_USER_ID
Definition: constants.php:27
$res
Definition: ltiservices.php:69

References $lng, $res, ilMail\_getAutoGeneratedMessageString(), ilLanguageFactory\_getLanguageOfUser(), ilObjUser\_lookupEmail(), ANONYMOUS_USER_ID, ilMail\getSalutation(), ilLanguage\loadLanguageModule(), and ilLanguage\txt().

+ Here is the call graph for this function:

Field Documentation

◆ $counter

int ilUserCronCheckAccounts::$counter = 0
protected

Definition at line 31 of file class.ilUserCronCheckAccounts.php.

◆ $db

ilDBInterface ilUserCronCheckAccounts::$db
private

Definition at line 33 of file class.ilUserCronCheckAccounts.php.

◆ $lng

ilLanguage ilUserCronCheckAccounts::$lng
private

Definition at line 34 of file class.ilUserCronCheckAccounts.php.

Referenced by run().

◆ $log

ilComponentLogger ilUserCronCheckAccounts::$log
private

Definition at line 35 of file class.ilUserCronCheckAccounts.php.


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