ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilCronDeleteInactivatedUserAccounts.php
Go to the documentation of this file.
1 <?php
2 /* Copyright (c) 1998-2009 ILIAS open source, Extended GPL, see docs/LICENSE */
3 
4 include_once "Services/Cron/classes/class.ilCronJob.php";
5 
15 {
17 
18  private $period = null;
19 
20  private $include_roles = null;
21 
22  public function __construct()
23  {
24  global $ilSetting;
25 
26  if (is_object($ilSetting)) {
27  $this->include_roles = $ilSetting->get(
28  'cron_inactivated_user_delete_include_roles',
29  null
30  );
31  if ($this->include_roles === null) {
32  $this->include_roles = array();
33  } else {
34  $this->include_roles = explode(',', $this->include_roles);
35  }
36 
37  $this->period = $ilSetting->get(
38  'cron_inactivated_user_delete_period',
39  self::DEFAULT_INACTIVITY_PERIOD
40  );
41  }
42  }
43 
44  public function getId()
45  {
46  return "user_inactivated";
47  }
48 
49  public function getTitle()
50  {
51  global $lng;
52 
53  return $lng->txt("delete_inactivated_user_accounts");
54  }
55 
56  public function getDescription()
57  {
58  global $lng;
59 
60  return sprintf(
61  $lng->txt("delete_inactivated_user_accounts_desc"),
63  );
64  }
65 
66  public function getDefaultScheduleType()
67  {
68  return self::SCHEDULE_TYPE_DAILY;
69  }
70 
71  public function getDefaultScheduleValue()
72  {
73  return;
74  }
75 
76  public function hasAutoActivation()
77  {
78  return false;
79  }
80 
81  public function hasFlexibleSchedule()
82  {
83  return true;
84  }
85 
86  public function hasCustomSettings()
87  {
88  return true;
89  }
90 
91  public function run()
92  {
93  global $rbacreview;
94 
96 
97  $usr_ids = ilObjUser::_getUserIdsByInactivationPeriod($this->period);
98 
99  $counter = 0;
100  foreach ($usr_ids as $usr_id) {
101  if ($usr_id == ANONYMOUS_USER_ID || $usr_id == SYSTEM_USER_ID) {
102  continue;
103  }
104 
105  $continue = true;
106  foreach ($this->include_roles as $role_id) {
107  if ($rbacreview->isAssigned($usr_id, $role_id)) {
108  $continue = false;
109  break;
110  }
111  }
112  if ($continue) {
113  continue;
114  }
115 
116  $user = ilObjectFactory::getInstanceByObjId($usr_id);
117 
118  $user->delete();
119 
120  $counter++;
121  }
122 
123  if ($counter) {
124  $status = ilCronJobResult::STATUS_OK;
125  }
126  $result = new ilCronJobResult();
127  $result->setStatus($status);
128  return $result;
129  }
130 
132  {
133  global $lng, $rbacreview, $ilObjDataCache, $ilSetting;
134 
135  include_once('Services/Form/classes/class.ilMultiSelectInputGUI.php');
136  $sub_mlist = new ilMultiSelectInputGUI(
137  $lng->txt('delete_inactivated_user_accounts_include_roles'),
138  'cron_inactivated_user_delete_include_roles'
139  );
140  $sub_mlist->setInfo($lng->txt('delete_inactivated_user_accounts_include_roles_desc'));
141  $roles = array();
142  foreach ($rbacreview->getGlobalRoles() as $role_id) {
143  if ($role_id != ANONYMOUS_ROLE_ID) {
144  $roles[$role_id] = $ilObjDataCache->lookupTitle($role_id);
145  }
146  }
147  $sub_mlist->setOptions($roles);
148  $setting = $ilSetting->get('cron_inactivated_user_delete_include_roles', null);
149  if ($setting === null) {
150  $setting = array();
151  } else {
152  $setting = explode(',', $setting);
153  }
154  $sub_mlist->setValue($setting);
155  $sub_mlist->setWidth(300);
156  #$sub_mlist->setHeight(100);
157  $a_form->addItem($sub_mlist);
158 
159  $default_setting = self::DEFAULT_INACTIVITY_PERIOD;
160  $sub_text = new ilNumberInputGUI(
161  $lng->txt('delete_inactivated_user_accounts_period'),
162  'cron_inactivated_user_delete_period'
163  );
164  $sub_text->allowDecimals(false);
165  $sub_text->setInfo($lng->txt('delete_inactivated_user_accounts_period_desc'));
166  $sub_text->setValue($ilSetting->get("cron_inactivated_user_delete_period", $default_setting));
167  $sub_text->setSize(4);
168  $sub_text->setMaxLength(4);
169  $sub_text->setRequired(true);
170  $a_form->addItem($sub_text);
171 
172  /*
173  $default_setting = ilCronDeleteInactiveUserAccounts::DEFAULT_SETTING_INCLUDE_ADMINS;
174  $sub_cb = new ilCheckboxInputGUI($lng->txt('delete_inactivated_user_accounts_include_admins'),'cron_inactivated_user_delete_include_admins');
175  $sub_cb->setChecked($ilSetting->get("cron_inactivated_user_delete_include_admins", $default_setting) ? 1 : 0 );
176  //$sub_cb->setOptionTitle($lng->txt('delete_inactivated_user_accounts_include_admins'));
177  $sub_cb->setInfo($lng->txt('delete_inactivated_user_accounts_include_admins_desc'));
178  $a_form->addItem($sub_cb);
179  */
180  }
181 
182  public function saveCustomSettings(ilPropertyFormGUI $a_form)
183  {
184  global $ilSetting;
185 
186  $setting = implode(',', $_POST['cron_inactivated_user_delete_include_roles']);
187  if (!strlen($setting)) {
188  $setting = null;
189  }
190  $ilSetting->set('cron_inactivated_user_delete_include_roles', $setting);
191  $ilSetting->set('cron_inactivated_user_delete_period', $_POST['cron_inactivated_user_delete_period']);
192 
193  return true;
194  }
195 }
static _getUserIdsByInactivationPeriod($period)
get ids of all users that have been inactivated since at least the given period
$result
This class represents a property form user interface.
Cron job application base class.
addItem($a_item)
Add Item (Property, SectionHeader).
allowDecimals($a_value)
Toggle Decimals.
setInfo($a_info)
Set Information Text.
$counter
This class represents a multi selection list property in a property form.
This class represents a number property in a property form.
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
Create styles array
The data for the language used.
global $ilSetting
Definition: privfeed.php:17
global $lng
Definition: privfeed.php:17
Cron job result data container.
$_POST["username"]