ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
class.ilCourseParticipantsTableGUI.php
Go to the documentation of this file.
1<?php
2
3/* Copyright (c) 1998-2010 ILIAS open source, Extended GPL, see docs/LICENSE */
4
5include_once './Services/Membership/classes/class.ilParticipantsTableGUI.php';
14{
15 protected $show_learning_progress = false;
16 protected $show_timings = false;
17 protected $show_lp_status_sync = false;
18
19
27 public function __construct(
28 $a_parent_obj,
30 $a_show_learning_progress = false,
31 $a_show_timings = false,
32 $a_show_lp_status_sync = false
33 ) {
34 global $lng, $ilCtrl;
35
36 $this->show_learning_progress = $a_show_learning_progress;
37 if ($this->show_learning_progress) {
38 include_once './Services/Tracking/classes/class.ilLPStatus.php';
39 }
40
41 $this->show_timings = $a_show_timings;
42 $this->show_lp_status_sync = $a_show_lp_status_sync;
43
44 $this->rep_object = $rep_object;
45
46 // #13208
47 include_once("Services/Tracking/classes/class.ilObjUserTracking.php");
49 $this->show_lp_status_sync = false;
50 }
51
52 $this->lng = $lng;
53 $this->lng->loadLanguageModule('crs');
54 $this->lng->loadLanguageModule('trac');
55 $this->lng->loadLanguageModule('rbac');
56 $this->lng->loadLanguageModule('mmbr');
57
58 $this->ctrl = $ilCtrl;
59
60 include_once('./Services/PrivacySecurity/classes/class.ilPrivacySettings.php');
61 $this->privacy = ilPrivacySettings::_getInstance();
62
63 include_once './Services/Membership/classes/class.ilParticipants.php';
64 $this->participants = ilParticipants::getInstanceByObjId($this->getRepositoryObject()->getId());
65
66
67 // required before constructor for columns
68 $this->setId('crs_' . $this->getRepositoryObject()->getId());
69 parent::__construct($a_parent_obj, 'participants');
70
71 $this->initSettings();
72
73 $this->setFormName('participants');
74
75 $this->addColumn('', 'f', "1");
76 $this->addColumn($this->lng->txt('name'), 'name', '20%');
77
78 $all_cols = $this->getSelectableColumns();
79 foreach ($this->getSelectedColumns() as $col) {
80 $this->addColumn($all_cols[$col]['txt'], $col);
81 }
82
83 if ($this->show_learning_progress) {
84 $this->addColumn($this->lng->txt('learning_progress'), 'progress');
85 }
86
87 if ($this->privacy->enabledCourseAccessTimes()) {
88 $this->addColumn($this->lng->txt('last_access'), 'access_ut', '16em');
89 }
90
91 $this->addColumn($this->lng->txt('crs_member_passed'), 'passed');
92 if ($this->show_lp_status_sync) {
93 $this->addColumn($this->lng->txt('crs_member_passed_status_changed'), 'passed_info');
94 }
95
96
97 $this->setSelectAllCheckbox('participants');
98 $this->addColumn($this->lng->txt('crs_mem_contact'), 'contact');
99 $this->addColumn($this->lng->txt('crs_blocked'), 'blocked');
100 $this->addColumn($this->lng->txt('crs_notification_list_title'), 'notification');
101
102 $this->addColumn($this->lng->txt(''), 'optional');
103
104 $this->setRowTemplate("tpl.show_participants_row.html", "Modules/Course");
105
106 $this->setDefaultOrderField('roles');
107 $this->enable('sort');
108 $this->enable('header');
109 $this->enable('numinfo');
110 $this->enable('select_all');
111
112 $this->setEnableNumInfo(true);
113 $this->setExternalSegmentation(false);
114
115 $this->getItems();
116 $this->setTopCommands(true);
117 $this->setEnableHeader(true);
118 $this->setEnableTitle(true);
119 $this->initFilter();
120
121 $this->setShowRowsSelector(true);
122
123 include_once "Services/Certificate/classes/class.ilCertificate.php";
124 $this->enable_certificates = ilCertificate::isActive();
125 if ($this->enable_certificates) {
126 $this->enable_certificates = ilCertificate::isObjectActive($this->getRepositoryObject()->getId());
127 }
128 if ($this->enable_certificates) {
129 $lng->loadLanguageModule('certificate');
130 }
131
132 $this->addMultiCommand('editParticipants', $this->lng->txt('edit'));
133 $this->addMultiCommand('confirmDeleteParticipants', $this->lng->txt('remove'));
134 $this->addMultiCommand('sendMailToSelectedUsers', $this->lng->txt('mmbr_btn_mail_selected_users'));
135 $this->lng->loadLanguageModule('user');
136 $this->addMultiCommand('addToClipboard', $this->lng->txt('clipboard_add_btn'));
137
138 $this->addCommandButton('updateParticipantsStatus', $this->lng->txt('save'));
139 }
140
141
142
143 public function getItems()
144 {
145 }
146
147
155 public function fillRow($a_set)
156 {
157 global $ilAccess;
158
159 $this->tpl->setVariable('VAL_ID', $a_set['usr_id']);
160 $this->tpl->setVariable('VAL_NAME', $a_set['lastname'] . ', ' . $a_set['firstname']);
161
162 if (!$ilAccess->checkAccessOfUser($a_set['usr_id'], 'read', '', $this->getRepositoryObject()->getRefId()) and
163 is_array($info = $ilAccess->getInfo())) {
164 $this->tpl->setCurrentBlock('access_warning');
165 $this->tpl->setVariable('PARENT_ACCESS', $info[0]['text']);
166 $this->tpl->parseCurrentBlock();
167 }
168
169 if (!ilObjUser::_lookupActive($a_set['usr_id'])) {
170 $this->tpl->setCurrentBlock('access_warning');
171 $this->tpl->setVariable('PARENT_ACCESS', $this->lng->txt('usr_account_inactive'));
172 $this->tpl->parseCurrentBlock();
173 }
174
175 foreach ($this->getSelectedColumns() as $field) {
176 switch ($field) {
177 case 'gender':
178 $a_set['gender'] = $a_set['gender'] ? $this->lng->txt('gender_' . $a_set['gender']) : '';
179 $this->tpl->setCurrentBlock('custom_fields');
180 $this->tpl->setVariable('VAL_CUST', $a_set[$field]);
181 $this->tpl->parseCurrentBlock();
182 break;
183
184 case 'birthday':
185 $a_set['birthday'] = $a_set['birthday'] ? ilDatePresentation::formatDate(new ilDate($a_set['birthday'], IL_CAL_DATE)) : $this->lng->txt('no_date');
186 $this->tpl->setCurrentBlock('custom_fields');
187 $this->tpl->setVariable('VAL_CUST', $a_set[$field]);
188 $this->tpl->parseCurrentBlock();
189 break;
190
191 case 'consultation_hour':
192 $this->tpl->setCurrentBlock('custom_fields');
193 $dts = array();
194 foreach ((array) $a_set['consultation_hours'] as $ch) {
196 new ilDateTime($ch['dt'], IL_CAL_UNIX),
197 new ilDateTime($ch['dtend'], IL_CAL_UNIX)
198 );
199 if ($ch['explanation']) {
200 $tmp .= ' ' . $ch['explanation'];
201 }
202 $dts[] = $tmp;
203 }
204 $dt_string = implode('<br />', $dts);
205 $this->tpl->setVariable('VAL_CUST', $dt_string);
206 $this->tpl->parseCurrentBlock();
207 break;
208
209 case 'prtf':
210 $tmp = array();
211 if (is_array($a_set['prtf'])) {
212 foreach ($a_set['prtf'] as $prtf_url => $prtf_txt) {
213 $tmp[] = '<a href="' . $prtf_url . '">' . $prtf_txt . '</a>';
214 }
215 }
216 $this->tpl->setCurrentBlock('custom_fields');
217 $this->tpl->setVariable('VAL_CUST', (string) implode('<br />', $tmp)) ;
218 $this->tpl->parseCurrentBlock();
219 break;
220
221
222 case 'odf_last_update':
223 $this->tpl->setCurrentBlock('custom_fields');
224 $this->tpl->setVariable('VAL_CUST', (string) $a_set['odf_info_txt']);
225 $this->tpl->parseCurrentBlock();
226 break;
227
228 case 'roles':
229 $this->tpl->setCurrentBlock('custom_fields');
230 $this->tpl->setVariable('VAL_CUST', (string) $a_set['roles_label']);
231 $this->tpl->parseCurrentBlock();
232 break;
233
234 case 'org_units':
235 $this->tpl->setCurrentBlock('custom_fields');
236 include_once './Modules/OrgUnit/classes/PathStorage/class.ilOrgUnitPathStorage.php';
237 $this->tpl->setVariable('VAL_CUST', (string) ilOrgUnitPathStorage::getTextRepresentationOfUsersOrgUnits($a_set['usr_id']));
238 $this->tpl->parseCurrentBlock();
239 break;
240
241 default:
242 $this->tpl->setCurrentBlock('custom_fields');
243 $this->tpl->setVariable('VAL_CUST', isset($a_set[$field]) ? (string) $a_set[$field] : '');
244 $this->tpl->parseCurrentBlock();
245 break;
246 }
247 }
248
249 if ($this->privacy->enabledCourseAccessTimes()) {
250 $this->tpl->setVariable('VAL_ACCESS', $a_set['access_time']);
251 }
252 if ($this->show_learning_progress) {
253 $this->tpl->setCurrentBlock('lp');
254 switch ($a_set['progress']) {
256 $this->tpl->setVariable('LP_STATUS_ALT', $this->lng->txt($a_set['progress']));
257 $this->tpl->setVariable('LP_STATUS_PATH', ilUtil::getImagePath('scorm/complete.svg'));
258 break;
259
261 $this->tpl->setVariable('LP_STATUS_ALT', $this->lng->txt($a_set['progress']));
262 $this->tpl->setVariable('LP_STATUS_PATH', ilUtil::getImagePath('scorm/incomplete.svg'));
263 break;
264
266 $this->tpl->setVariable('LP_STATUS_ALT', $this->lng->txt($a_set['progress']));
267 $this->tpl->setVariable('LP_STATUS_PATH', ilUtil::getImagePath('scorm/not_attempted.svg'));
268 break;
269
271 $this->tpl->setVariable('LP_STATUS_ALT', $this->lng->txt($a_set['progress']));
272 $this->tpl->setVariable('LP_STATUS_PATH', ilUtil::getImagePath('scorm/failed.svg'));
273 break;
274 }
275 $this->tpl->parseCurrentBlock();
276 }
277
278 $this->tpl->setVariable('VAL_POSTNAME', 'participants');
279
280 if ($ilAccess->checkAccess("grade", "", $this->rep_object->getRefId())) {
281 $this->tpl->setCurrentBlock('grade');
282 $this->tpl->setVariable('VAL_PASSED_ID', $a_set['usr_id']);
283 $this->tpl->setVariable('VAL_PASSED_CHECKED', ($a_set['passed'] ? 'checked="checked"' : ''));
284 $this->tpl->parseCurrentBlock();
285 } else {
286 $this->tpl->setVariable('VAL_PASSED_TXT', ($a_set['passed']
287 ? $this->lng->txt("yes")
288 : $this->lng->txt("no")));
289 }
290
291 if (
292 $this->getParticipants()->isAdmin($a_set['usr_id']) ||
293 $this->getParticipants()->isTutor($a_set['usr_id'])
294 ) {
295 // cognos-blu-patch: begin
296 $this->tpl->setCurrentBlock('with_contact');
297 $this->tpl->setVariable('VAL_CONTACT_ID', $a_set['usr_id']);
298 $this->tpl->setVariable('VAL_CONTACT_CHECKED', $a_set['contact'] ? 'checked="checked"' : '');
299 $this->tpl->parseCurrentBlock();
300 // cognos-blu-patch: end
301
302 $this->tpl->setCurrentBlock('with_notification');
303 $this->tpl->setVariable('VAL_NOTIFICATION_ID', $a_set['usr_id']);
304 $this->tpl->setVariable('VAL_NOTIFICATION_CHECKED', ($a_set['notification'] ? 'checked="checked"' : ''));
305 $this->tpl->parseCurrentBlock();
306 }
307
308 // blocked only for real members
309 if (
310 !$this->getParticipants()->isAdmin($a_set['usr_id']) &&
311 !$this->getParticipants()->isTutor($a_set['usr_id'])
312 ) {
313 $this->tpl->setCurrentBlock('with_blocked');
314 $this->tpl->setVariable('VAL_BLOCKED_ID', $a_set['usr_id']);
315 $this->tpl->setVariable('VAL_BLOCKED_CHECKED', ($a_set['blocked'] ? 'checked="checked"' : ''));
316 $this->tpl->parseCurrentBlock();
317 }
318
319
320 if ($this->show_lp_status_sync) {
321 $this->tpl->setVariable('PASSED_INFO', $a_set["passed_info"]);
322 }
323
324 $this->showActionLinks($a_set);
325
326 if ($a_set['passed'] && $this->enable_certificates) {
327 $this->tpl->setCurrentBlock('link');
328 $this->tpl->setVariable('LINK_NAME', $this->ctrl->getLinkTarget($this->parent_obj, 'deliverCertificate'));
329 $this->tpl->setVariable('LINK_TXT', $this->lng->txt('download_certificate'));
330 $this->tpl->parseCurrentBlock();
331 }
332 $this->ctrl->clearParameters($this->parent_obj);
333
334 if ($this->show_timings) {
335 $this->ctrl->setParameterByClass('ilcoursecontentgui', 'member_id', $a_set['usr_id']);
336 $this->tpl->setCurrentBlock('link');
337 $this->tpl->setVariable('LINK_NAME', $this->ctrl->getLinkTargetByClass('ilcoursecontentgui', 'showUserTimings'));
338 $this->tpl->setVariable('LINK_TXT', $this->lng->txt('timings_timings'));
339 $this->tpl->parseCurrentBlock();
340 }
341 }
342
349 public function parse()
350 {
351 global $rbacreview;
352
353 $this->determineOffsetAndOrder(true);
354
355 include_once './Services/User/classes/class.ilUserQuery.php';
356
357 $additional_fields = $this->getSelectedColumns();
358 unset($additional_fields["firstname"]);
359 unset($additional_fields["lastname"]);
360 unset($additional_fields["last_login"]);
361 unset($additional_fields["access_until"]);
362 unset($additional_fields['consultation_hour']);
363 unset($additional_fields['prtf']);
364 unset($additional_fields['roles']);
365 unset($additional_fields['org_units']);
366
367 $part = $this->participants->getParticipants();
368
369 $part = $GLOBALS['DIC']->access()->filterUserIdsByRbacOrPositionOfCurrentUser(
370 'manage_members',
371 'manage_members',
372 $this->getRepositoryObject()->getRefId(),
373 $part
374 );
375
376
377 if (!$part) {
378 $this->setData(array());
379 return;
380 }
381
382 $udf_ids = $usr_data_fields = $odf_ids = array();
383 foreach ($additional_fields as $field) {
384 if (substr($field, 0, 3) == 'udf') {
385 $udf_ids[] = substr($field, 4);
386 continue;
387 }
388 if (substr($field, 0, 3) == 'odf') {
389 $odf_ids[] = substr($field, 4);
390 continue;
391 }
392
393 $usr_data_fields[] = $field;
394 }
395
397 '',
398 '',
399 0,
400 9999,
401 $this->current_filter['login'],
402 '',
403 null,
404 false,
405 false,
406 0,
407 0,
408 null,
409 $usr_data_fields,
410 $part
411 );
412 // filter by array
413 $usr_ids = array();
414 $local_roles = $this->getParentObject()->getLocalRoles();
415 foreach ((array) $usr_data['set'] as $user) {
416 if ($this->current_filter['roles']) {
417 if (!$GLOBALS['rbacreview']->isAssigned($user['usr_id'], $this->current_filter['roles'])) {
418 continue;
419 }
420 }
421 if ($this->current_filter['org_units']) {
422 $org_unit = $this->current_filter['org_units'];
423
424 include_once './Modules/OrgUnit/classes/class.ilObjOrgUnitTree.php';
425 $assigned = ilObjOrgUnitTree::_getInstance()->getOrgUnitOfUser($user['usr_id']);
426 if (!in_array($org_unit, $assigned)) {
427 continue;
428 }
429 }
430
431
432 $usr_ids[] = $user['usr_id'];
433 }
434
435 // merge course data
436 $course_user_data = $this->getParentObject()->readMemberData(
437 $usr_ids,
438 $this->getSelectedColumns()
439 );
440 $a_user_data = array();
441 foreach ((array) $usr_data['set'] as $ud) {
442 $user_id = $ud['usr_id'];
443
444 if (!in_array($user_id, $usr_ids)) {
445 continue;
446 }
447 // #15434
448 if (!$this->checkAcceptance($user_id)) {
449 $ud = array();
450 }
451
452 $a_user_data[$user_id] = array_merge($ud, $course_user_data[$user_id]);
453
454
455 $roles = array();
456 foreach ($local_roles as $role_id => $role_name) {
457 // @todo fix performance
458 if ($GLOBALS['rbacreview']->isAssigned($user_id, $role_id)) {
459 $roles[] = $role_name;
460 }
461 }
462
463 $a_user_data[$user_id]['name'] = ($a_user_data[$user_id]['lastname'] . ', ' . $a_user_data[$user_id]['firstname']);
464 $a_user_data[$user_id]['roles_label'] = implode('<br />', $roles);
465 $a_user_data[$user_id]['roles'] = $this->participants->setRoleOrderPosition($user_id);
466
467
468 if ($this->show_lp_status_sync) {
469 // #9912 / #13208
470 $passed_info = "";
471 if ($a_user_data[$user_id]["passed_info"]) {
472 $pinfo = $a_user_data[$user_id]["passed_info"];
473 if ($pinfo["user_id"]) {
474 if ($pinfo["user_id"] < 0) {
475 $passed_info = $this->lng->txt("crs_passed_status_system");
476 } elseif ($pinfo["user_id"] > 0) {
477 $name = ilObjUser::_lookupName($pinfo["user_id"]);
478 $passed_info = $this->lng->txt("crs_passed_status_manual_by") . ": " . $name["login"];
479 }
480 }
481 if ($pinfo["timestamp"]) {
482 $passed_info .= "<br />" . ilDatePresentation::formatDate($pinfo["timestamp"]);
483 }
484 }
485 $a_user_data[$user_id]["passed_info"] = $passed_info;
486 }
487 }
488
489 // Custom user data fields
490 if ($udf_ids) {
491 include_once './Services/User/classes/class.ilUserDefinedData.php';
492 $data = ilUserDefinedData::lookupData($usr_ids, $udf_ids);
493 foreach ($data as $usr_id => $fields) {
494 if (!$this->checkAcceptance($usr_id)) {
495 continue;
496 }
497
498 foreach ($fields as $field_id => $value) {
499 $a_user_data[$usr_id]['udf_' . $field_id] = $value;
500 }
501 }
502 }
503 // Object specific user data fields
504 if ($odf_ids) {
505 include_once './Modules/Course/classes/Export/class.ilCourseUserData.php';
507 foreach ($data as $usr_id => $fields) {
508 // #7264: as we get data for all course members filter against user data
509 if (!$this->checkAcceptance($usr_id) || !in_array($usr_id, $usr_ids)) {
510 continue;
511 }
512
513 foreach ($fields as $field_id => $value) {
514 $a_user_data[$usr_id]['odf_' . $field_id] = $value;
515 }
516 }
517
518
519 // add last edit date
520 include_once './Services/Membership/classes/class.ilObjectCustomUserFieldHistory.php';
521 foreach (ilObjectCustomUserFieldHistory::lookupEntriesByObjectId($this->getRepositoryObject()->getId()) as $usr_id => $edit_info) {
522 if (!isset($a_user_data[$usr_id])) {
523 continue;
524 }
525
526 include_once './Services/PrivacySecurity/classes/class.ilPrivacySettings.php';
527 if ($usr_id == $edit_info['update_user']) {
528 $a_user_data[$usr_id]['odf_last_update'] = '';
529 $a_user_data[$usr_id]['odf_info_txt'] = $GLOBALS['lng']->txt('cdf_edited_by_self');
530 if (ilPrivacySettings::_getInstance()->enabledAccessTimesByType($this->getRepositoryObject()->getType())) {
531 $a_user_data[$usr_id]['odf_last_update'] .= ('_' . $edit_info['editing_time']->get(IL_CAL_UNIX));
532 $a_user_data[$usr_id]['odf_info_txt'] .= (', ' . ilDatePresentation::formatDate($edit_info['editing_time']));
533 }
534 } else {
535 $a_user_data[$usr_id]['odf_last_update'] = $edit_info['update_user'];
536 $a_user_data[$usr_id]['odf_last_update'] .= ('_' . $edit_info['editing_time']->get(IL_CAL_UNIX));
537
538 $name = ilObjUser::_lookupName($edit_info['update_user']);
539 $a_user_data[$usr_id]['odf_info_txt'] = ($name['firstname'] . ' ' . $name['lastname'] . ', ' . ilDatePresentation::formatDate($edit_info['editing_time']));
540 }
541 }
542 }
543
544 // consultation hours
545 if ($this->isColumnSelected('consultation_hour')) {
546 include_once './Services/Booking/classes/class.ilBookingEntry.php';
547 foreach (ilBookingEntry::lookupManagedBookingsForObject($this->getRepositoryObject()->getId(), $GLOBALS['ilUser']->getId()) as $buser => $booking) {
548 if (isset($a_user_data[$buser])) {
549 $a_user_data[$buser]['consultation_hour'] = $booking[0]['dt'];
550 $a_user_data[$buser]['consultation_hour_end'] = $booking[0]['dtend'];
551 $a_user_data[$buser]['consultation_hours'] = $booking;
552 }
553 }
554 }
555
556 // always sort by name first
557 $a_user_data = ilUtil::sortArray(
558 $a_user_data,
559 'name',
560 $this->getOrderDirection()
561 );
562
563 return $this->setData($a_user_data);
564 }
565}
An exception for terminatinating execution or to throw for unit testing.
const IL_CAL_DATE
const IL_CAL_UNIX
static lookupManagedBookingsForObject($a_obj_id, $a_usr_id)
Lookup bookings for own and managed consultation hours of an object.
static isObjectActive($a_obj_id)
__construct( $a_parent_obj, ilObject $rep_object, $a_show_learning_progress=false, $a_show_timings=false, $a_show_lp_status_sync=false)
Constructor.
static _getValuesByObjId($a_obj_id)
Get values by obj_id (for all users)
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false)
Format a date @access public.
static formatPeriod(ilDateTime $start, ilDateTime $end, $a_skip_starting_day=false)
Format a period of two date Shows: 14.
@classDescription Date and time handling
Class for single dates.
const LP_STATUS_COMPLETED
const LP_STATUS_FAILED
const LP_STATUS_NOT_ATTEMPTED
const LP_STATUS_IN_PROGRESS
static _enabledLearningProgress()
check wether learing progress is enabled or not
static _lookupName($a_user_id)
lookup user name
static _lookupActive($a_usr_id)
Check user account active.
static lookupEntriesByObjectId($a_obj_id)
Get entries by obj_id @global type $ilDB.
Class ilObject Basic functions for all objects.
getSelectableColumns()
Get selectable columns.
showActionLinks($a_set)
show edit links
checkAcceptance($a_usr_id)
Check acceptance.
static getInstanceByObjId($a_obj_id)
Get instance by obj type.
static _getInstance()
Get instance of ilPrivacySettings.
getSelectedColumns()
Get selected columns.
setTopCommands($a_val)
Set top commands (display command buttons on top of table, too)
setEnableHeader($a_enableheader)
Set Enable Header.
setShowRowsSelector($a_value)
Toggle rows-per-page selector.
getParentObject()
Get parent object.
determineOffsetAndOrder($a_omit_offset=false)
Determine offset and order.
getId()
Get element id.
setData($a_data)
set table data @access public
setEnableTitle($a_enabletitle)
Set Enable Title.
setEnableNumInfo($a_val)
Set enable num info.
setRowTemplate($a_template, $a_template_dir="")
Set row template.
addMultiCommand($a_cmd, $a_text)
Add Command button.
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
setSelectAllCheckbox($a_select_all_checkbox)
Set the name of the checkbox that should be toggled with a select all button.
addColumn( $a_text, $a_sort_field="", $a_width="", $a_is_checkbox_action_column=false, $a_class="", $a_tooltip="", $a_tooltip_with_html=false)
Add a column to the header.
setExternalSegmentation($a_val)
Set external segmentation.
setId($a_val)
Set id.
setFormName($a_formname="")
Set Form name.
isColumnSelected($a_col)
Is given column selected?
addCommandButton($a_cmd, $a_text, $a_onclick='', $a_id="", $a_class=null)
Add Command button.
getOrderDirection()
Get order direction.
enable($a_module_name)
enables particular modules of table
static lookupData($a_user_ids, $a_field_ids)
Lookup data.
static getUserListData( $a_order_field, $a_order_dir, $a_offset, $a_limit, $a_string_filter="", $a_activation_filter="", $a_last_login_filter=null, $a_limited_access_filter=false, $a_no_courses_filter=false, $a_course_group_filter=0, $a_role_filter=0, $a_user_folder_filter=null, $a_additional_fields='', $a_user_filter=null, $a_first_letter="", $a_authentication_filter=null)
Get data for user administration list.
static sortArray( $array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
$GLOBALS['loaded']
Global hash that tracks already loaded includes.
global $ilCtrl
Definition: ilias.php:18
if($format !==null) $name
Definition: metadata.php:146
$info
Definition: index.php:5