ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
ilCronDeleteInactiveUserAccounts Class Reference
+ Inheritance diagram for ilCronDeleteInactiveUserAccounts:
+ Collaboration diagram for ilCronDeleteInactiveUserAccounts:

Public Member Functions

 __construct ()
 
 getId ()
 
 getTitle ()
 
 getDescription ()
 
 getDefaultScheduleType ()
 
 getDefaultScheduleValue ()
 
 hasAutoActivation ()
 
 hasFlexibleSchedule ()
 
 hasCustomSettings ()
 
 addCustomSettingsToForm (ilPropertyFormGUI $a_form)
 
 saveCustomSettings (ilPropertyFormGUI $a_form)
 
- Public Member Functions inherited from ilCronJob
 isActive ($a_ts_last_run, $a_schedule_type, $a_schedule_value, $a_manual=false)
 Is job currently active? More...
 
 getScheduleType ()
 Get current schedule type (if flexible) More...
 
 getScheduleValue ()
 Get current schedule value (if flexible) More...
 
 setSchedule ($a_type, $a_value)
 Update current schedule (if flexible) More...
 
 getValidScheduleTypes ()
 Get all available schedule types. More...
 
 getTitle ()
 Get title. More...
 
 getDescription ()
 Get description. More...
 
 isManuallyExecutable ()
 Defines whether or not a cron job can be started manually. More...
 
 hasCustomSettings ()
 Has cron job any custom setting which can be edited? More...
 
 addCustomSettingsToForm (ilPropertyFormGUI $a_form)
 Add custom settings to form. More...
 
 saveCustomSettings (ilPropertyFormGUI $a_form)
 Save custom settings. More...
 
 addToExternalSettingsForm ($a_form_id, array &$a_fields, $a_is_active)
 Add external settings to form. More...
 
 activationWasToggled ($a_currently_active)
 Cron job status was changed. More...
 
 getId ()
 Get id. More...
 
 hasAutoActivation ()
 Is to be activated on "installation". More...
 
 hasFlexibleSchedule ()
 Can the schedule be configured? More...
 
 getDefaultScheduleType ()
 Get schedule type. More...
 
 getDefaultScheduleValue ()
 Get schedule value. More...
 
 run ()
 Run job. More...
 

Data Fields

const DEFAULT_INACTIVITY_PERIOD = 365
 
const DEFAULT_REMINDER_PERIOD = 0
 
- Data Fields inherited from ilCronJob
const SCHEDULE_TYPE_DAILY = 1
 
const SCHEDULE_TYPE_IN_MINUTES = 2
 
const SCHEDULE_TYPE_IN_HOURS = 3
 
const SCHEDULE_TYPE_IN_DAYS = 4
 
const SCHEDULE_TYPE_WEEKLY = 5
 
const SCHEDULE_TYPE_MONTHLY = 6
 
const SCHEDULE_TYPE_QUARTERLY = 7
 
const SCHEDULE_TYPE_YEARLY = 8
 

Protected Member Functions

 getTimeDifferenceBySchedule ($schedule_time, $multiplier)
 
 calculateDeletionData ($date_for_deletion)
 
 isDecimal ($number)
 
- Protected Member Functions inherited from ilCronJob
 checkSchedule ($a_ts_last_run, $a_schedule_type, $a_schedule_value)
 

Private Attributes

 $period = null
 
 $reminderTimer = null
 
 $include_roles = null
 

Detailed Description

Definition at line 17 of file class.ilCronDeleteInactiveUserAccounts.php.

Constructor & Destructor Documentation

◆ __construct()

ilCronDeleteInactiveUserAccounts::__construct ( )

Definition at line 26 of file class.ilCronDeleteInactiveUserAccounts.php.

References $ilSetting, and array.

27  {
28  global $ilSetting;
29 
30  if (is_object($ilSetting)) {
31  $this->include_roles = $ilSetting->get(
32  'cron_inactive_user_delete_include_roles',
33  null
34  );
35  if ($this->include_roles === null) {
36  $this->include_roles = array();
37  } else {
38  $this->include_roles = explode(',', $this->include_roles);
39  }
40 
41  $this->period = $ilSetting->get(
42  'cron_inactive_user_delete_period',
43  self::DEFAULT_INACTIVITY_PERIOD
44  );
45  $this->reminderTimer = $ilSetting->get(
46  'cron_inactive_user_reminder_period',
47  self::DEFAULT_REMINDER_PERIOD
48  );
49  }
50  }
Create styles array
The data for the language used.
global $ilSetting
Definition: privfeed.php:17

