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
4include_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"),
62 $this->period
63 );
64 }
65
66 public function getDefaultScheduleType()
67 {
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
117
118 $user->delete();
119
120 $counter++;
121 }
122
123 if ($counter) {
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}
sprintf('%.4f', $callTime)
$result
$_POST["username"]
An exception for terminatinating execution or to throw for unit testing.
hasAutoActivation()
Is to be activated on "installation".
saveCustomSettings(ilPropertyFormGUI $a_form)
Save custom settings.
addCustomSettingsToForm(ilPropertyFormGUI $a_form)
Add custom settings to form.
hasCustomSettings()
Has cron job any custom setting which can be edited?
Cron job result data container.
Cron job application base class.
const SCHEDULE_TYPE_DAILY
This class represents a multi selection list property in a property form.
This class represents a number property in a property form.
static _getUserIdsByInactivationPeriod($period)
get ids of all users that have been inactivated since at least the given period
static getInstanceByObjId($a_obj_id, $stop_on_error=true)
get an instance of an Ilias object by object id
This class represents a property form user interface.
addItem($a_item)
Add Item (Property, SectionHeader).
$counter
global $lng
Definition: privfeed.php:17
global $ilSetting
Definition: privfeed.php:17