ILIAS  trunk Revision v12.0_alpha-377-g3641b37b9db
class.ilUserTableGUI.php
Go to the documentation of this file.
1<?php
2
19declare(strict_types=1);
20
24use ILIAS\User\Profile\Fields\Field as ProfileField;
25use ILIAS\User\Context as ProfileContext;
26
33{
34 public const MODE_USER_FOLDER = 1;
35 public const MODE_LOCAL_USER = 2;
36
37 private ?int $mode = null;
38 private int $user_folder_id = 0;
39
40 private bool $with_write_access = false;
43 protected array $udf_fields = [];
44 protected array $filter = [];
45
48
49 public function __construct(
50 object $a_parent_obj,
51 string $a_parent_cmd,
52 int $a_mode = self::MODE_USER_FOLDER,
53 bool $a_load_items = true
54 ) {
56 global $DIC;
57 $this->lng = $DIC['lng'];
58 $this->rbac_review = $DIC['rbacreview'];
59 $this->current_user = $DIC['ilUser'];
60
61 $this->user_folder_id = $a_parent_obj->getObject()->getRefId();
62 $this->user_profile = LocalDIC::dic()[Profile::class];
63
64 if ($DIC['ilAccess']->checkPositionAccess(ilObjUserFolder::ORG_OP_EDIT_USER_ACCOUNTS, $this->user_folder_id)
65 || $DIC['rbacsystem']->checkAccess('write', $this->user_folder_id)
66 || $DIC['rbacsystem']->checkAccess('cat_administrate_users', $this->user_folder_id)) {
67 $this->with_write_access = true;
68 }
69
70 $this->setMode($a_mode);
71 $this->setId("user{$this->getUserFolderId()}");
72
73 [
74 'selectable_columns' => $this->selectable_columns,
75 'udfs' => $this->udf_fields
77 parent::__construct($a_parent_obj, $a_parent_cmd);
78
79 $this->addColumn('', '', '1', true);
80 $this->addColumn($this->lng->txt('login'), 'username');
81
82 foreach ($this->getSelectedColumns() as $c) {
83 $this->addColumn(
84 $this->selectable_columns[$c]['txt'] ?? $this->lng->txt($c),
85 (string) $c
86 );
87 }
88
89 if ($this->getMode() == self::MODE_LOCAL_USER) {
90 $this->addColumn($this->lng->txt('context'), 'time_limit_owner');
91 $this->addColumn($this->lng->txt('role_assignment'));
92 }
93
94 $this->setShowRowsSelector(true);
95 $this->setExternalSorting(true);
96 $this->setExternalSegmentation(true);
97 $this->setEnableHeader(true);
98
99 $this->setFormAction($this->ctrl->getFormAction($this->parent_obj, 'applyFilter'));
100 $this->setRowTemplate('tpl.user_list_row.html', 'components/ILIAS/User');
101 $this->setEnableTitle(true);
102 $this->initFilter();
103 $this->setFilterCommand('applyFilter');
104 $this->setDefaultOrderField('username');
105 $this->setDefaultOrderDirection('asc');
106
107 $this->setSelectAllCheckbox('id[]');
108 $this->setTopCommands(true);
109
110 $this->user_request = new UserGUIRequest(
111 $DIC->http(),
112 $DIC->refinery()
113 );
114
115 if ($this->getMode() == self::MODE_USER_FOLDER) {
116 $this->setEnableAllCommand(true);
117
118 $cmds = $a_parent_obj->getUserMultiCommands();
119 foreach ($cmds as $cmd => $caption) {
120 $this->addMultiCommand($cmd, $caption);
121 }
122 } else {
123 $this->addMultiCommand('deleteUsers', $this->lng->txt('delete'));
124 }
125
126 if ($a_load_items) {
127 $this->getItems();
128 }
129 }
130
131 protected function setMode(int $a_mode): void
132 {
133 $this->mode = $a_mode;
134 }
135
136 protected function getMode(): int
137 {
138 return $this->mode;
139 }
140
141 protected function getUserFolderId(): int
142 {
144 }
145
146 public function getSelectableColumns(): array
147 {
149 }
150
151 private function buildSelectableColumnsAndUdfs(): array
152 {
153
154
155 $ufs = $this->user_profile->getVisibleFields($this->getFormContext());
156
157 $udfs = [];
158 $cols = array_reduce(
159 $ufs,
160 function (array $c, ProfileField $v) use (&$udfs): array {
161 $identifier = $v->getIdentifier();
162 if ($v->isCustom()) {
163 $udfs[] = $v;
164 $identifier = "udf_{$identifier}";
165 $c[$identifier] = null;
166 }
167
168 if (!array_key_exists($identifier, $c)) {
169 return $c;
170 }
171
172 $c[$identifier] = [
173 'txt' => $v->getLabel($this->lng),
174 'default' => false
175 ];
176 return $c;
177 },
178 [
179 'firstname' => null,
180 'lastname' => null,
181 'time_limit_until' => [
182 'txt' => $this->lng->txt('access_until'),
183 'default' => false
184 ],
185 'last_login' => [
186 'txt' => $this->lng->txt('last_access'),
187 'default' => true
188 ],
189 'create_date' => [
190 'txt' => $this->lng->txt('create_date'),
191 'default' => false
192 ],
193 'approve_date' => [
194 'txt' => $this->lng->txt('approve_date'),
195 'default' => false
196 ],
197 'agree_date' => [
198 'txt' => $this->lng->txt('agree_date'),
199 'default' => false
200 ],
201 'dpro_agreed_on' => [
202 'txt' => $this->lng->txt('dpro_agreed_on'),
203 'default' => false
204 ],
205 'email' => null,
206 'second_email' => null,
207 'title' => null,
208 'birthday' => null,
209 'gender' => null,
210 'institution' => null,
211 'department' => null,
212 'street' => null,
213 'zipcode' => null,
214 'city' => null,
215 'country' => null,
216 'phone_office' => null,
217 'phone_home' => null,
218 'phone_mobile' => null,
219 'fax' => null,
220 'matriculation' => null,
221 'interests_general' => null,
222 'interests_help_offered' => null,
223 'interests_help_looking' => null,
224 'auth_mode' => [
225 'txt' => $this->lng->txt('auth_mode'),
226 'default' => false
227 ],
228 'org_units' => null
229 ]
230 );
231
232 return [
233 'selectable_columns' => array_filter($cols),
234 'udfs' => $udfs
235 ];
236 }
237
238 protected function buildUserQuery(): ilUserQuery
239 {
240 $query = new ilUserQuery();
241 $query->setOffset($this->getOffset());
242 $query->setLimit($this->getLimit());
243 $query->setTextFilter($this->filter['query'] ?? '');
244 $query->setActionFilter($this->filter['activation'] ?? '');
245 $query->setLastLogin($this->filter['last_login'] ?? null);
246 $query->setLimitedAccessFilter($this->filter['limited_access'] ?? false);
247 $query->setNoCourseFilter($this->filter['no_courses'] ?? false);
248 $query->setNoGroupFilter($this->filter['no_groups'] ?? false);
249 $query->setCourseGroupFilter($this->filter['course_group'] ?? 0);
250 $query->setRoleFilter((int) ($this->filter['global_role'] ?? 0));
251 $query->setUserFilter($this->filter['user_ids'] ?? []);
252 $query->setFirstLetterLastname($this->user_request->getLetter());
253 $query->setAuthenticationFilter($this->filter['authentication'] ?? '');
254 return $query;
255 }
256
257 public function getItems(): void
258 {
260 if ($this->getMode() == self::MODE_USER_FOLDER) {
261 // All accessible users
262 $user_filter = ilLocalUser::_getFolderIds(true);
263 } else {
264 if ($this->filter['time_limit_owner'] ?? null) {
265 $user_filter = [$this->filter['time_limit_owner']];
266 } else {
267 // All accessible users
268 $user_filter = ilLocalUser::_getFolderIds();
269 }
270 }
271
272 if ($user_filter === []) {
273 $this->setMaxCount(0);
274 $this->setData([]);
275 return;
276 }
277
278 if (isset($this->filter['user_ids']) && is_array($this->filter['user_ids']) && $this->filter['user_ids'] === []) {
279 $this->setMaxCount(0);
280 $this->setData([]);
281 return;
282 }
283
284 $additional_fields = $this->getSelectedColumns();
285 unset(
286 $additional_fields['firstname'],
287 $additional_fields['lastname'],
288 $additional_fields['email'],
289 $additional_fields['second_email'],
290 $additional_fields['last_login'],
291 $additional_fields['access_until'],
292 $additional_fields['org_units']
293 );
294
295 $udf_filter = [];
296 foreach ($this->filter as $k => $v) {
297 if (strpos($k, 'udf_') === 0) {
298 $udf_filter[$k] = $v;
299 }
300 }
301
302 $query = $this->buildUserQuery();
303 $order_field = $this->getOrderField();
304 if (strpos($order_field, 'udf_') !== 0 || isset($additional_fields[$order_field])) {
305 $query->setOrderField($order_field);
306 $query->setOrderDirection($this->getOrderDirection());
307 }
308 $query->setAdditionalFields($additional_fields);
309 $query->setUserFolder($user_filter);
310 $query->setUdfFilter($udf_filter);
311 $usr_data = $query->query();
312
313 if (count($usr_data['set']) == 0 && $this->getOffset() > 0) {
314 $this->resetOffset();
315 $query->setOffset($this->getOffset());
316 $usr_data = $query->query();
317 }
318
319 foreach ($usr_data['set'] as $k => $user) {
320 if (in_array('org_units', $this->getSelectedColumns())) {
321 $usr_data['set'][$k]['org_units'] = ilObjUser::lookupOrgUnitsRepresentation($user['usr_id']);
322 }
323
324
325 $current_time = time();
326 if ($user['active']) {
327 if ($user['time_limit_unlimited']) {
328 $txt_access = $this->lng->txt('access_unlimited');
329 $usr_data['set'][$k]['access_class'] = 'smallgreen';
330 } elseif ($user['time_limit_until'] < $current_time) {
331 $txt_access = $this->lng->txt('access_expired');
332 $usr_data['set'][$k]['access_class'] = 'smallred';
333 } else {
334 $txt_access = ilDatePresentation::formatDate(new ilDateTime($user['time_limit_until'], IL_CAL_UNIX));
335 $usr_data['set'][$k]['access_class'] = 'small';
336 }
337 } else {
338 $txt_access = $this->lng->txt('inactive');
339 $usr_data['set'][$k]['access_class'] = 'smallred';
340 }
341 $usr_data['set'][$k]['access_until'] = $txt_access;
342 }
343
344 $this->setMaxCount($usr_data['cnt']);
345 $this->setData($usr_data['set']);
346 }
347
348 public function addFilterItemValue($filter, $value): void // Missing parameter types.
349 {
350 $this->filter[$filter] = $value;
351 }
352
353 public function getUserIdsForFilter(): array // Missing array type.
354 {
355 if ($this->getMode() == self::MODE_USER_FOLDER) {
356 // All accessible users
357 $user_filter = ilLocalUser::_getFolderIds(true);
358 } else {
359 if ($this->filter['time_limit_owner']) {
360 $user_filter = [$this->filter['time_limit_owner']];
361 } else {
362 // All accessible users
363 $user_filter = ilLocalUser::_getFolderIds();
364 }
365 }
366
367 if (!isset($this->filter['user_ids'])) {
368 $this->filter['user_ids'] = null;
369 }
370
371 $query = $this->buildUserQuery();
372 $query->setUserFolder($user_filter);
373 if ($this->getOrderField()) {
374 $query->setOrderField(ilUtil::stripSlashes($this->getOrderField()));
375 $query->setOrderDirection(ilUtil::stripSlashes($this->getOrderDirection()));
376 }
377 $usr_data = $query->query();
378
379 $user_ids = [];
380
381 foreach ($usr_data['set'] as $item) {
382 // #11632
383 if ($item['usr_id'] != SYSTEM_USER_ID) {
384 $user_ids[] = $item['usr_id'];
385 }
386 }
387 return $user_ids;
388 }
389
390 public function initFilter(): void
391 {
392 // Show context filter
393 if ($this->getMode() == self::MODE_LOCAL_USER) {
394 $parent_ids = ilLocalUser::_getFolderIds();
395
396 if (count($parent_ids) > 1) {
397 $co = new ilSelectInputGUI($this->lng->txt('context'), 'time_limit_owner');
398
399 $ref_id = $this->getUserFolderId();
400
401 $opt[0] = $this->lng->txt('all_users');
402 $opt[$this->getUserFolderId()] = $this->lng->txt('users') . ' (' . ilObject::_lookupTitle(ilObject::_lookupObjId($this->getUserFolderId())) . ')';
403
404 foreach ($parent_ids as $parent_id) {
405 if ($parent_id == $this->getUserFolderId()) {
406 continue;
407 }
408 switch ($parent_id) {
409 case USER_FOLDER_ID:
410 $opt[USER_FOLDER_ID] = $this->lng->txt('global_user');
411 break;
412
413 default:
414 $opt[$parent_id] = $this->lng->txt('users') . ' (' . ilObject::_lookupTitle(ilObject::_lookupObjId($parent_id)) . ')';
415 break;
416 }
417 }
418 $co->setOptions($opt);
419 $this->addFilterItem($co);
420 $co->readFromSession();
421 $this->filter['time_limit_owner'] = $co->getValue();
422 }
423 }
424
425 // User name, login, email filter
426 $ul = new ilTextInputGUI($this->lng->txt('login') . '/' . $this->lng->txt('email') . '/' .
427 $this->lng->txt('name'), 'query');
428 $ul->setDataSource($this->ctrl->getLinkTarget(
429 $this->getParentObject(),
430 'addUserAutoComplete',
431 '',
432 true
433 ));
434 $ul->setSize(20);
435 $ul->setSubmitFormOnEnter(true);
436 $this->addFilterItem($ul);
437 $ul->readFromSession();
438 $this->filter['query'] = $ul->getValue();
439
440
441 // activation
442 $options = [
443 '' => $this->lng->txt('user_all'),
444 'active' => $this->lng->txt('active'),
445 'inactive' => $this->lng->txt('inactive'),
446 ];
447 $si = new ilSelectInputGUI($this->lng->txt('user_activation'), 'activation');
448 $si->setOptions($options);
449 $this->addFilterItem($si);
450 $si->readFromSession();
451 $this->filter['activation'] = $si->getValue();
452
453 // limited access
454 $cb = new ilCheckboxInputGUI($this->lng->txt('user_limited_access'), 'limited_access');
455 $this->addFilterItem($cb);
456 $cb->readFromSession();
457 $this->filter['limited_access'] = $cb->getChecked();
458
459 // last login
460 $di = new ilDateTimeInputGUI($this->lng->txt('user_last_login_before'), 'last_login');
461 $default_date = new ilDateTime(time(), IL_CAL_UNIX);
462 $default_date->increment(IL_CAL_DAY, 1);
463 $di->setDate($default_date);
464 $this->addFilterItem($di);
465 $di->readFromSession();
466 $this->filter['last_login'] = $di->getDate();
467
468 if ($this->getMode() == self::MODE_USER_FOLDER) {
469 // no assigned courses
470 $cb = new ilCheckboxInputGUI($this->lng->txt('user_no_courses'), 'no_courses');
471 $this->addFilterItem($cb);
472 $cb->readFromSession();
473 $this->filter['no_courses'] = $cb->getChecked();
474
475 // no assigned groups
476 $ng = new ilCheckboxInputGUI($this->lng->txt('user_no_groups'), 'no_groups');
477 $this->addFilterItem($ng);
478 $ng->readFromSession();
479 $this->filter['no_groups'] = $ng->getChecked();
480
481 // course/group members
482 $rs = new ilRepositorySelectorInputGUI($this->lng->txt('user_member_of_course_group'), 'course_group');
483 $rs->setSelectText($this->lng->txt('user_select_course_group'));
484 $rs->setHeaderMessage($this->lng->txt('user_please_select_course_group'));
485 $rs->setClickableTypes(['crs', 'grp']);
486 $this->addFilterItem($rs);
487 $rs->readFromSession();
488 $this->filter['course_group'] = $rs->getValue();
489 }
490
491 // global roles
492 $options = [
493 '' => $this->lng->txt('user_any'),
494 ];
495 foreach ($this->rbac_review->getRolesByFilter(2, $this->current_user->getId()) as $role) {
496 $options[$role['rol_id']] = $role['title'];
497 }
498 $si = new ilSelectInputGUI($this->lng->txt('user_global_role'), 'global_role');
499 $si->setOptions($options);
500 $this->addFilterItem($si);
501 $si->readFromSession();
502 $this->filter['global_role'] = $si->getValue();
503
504 // authentication mode
505 $auth_methods = ilAuthUtils::_getActiveAuthModes();
506 $options = [
507 '' => $this->lng->txt('user_any'),
508 ];
509 foreach ($auth_methods as $method => $value) {
510 if ($method == 'default') {
511 $options[$method] = $this->lng->txt('auth_' . $method) . ' (' . $this->lng->txt('auth_' . ilAuthUtils::_getAuthModeName($value)) . ')';
512 } else {
513 $options[$method] = ilAuthUtils::getAuthModeTranslation((string) $value);
514 }
515 }
516 $si = new ilSelectInputGUI($this->lng->txt('auth_mode'), 'authentication_method');
517 $si->setOptions($options);
518 $this->addFilterItem($si);
519 $si->readFromSession();
520 $this->filter['authentication'] = $si->getValue();
521
522 // udf fields
523 foreach ($this->udf_fields as $f) {
524 $this->addFilterItemByUdfType($f);
525 }
526 }
527
531 private function addFilterItemByUdfType(
532 ProfileField $field
534 $id = "udf_{$field->getIdentifier()}";
535 $item = $field->getLegacyInput($this->lng, $this->getFormContext());
536 $item->setRequired(false);
537 if (!($item instanceof ilTableFilterItem)) {
538 $item = new ilTextInputGUI($field->getLabel($this->lng));
539 }
540 $item->setPostVar($id);
541 $this->addFilterItem($item, true);
542 $item->readFromSession();
543 $this->filter[$id] = $item->getValue();
544 return $item;
545 }
546
547 protected function fillRow(array $a_set): void // Missing array type.
548 {
549 $this->ctrl->setParameterByClass('ilobjusergui', 'letter', $this->user_request->getLetter());
550
551 foreach ($this->getSelectedColumns() as $c) {
552 if ($c == 'time_limit_until') {
553 $this->tpl->setCurrentBlock('access_until');
554 $this->tpl->setVariable('VAL_ACCESS_UNTIL', $a_set['access_until']);
555 $this->tpl->setVariable('CLASS_ACCESS_UNTIL', $a_set['access_class']);
556 } elseif ($c == 'last_login') {
557 $this->tpl->setCurrentBlock('last_login');
558 $this->tpl->setVariable(
559 'VAL_LAST_LOGIN',
561 );
562 } elseif (in_array($c, ['firstname', 'lastname'])) {
563 $this->tpl->setCurrentBlock($c);
564 $this->tpl->setVariable('VAL_' . strtoupper($c), (string) $a_set[$c]);
565 } elseif ($c == 'auth_mode') {
566 $this->tpl->setCurrentBlock('user_field');
567 $this->tpl->setVariable('VAL_UF', ilAuthUtils::getAuthModeTranslation((string) ilAuthUtils::_getAuthMode($a_set['auth_mode'])));
568 $this->tpl->parseCurrentBlock();
569 } else { // all other fields
570 $this->tpl->setCurrentBlock('user_field');
571 $this->tpl->setVariable('VAL_UF', $this->buildUserFieldValue($c, $a_set[$c] ?? ''));
572 }
573
574 $this->tpl->parseCurrentBlock();
575 }
576
577 if ($a_set['usr_id'] != 6
578 && ($this->getMode() == self::MODE_USER_FOLDER || $a_set['time_limit_owner'] == $this->getUserFolderId())) {
579 $this->tpl->setCurrentBlock('checkb');
580 $this->tpl->setVariable('ID', $a_set['usr_id']);
581 $this->tpl->parseCurrentBlock();
582 }
583
584 if ($this->with_write_access
585 && ($this->getMode() === self::MODE_USER_FOLDER
586 || $a_set['time_limit_owner'] == $this->getUserFolderId())) {
587 $this->tpl->setVariable('VAL_LOGIN', $a_set['login']);
588 $this->ctrl->setParameterByClass('ilobjusergui', 'obj_id', $a_set['usr_id']);
589 $this->tpl->setVariable(
590 'HREF_LOGIN',
591 $this->ctrl->getLinkTargetByClass('ilobjusergui', 'view')
592 );
593 $this->ctrl->setParameterByClass('ilobjusergui', 'obj_id', '');
594 } else {
595 $this->tpl->setVariable('VAL_LOGIN_PLAIN', $a_set['login']);
596 }
597
598 if ($this->getMode() == self::MODE_LOCAL_USER) {
599 $this->tpl->setCurrentBlock('context');
600 $this->tpl->setVariable(
601 'VAL_CONTEXT',
602 ilObject::_lookupTitle(ilObject::_lookupObjId($a_set['time_limit_owner']))
603 );
604 $this->tpl->parseCurrentBlock();
605
606 $this->tpl->setCurrentBlock('roles');
607 $this->ctrl->setParameter($this->getParentObject(), 'obj_id', $a_set['usr_id']);
608 $this->tpl->setVariable('ROLE_LINK', $this->ctrl->getLinkTarget($this->getParentObject(), 'assignRoles'));
609 $this->tpl->setVariable('TXT_ROLES', $this->lng->txt('edit'));
610 $this->ctrl->clearParameters($this->getParentObject());
611 $this->tpl->parseCurrentBlock();
612 }
613 }
614
615 private function buildUserFieldValue(string $key, array|string $value): string
616 {
617 switch ($key) {
618 case 'birthday':
620
621 case 'gender':
622 return $value === '' ? '' : $this->lng->txt('gender_' . $value);
623
624 case 'create_date':
625 case 'agree_date':
626 case 'approve_date':
628
629 case 'dpro_agreed_on':
631 }
632
633 if (is_array($value)) {
634 return implode(', ', $value);
635 }
636
637 if (trim($value) === '') {
638 return ' ';
639 }
640
641 return $value;
642 }
643
644 private function getFormContext(): ProfileContext
645 {
646 if ($this->getMode() === self::MODE_USER_FOLDER) {
647 return ProfileContext::UserAdministration;
648 }
649 return ProfileContext::LocalUserAdministration;
650 }
651}
const IL_CAL_DATE
const IL_CAL_UNIX
const IL_CAL_DATETIME
const IL_CAL_DAY
static _getActiveAuthModes()
static getAuthModeTranslation(string $a_auth_key, string $auth_name='')
static _getAuthMode(?string $a_auth_mode)
static _getAuthModeName($a_auth_key)
This class represents a checkbox property in a property form.
static formatDate(ilDateTime $date, bool $a_skip_day=false, bool $a_include_wd=false, bool $include_seconds=false, ?ilObjUser $user=null,)
This class represents a date/time property in a property form.
@classDescription Date and time handling
Class for single dates.
This class represents a property in a property form.
static _getFolderIds(bool $access_with_orgunit=false)
User class.
static lookupOrgUnitsRepresentation(int $a_usr_id)
static _lookupObjId(int $ref_id)
static _lookupTitle(int $obj_id)
class ilRbacReview Contains Review functions of core Rbac.
This class represents a repository selector in a property form.
This class represents a selection list property in a property form.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
__construct(?object $a_parent_obj, string $a_parent_cmd="", string $a_template_context="")
setShowRowsSelector(bool $a_value)
Toggle rows-per-page selector.
setFilterCommand(string $a_val, string $a_caption="")
setEnableAllCommand(bool $a_value)
determineOffsetAndOrder(bool $a_omit_offset=false)
setExternalSegmentation(bool $a_val)
addFilterItem(ilTableFilterItem $a_input_item, bool $a_optional=false)
setEnableTitle(bool $a_enabletitle)
addMultiCommand(string $a_cmd, string $a_text)
setFormAction(string $a_form_action, bool $a_multipart=false)
resetOffset(bool $a_in_determination=false)
addColumn(string $a_text, string $a_sort_field="", string $a_width="", bool $a_is_checkbox_action_column=false, string $a_class="", string $a_tooltip="", bool $a_tooltip_with_html=false)
setEnableHeader(bool $a_enableheader)
setDefaultOrderField(string $a_defaultorderfield)
setSelectAllCheckbox(string $a_select_all_checkbox, bool $a_select_all_on_top=false)
setTopCommands(bool $a_val)
setExternalSorting(bool $a_val)
array $selectable_columns
setRowTemplate(string $a_template, string $a_template_dir="")
Set row template.
setId(string $a_val)
setDefaultOrderDirection(string $a_defaultorderdirection)
setData(array $a_data)
Set table data.
setMaxCount(int $a_max_count)
set max.
This class represents a text property in a property form.
User query class.
TableGUI class for user administration.
fillRow(array $a_set)
Standard Version of Fill Row.
UserGUIRequest $user_request
ilRbacReview $rbac_review
addFilterItemByUdfType(ProfileField $field)
Add filter by standard type.
addFilterItemValue($filter, $value)
getSelectableColumns()
Get selectable columns.
buildUserFieldValue(string $key, array|string $value)
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
const USER_FOLDER_ID
Definition: constants.php:33
const SYSTEM_USER_ID
This file contains constants for PHPStan analyis, see: https://phpstan.org/config-reference#constants...
Definition: constants.php:26
$c
Definition: deliver.php:25
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
$ref_id
Definition: ltiauth.php:66
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
filter(string $filter_id, array $class_path, string $cmd, bool $activated=true, bool $expanded=true)
if(!file_exists('../ilias.ini.php'))
global $DIC
Definition: shib_login.php:26