Member Function Documentation

◆ addCustomSettingsToForm()

ilCronDeleteInactiveUserAccounts::addCustomSettingsToForm ( ilPropertyFormGUI  $a_form)

Definition at line 210 of file class.ilCronDeleteInactiveUserAccounts.php.

References $ilSetting, $lng, ilPropertyFormGUI\addItem(), array, ilPropertyFormGUI\getItemByPostVar(), and ilFormPropertyGUI\setInfo().

211  {
212  global $lng, $rbacreview, $ilObjDataCache, $ilSetting;
213  $lng->loadLanguageModule("user");
214 
215  $schedule = $a_form->getItemByPostVar('type');
216  $schedule->setTitle(
217  $lng->txt('delete_inactive_user_accounts_frequency'),
218  'delete_inactive_user_accounts_frequency'
219  );
220  $schedule->setInfo(
221  $lng->txt('delete_inactive_user_accounts_frequency_desc'),
222  'delete_inactive_user_accounts_frequency_desc'
223  );
224 
225  include_once('Services/Form/classes/class.ilMultiSelectInputGUI.php');
226  $sub_mlist = new ilMultiSelectInputGUI(
227  $lng->txt('delete_inactive_user_accounts_include_roles'),
228  'cron_inactive_user_delete_include_roles'
229  );
230  $sub_mlist->setInfo($lng->txt('delete_inactive_user_accounts_include_roles_desc'));
231  $roles = array();
232  foreach ($rbacreview->getGlobalRoles() as $role_id) {
233  if ($role_id != ANONYMOUS_ROLE_ID) {
234  $roles[$role_id] = $ilObjDataCache->lookupTitle($role_id);
235  }
236  }
237  $sub_mlist->setOptions($roles);
238  $setting = $ilSetting->get('cron_inactive_user_delete_include_roles', null);
239  if ($setting === null) {
240  $setting = array();
241  } else {
242  $setting = explode(',', $setting);
243  }
244  $sub_mlist->setValue($setting);
245  $sub_mlist->setWidth(300);
246  #$sub_mlist->setHeight(100);
247  $a_form->addItem($sub_mlist);
248 
249  $default_setting = self::DEFAULT_INACTIVITY_PERIOD;
250  $sub_text = new ilNumberInputGUI(
251  $lng->txt('delete_inactive_user_accounts_period'),
252  'cron_inactive_user_delete_period'
253  );
254  $sub_text->setInfo($lng->txt('delete_inactive_user_accounts_period_desc'));
255  $sub_text->setValue($ilSetting->get("cron_inactive_user_delete_period", $default_setting));
256  $sub_text->setSize(4);
257  $sub_text->setMaxLength(4);
258  $sub_text->setRequired(true);
259  $a_form->addItem($sub_text);
260 
261  $sub_period = new ilNumberInputGUI(
262  $lng->txt('send_mail_to_inactive_users'),
263  'cron_inactive_user_reminder_period'
264  );
265  $sub_period->setInfo($lng->txt("send_mail_to_inactive_users_desc"));
266  $sub_period->setValue($ilSetting->get("cron_inactive_user_reminder_period", $default_setting));
267  $sub_period->setSuffix($lng->txt("send_mail_to_inactive_users_suffix"));
268  $sub_period->setSize(4);
269  $sub_period->setMaxLength(4);
270  $sub_period->setRequired(false);
271  $sub_period->setMinValue(0);
272  $a_form->addItem($sub_period);
273  /*
274  $default_setting = ilCronDeleteInactiveUserAccounts::DEFAULT_SETTING_INCLUDE_ADMINS;
275  $sub_cb = new ilCheckboxInputGUI($lng->txt('delete_inactive_user_accounts_include_admins'),'cron_inactive_user_delete_include_admins');
276  $sub_cb->setChecked($ilSetting->get("cron_inactive_user_delete_include_admins", $default_setting) ? 1 : 0 );
277  //$sub_cb->setOptionTitle($lng->txt('delete_inactive_user_accounts_include_admins'));
278  $sub_cb->setInfo($lng->txt('delete_inactive_user_accounts_include_admins_desc'));
279  $a_form->addItem($sub_cb);
280  */
281  }
getItemByPostVar($a_post_var)
Get Item by POST variable.
addItem($a_item)
Add Item (Property, SectionHeader).
setInfo($a_info)
Set Information Text.
This class represents a multi selection list property in a property form.
This class represents a number property in a property form.
Create styles array
The data for the language used.
global $ilSetting
Definition: privfeed.php:17
global $lng
Definition: privfeed.php:17
+ Here is the call graph for this function:

◆ calculateDeletionData()

ilCronDeleteInactiveUserAccounts::calculateDeletionData (   $date_for_deletion)
protected

Definition at line 191 of file class.ilCronDeleteInactiveUserAccounts.php.

References ilCronManager\getCronJobData(), getId(), getTimeDifferenceBySchedule(), and time.

Referenced by hasCustomSettings().

192  {
193  $cron_timing = ilCronManager::getCronJobData($this->getId());
194  $time_difference = 0;
195  $multiplier = 1;
196 
197  if (!is_array($cron_timing) || !is_array($cron_timing[0])) {
198  return time() + $date_for_deletion + $time_difference;
199  }
200 
201  if (array_key_exists('schedule_type', $cron_timing[0])) {
202  if ((array_key_exists('schedule_type', $cron_timing[0]) && $cron_timing[0]['schedule_value'] != null)) {
203  $multiplier = $cron_timing[0]['schedule_value'];
204  }
205  $time_difference = $this->getTimeDifferenceBySchedule($cron_timing[0]['schedule_type'], $multiplier);
206  }
207  return time() + $date_for_deletion + $time_difference;
208  }
static getCronJobData($a_id=null, $a_include_inactive=true)
Get cron job configuration/execution data.
Add data(end) time
Method that wraps PHPs time in order to allow simulations with the workflow.
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getDefaultScheduleType()

ilCronDeleteInactiveUserAccounts::getDefaultScheduleType ( )

Definition at line 108 of file class.ilCronDeleteInactiveUserAccounts.php.

109  {
110  return self::SCHEDULE_TYPE_DAILY;
111  }

◆ getDefaultScheduleValue()

ilCronDeleteInactiveUserAccounts::getDefaultScheduleValue ( )

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

114  {
115  return;
116  }

◆ getDescription()

ilCronDeleteInactiveUserAccounts::getDescription ( )

Definition at line 101 of file class.ilCronDeleteInactiveUserAccounts.php.

References $lng.

102  {
103  global $lng;
104 
105  return $lng->txt("delete_inactive_user_accounts_desc");
106  }
global $lng
Definition: privfeed.php:17

◆ getId()

ilCronDeleteInactiveUserAccounts::getId ( )

Definition at line 89 of file class.ilCronDeleteInactiveUserAccounts.php.

Referenced by calculateDeletionData().

90  {
91  return "user_inactive";
92  }
+ Here is the caller graph for this function:

◆ getTimeDifferenceBySchedule()

ilCronDeleteInactiveUserAccounts::getTimeDifferenceBySchedule (   $schedule_time,
  $multiplier 
)
protected
Parameters
$schedule_time
$multiplier
Returns
int

Definition at line 57 of file class.ilCronDeleteInactiveUserAccounts.php.

References ilCronJob\SCHEDULE_TYPE_DAILY, ilCronJob\SCHEDULE_TYPE_IN_DAYS, ilCronJob\SCHEDULE_TYPE_IN_HOURS, ilCronJob\SCHEDULE_TYPE_IN_MINUTES, ilCronJob\SCHEDULE_TYPE_MONTHLY, ilCronJob\SCHEDULE_TYPE_QUARTERLY, ilCronJob\SCHEDULE_TYPE_WEEKLY, and ilCronJob\SCHEDULE_TYPE_YEARLY.

Referenced by calculateDeletionData().

58  {
59  $time_difference = 0;
60  switch ($schedule_time) {
62  $time_difference = 86400;
63  break;
65  $time_difference = 60 * $multiplier;
66  break;
68  $time_difference = 3600 * $multiplier;
69  break;
71  $time_difference = 86400 * $multiplier;
72  break;
74  $time_difference = 604800;
75  break;
77  $time_difference = 2629743;
78  break;
80  $time_difference = 7889229;
81  break;
83  $time_difference = 31556926;
84  break;
85  }
86  return $time_difference;
87  }
const SCHEDULE_TYPE_IN_MINUTES
const SCHEDULE_TYPE_MONTHLY
const SCHEDULE_TYPE_WEEKLY
const SCHEDULE_TYPE_IN_DAYS
const SCHEDULE_TYPE_YEARLY
const SCHEDULE_TYPE_DAILY
const SCHEDULE_TYPE_QUARTERLY
const SCHEDULE_TYPE_IN_HOURS
+ Here is the caller graph for this function:

◆ getTitle()

ilCronDeleteInactiveUserAccounts::getTitle ( )

Definition at line 94 of file class.ilCronDeleteInactiveUserAccounts.php.

References $lng.

95  {
96  global $lng;
97 
98  return $lng->txt("delete_inactive_user_accounts");
99  }
global $lng
Definition: privfeed.php:17

◆ hasAutoActivation()

ilCronDeleteInactiveUserAccounts::hasAutoActivation ( )

Definition at line 118 of file class.ilCronDeleteInactiveUserAccounts.php.

119  {
120  return false;
121  }

◆ hasCustomSettings()

◆ hasFlexibleSchedule()

ilCronDeleteInactiveUserAccounts::hasFlexibleSchedule ( )

Definition at line 123 of file class.ilCronDeleteInactiveUserAccounts.php.

124  {
125  return true;
126  }

◆ isDecimal()

ilCronDeleteInactiveUserAccounts::isDecimal (   $number)
protected

Definition at line 356 of file class.ilCronDeleteInactiveUserAccounts.php.

Referenced by saveCustomSettings().

357  {
358  if (strpos($number, ',') || strpos($number, '.')) {
359  return true;
360  }
361  return false;
362  }
+ Here is the caller graph for this function:

◆ saveCustomSettings()

ilCronDeleteInactiveUserAccounts::saveCustomSettings ( ilPropertyFormGUI  $a_form)

Definition at line 283 of file class.ilCronDeleteInactiveUserAccounts.php.

References $_POST, $ilSetting, $lng, $valid, ilCronDeleteInactiveUserReminderMail\flushDataTable(), ilPropertyFormGUI\getItemByPostVar(), isDecimal(), ilCronJob\SCHEDULE_TYPE_IN_DAYS, ilCronJob\SCHEDULE_TYPE_MONTHLY, ilCronJob\SCHEDULE_TYPE_QUARTERLY, ilCronJob\SCHEDULE_TYPE_WEEKLY, ilCronJob\SCHEDULE_TYPE_YEARLY, ilUtil\sendFailure(), and ilUtil\stripSlashes().

284  {
285  global $ilSetting, $lng;
286  $lng->loadLanguageModule("user");
287  $setting = implode(',', $_POST['cron_inactive_user_delete_include_roles']);
288  if (!strlen($setting)) {
289  $setting = null;
290  }
291 
292  $valid = true;
293  $delete_period = ilUtil::stripSlashes($_POST['cron_inactive_user_delete_period']);
294  $reminder_period = ilUtil::stripSlashes($_POST['cron_inactive_user_reminder_period']);
295  $cron_period = (int) ilUtil::stripSlashes($_POST['type']);
296  $cron_period_custom = (int) ilUtil::stripSlashes($_POST['sdyi']);
297 
298  if ($this->isDecimal($delete_period)) {
299  $valid = false;
300  $a_form->getItemByPostVar('cron_inactive_user_delete_period')->setAlert($lng->txt('send_mail_to_inactive_users_numbers_only'), 'send_mail_to_inactive_users_numbers_only');
301  }
302  if ($this->isDecimal($reminder_period)) {
303  $valid = false;
304  $a_form->getItemByPostVar('cron_inactive_user_reminder_period')->setAlert($lng->txt('send_mail_to_inactive_users_numbers_only'), 'send_mail_to_inactive_users_numbers_only');
305  }
306  if ($reminder_period >= $delete_period) {
307  $valid = false;
308  $a_form->getItemByPostVar('cron_inactive_user_reminder_period')->setAlert($lng->txt('send_mail_to_inactive_users_must_be_smaller_than'), 'send_mail_to_inactive_users_must_be_smaller_than');
309  }
310  if ($cron_period >= ilCronJob::SCHEDULE_TYPE_IN_DAYS && $cron_period <= ilCronJob::SCHEDULE_TYPE_YEARLY && $reminder_period > 0) {
311  $logic = true;
312  $check_window_logic = $delete_period - $reminder_period;
313  if ($cron_period == ilCronJob::SCHEDULE_TYPE_IN_DAYS) {
314  if ($check_window_logic < $cron_period_custom) {
315  $logic = false;
316  }
317  } elseif ($cron_period == ilCronJob::SCHEDULE_TYPE_WEEKLY) {
318  if ($check_window_logic <= 7) {
319  $logic = false;
320  }
321  } elseif ($cron_period == ilCronJob::SCHEDULE_TYPE_MONTHLY) {
322  if ($check_window_logic <= 31) {
323  $logic = false;
324  }
325  } elseif ($cron_period == ilCronJob::SCHEDULE_TYPE_QUARTERLY) {
326  if ($check_window_logic <= 92) {
327  $logic = false;
328  }
329  } elseif ($cron_period == ilCronJob::SCHEDULE_TYPE_YEARLY) {
330  if ($check_window_logic <= 366) {
331  $logic = false;
332  }
333  }
334  if (!$logic) {
335  $valid = false;
336  $a_form->getItemByPostVar('cron_inactive_user_reminder_period')->setAlert($lng->txt('send_mail_reminder_window_too_small'), 'send_mail_reminder_window_too_small');
337  }
338  }
339  if ($_POST['cron_inactive_user_delete_period']) {
340  $ilSetting->set('cron_inactive_user_delete_include_roles', $setting);
341  $ilSetting->set('cron_inactive_user_delete_period', $_POST['cron_inactive_user_delete_period']);
342  }
343  if ($this->reminderTimer > $reminder_period) {
345  }
346  $ilSetting->set('cron_inactive_user_reminder_period', $reminder_period);
347 
348  if (!$valid) {
349  ilUtil::sendFailure($lng->txt("form_input_not_valid"));
350  return false;
351  }
352 
353  return true;
354  }
getItemByPostVar($a_post_var)
Get Item by POST variable.
$valid
const SCHEDULE_TYPE_MONTHLY
const SCHEDULE_TYPE_WEEKLY
const SCHEDULE_TYPE_IN_DAYS
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
const SCHEDULE_TYPE_YEARLY
global $ilSetting
Definition: privfeed.php:17
global $lng
Definition: privfeed.php:17
const SCHEDULE_TYPE_QUARTERLY
$_POST["username"]
+ Here is the call graph for this function:

Field Documentation

◆ $include_roles

ilCronDeleteInactiveUserAccounts::$include_roles = null
private

Definition at line 24 of file class.ilCronDeleteInactiveUserAccounts.php.

◆ $period

ilCronDeleteInactiveUserAccounts::$period = null
private

Definition at line 22 of file class.ilCronDeleteInactiveUserAccounts.php.

◆ $reminderTimer

ilCronDeleteInactiveUserAccounts::$reminderTimer = null
private

Definition at line 23 of file class.ilCronDeleteInactiveUserAccounts.php.

◆ DEFAULT_INACTIVITY_PERIOD

const ilCronDeleteInactiveUserAccounts::DEFAULT_INACTIVITY_PERIOD = 365

Definition at line 19 of file class.ilCronDeleteInactiveUserAccounts.php.

◆ DEFAULT_REMINDER_PERIOD

const ilCronDeleteInactiveUserAccounts::DEFAULT_REMINDER_PERIOD = 0

Definition at line 20 of file class.ilCronDeleteInactiveUserAccounts.php.


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