5 include_once
'./Services/Membership/classes/class.ilParticipantsTableGUI.php';
39 $a_show_learning_progress =
false,
40 $a_show_timings =
false,
41 $a_show_lp_status_sync =
false,
49 $this->show_learning_progress = $a_show_learning_progress;
50 if ($this->show_learning_progress) {
51 include_once
'./Services/Tracking/classes/class.ilLPStatus.php';
54 if (null === $preloader) {
57 $this->preLoader = $preloader;
59 $this->show_timings = $a_show_timings;
60 $this->show_lp_status_sync = $a_show_lp_status_sync;
65 include_once(
"Services/Tracking/classes/class.ilObjUserTracking.php");
67 $this->show_lp_status_sync =
false;
71 $this->lng->loadLanguageModule(
'crs');
72 $this->lng->loadLanguageModule(
'trac');
73 $this->lng->loadLanguageModule(
'rbac');
74 $this->lng->loadLanguageModule(
'mmbr');
75 $this->lng->loadLanguageModule(
'cert');
79 include_once(
'./Services/PrivacySecurity/classes/class.ilPrivacySettings.php');
82 include_once
'./Services/Membership/classes/class.ilParticipants.php';
88 parent::__construct($a_parent_obj,
'participants');
95 $this->
addColumn($this->lng->txt(
'name'),
'name',
'20%');
99 $this->
addColumn($all_cols[$col][
'txt'], $col);
102 if ($this->show_learning_progress) {
103 $this->
addColumn($this->lng->txt(
'learning_progress'),
'progress');
106 if ($this->privacy->enabledCourseAccessTimes()) {
107 $this->
addColumn($this->lng->txt(
'last_access'),
'access_ut',
'16em');
110 $this->
addColumn($this->lng->txt(
'crs_member_passed'),
'passed');
111 if ($this->show_lp_status_sync) {
112 $this->
addColumn($this->lng->txt(
'crs_member_passed_status_changed'),
'passed_info');
117 $this->
addColumn($this->lng->txt(
'crs_mem_contact'),
'contact');
118 $this->
addColumn($this->lng->txt(
'crs_blocked'),
'blocked');
119 $this->
addColumn($this->lng->txt(
'crs_notification_list_title'),
'notification');
121 $this->
addColumn($this->lng->txt(
''),
'optional');
123 $this->
setRowTemplate(
"tpl.show_participants_row.html",
"Modules/Course");
129 $this->
enable(
'select_all');
144 $lng->loadLanguageModule(
'certificate');
147 $this->
addMultiCommand(
'confirmDeleteParticipants', $this->lng->txt(
'remove'));
148 $this->
addMultiCommand(
'sendMailToSelectedUsers', $this->lng->txt(
'mmbr_btn_mail_selected_users'));
149 $this->lng->loadLanguageModule(
'user');
150 $this->
addMultiCommand(
'addToClipboard', $this->lng->txt(
'clipboard_add_btn'));
152 $this->
addCommandButton(
'updateParticipantsStatus', $this->lng->txt(
'save'));
173 $ilAccess = $DIC[
'ilAccess'];
175 $this->tpl->setVariable(
'VAL_ID', $a_set[
'usr_id']);
176 $this->tpl->setVariable(
'VAL_NAME', $a_set[
'lastname'] .
', ' . $a_set[
'firstname']);
178 if (!$ilAccess->checkAccessOfUser($a_set[
'usr_id'],
'read',
'', $this->getRepositoryObject()->getRefId())
and 179 is_array(
$info = $ilAccess->getInfo())) {
180 $this->tpl->setCurrentBlock(
'access_warning');
181 $this->tpl->setVariable(
'PARENT_ACCESS',
$info[0][
'text']);
182 $this->tpl->parseCurrentBlock();
186 $this->tpl->setCurrentBlock(
'access_warning');
187 $this->tpl->setVariable(
'PARENT_ACCESS', $this->lng->txt(
'usr_account_inactive'));
188 $this->tpl->parseCurrentBlock();
194 $a_set[
'gender'] = $a_set[
'gender'] ? $this->lng->txt(
'gender_' . $a_set[
'gender']) :
'';
195 $this->tpl->setCurrentBlock(
'custom_fields');
196 $this->tpl->setVariable(
'VAL_CUST', $a_set[$field]);
197 $this->tpl->parseCurrentBlock();
202 $this->tpl->setCurrentBlock(
'custom_fields');
203 $this->tpl->setVariable(
'VAL_CUST', $a_set[$field]);
204 $this->tpl->parseCurrentBlock();
207 case 'consultation_hour':
208 $this->tpl->setCurrentBlock(
'custom_fields');
210 foreach ((array) $a_set[
'consultation_hours'] as $ch) {
215 if ($ch[
'explanation']) {
216 $tmp .=
' ' . $ch[
'explanation'];
220 $dt_string = implode(
'<br />', $dts);
221 $this->tpl->setVariable(
'VAL_CUST', $dt_string);
222 $this->tpl->parseCurrentBlock();
227 if (is_array($a_set[
'prtf'])) {
228 foreach ($a_set[
'prtf'] as $prtf_url => $prtf_txt) {
229 $tmp[] =
'<a href="' . $prtf_url .
'">' . $prtf_txt .
'</a>';
232 $this->tpl->setCurrentBlock(
'custom_fields');
233 $this->tpl->setVariable(
'VAL_CUST', (
string) implode(
'<br />', $tmp)) ;
234 $this->tpl->parseCurrentBlock();
238 case 'odf_last_update':
239 $this->tpl->setCurrentBlock(
'custom_fields');
240 $this->tpl->setVariable(
'VAL_CUST', (
string) $a_set[
'odf_info_txt']);
241 $this->tpl->parseCurrentBlock();
245 $this->tpl->setCurrentBlock(
'custom_fields');
246 $this->tpl->setVariable(
'VAL_CUST', (
string) $a_set[
'roles_label']);
247 $this->tpl->parseCurrentBlock();
251 $this->tpl->setCurrentBlock(
'custom_fields');
252 include_once
'./Modules/OrgUnit/classes/PathStorage/class.ilOrgUnitPathStorage.php';
253 $this->tpl->setVariable(
'VAL_CUST', (
string) ilOrgUnitPathStorage::getTextRepresentationOfUsersOrgUnits($a_set[
'usr_id']));
254 $this->tpl->parseCurrentBlock();
258 $this->tpl->setCurrentBlock(
'custom_fields');
259 $this->tpl->setVariable(
'VAL_CUST', isset($a_set[$field]) ? (
string) $a_set[$field] :
'');
260 $this->tpl->parseCurrentBlock();
265 if ($this->privacy->enabledCourseAccessTimes()) {
266 $this->tpl->setVariable(
'VAL_ACCESS', $a_set[
'access_time']);
268 if ($this->show_learning_progress) {
269 $this->tpl->setCurrentBlock(
'lp');
270 switch ($a_set[
'progress']) {
272 $this->tpl->setVariable(
'LP_STATUS_ALT', $this->lng->txt($a_set[
'progress']));
277 $this->tpl->setVariable(
'LP_STATUS_ALT', $this->lng->txt($a_set[
'progress']));
282 $this->tpl->setVariable(
'LP_STATUS_ALT', $this->lng->txt($a_set[
'progress']));
287 $this->tpl->setVariable(
'LP_STATUS_ALT', $this->lng->txt($a_set[
'progress']));
291 $this->tpl->parseCurrentBlock();
294 $this->tpl->setVariable(
'VAL_POSTNAME',
'participants');
296 if ($ilAccess->checkAccess(
"grade",
"", $this->rep_object->getRefId())) {
297 $this->tpl->setCurrentBlock(
'grade');
298 $this->tpl->setVariable(
'VAL_PASSED_ID', $a_set[
'usr_id']);
299 $this->tpl->setVariable(
'VAL_PASSED_CHECKED', ($a_set[
'passed'] ?
'checked="checked"' :
''));
300 $this->tpl->parseCurrentBlock();
302 $this->tpl->setVariable(
'VAL_PASSED_TXT', ($a_set[
'passed']
303 ? $this->lng->txt(
"yes")
304 : $this->lng->txt(
"no")));
312 $this->tpl->setCurrentBlock(
'with_contact');
313 $this->tpl->setVariable(
'VAL_CONTACT_ID', $a_set[
'usr_id']);
314 $this->tpl->setVariable(
'VAL_CONTACT_CHECKED', $a_set[
'contact'] ?
'checked="checked"' :
'');
315 $this->tpl->parseCurrentBlock();
318 $this->tpl->setCurrentBlock(
'with_notification');
319 $this->tpl->setVariable(
'VAL_NOTIFICATION_ID', $a_set[
'usr_id']);
320 $this->tpl->setVariable(
'VAL_NOTIFICATION_CHECKED', ($a_set[
'notification'] ?
'checked="checked"' :
''));
321 $this->tpl->parseCurrentBlock();
329 $this->tpl->setCurrentBlock(
'with_blocked');
330 $this->tpl->setVariable(
'VAL_BLOCKED_ID', $a_set[
'usr_id']);
331 $this->tpl->setVariable(
'VAL_BLOCKED_CHECKED', ($a_set[
'blocked'] ?
'checked="checked"' :
''));
332 $this->tpl->parseCurrentBlock();
336 if ($this->show_lp_status_sync) {
337 $this->tpl->setVariable(
'PASSED_INFO', $a_set[
"passed_info"]);
343 if (
true === $isPreloaded) {
344 $this->tpl->setCurrentBlock(
'link');
345 $this->tpl->setVariable(
'LINK_NAME', $this->ctrl->getLinkTarget($this->parent_obj,
'deliverCertificate'));
346 $this->tpl->setVariable(
'LINK_TXT', $this->lng->txt(
'download_certificate'));
347 $this->tpl->parseCurrentBlock();
349 $this->ctrl->clearParameters($this->parent_obj);
351 if ($this->show_timings) {
352 $this->ctrl->setParameterByClass(
'ilcoursecontentgui',
'member_id', $a_set[
'usr_id']);
353 $this->tpl->setCurrentBlock(
'link');
354 $this->tpl->setVariable(
'LINK_NAME', $this->ctrl->getLinkTargetByClass(
'ilcoursecontentgui',
'showUserTimings'));
355 $this->tpl->setVariable(
'LINK_TXT', $this->lng->txt(
'timings_timings'));
356 $this->tpl->parseCurrentBlock();
370 $rbacreview = $DIC[
'rbacreview'];
374 include_once
'./Services/User/classes/class.ilUserQuery.php';
377 unset($additional_fields[
"firstname"]);
378 unset($additional_fields[
"lastname"]);
379 unset($additional_fields[
"last_login"]);
380 unset($additional_fields[
"access_until"]);
381 unset($additional_fields[
'consultation_hour']);
382 unset($additional_fields[
'prtf']);
383 unset($additional_fields[
'roles']);
384 unset($additional_fields[
'org_units']);
386 $part = $this->participants->getParticipants();
388 $part =
$GLOBALS[
'DIC']->access()->filterUserIdsByRbacOrPositionOfCurrentUser(
401 $udf_ids = $usr_data_fields = $odf_ids = array();
402 foreach ($additional_fields as $field) {
403 if (substr($field, 0, 3) ==
'udf') {
404 $udf_ids[] = substr($field, 4);
407 if (substr($field, 0, 3) ==
'odf') {
408 $odf_ids[] = substr($field, 4);
412 $usr_data_fields[] = $field;
420 $this->current_filter[
'login'],
434 foreach ((array) $usr_data[
'set'] as
$user) {
435 if ($this->current_filter[
'roles']) {
436 if (!
$GLOBALS[
'DIC'][
'rbacreview']->isAssigned($user[
'usr_id'], $this->current_filter[
'roles'])) {
440 if ($this->current_filter[
'org_units']) {
441 $org_unit = $this->current_filter[
'org_units'];
443 include_once
'./Modules/OrgUnit/classes/class.ilObjOrgUnitTree.php';
445 if (!in_array($org_unit, $assigned)) {
451 $usr_ids[] = $user[
'usr_id'];
459 $a_user_data = array();
460 foreach ((array) $usr_data[
'set'] as $ud) {
461 $user_id = $ud[
'usr_id'];
463 if (!in_array($user_id, $usr_ids)) {
471 $a_user_data[$user_id] = array_merge($ud, $course_user_data[$user_id]);
475 foreach ($local_roles as $role_id => $role_name) {
477 if (
$GLOBALS[
'DIC'][
'rbacreview']->isAssigned($user_id, $role_id)) {
478 $roles[] = $role_name;
482 $a_user_data[$user_id][
'name'] = ($a_user_data[$user_id][
'lastname'] .
', ' . $a_user_data[$user_id][
'firstname']);
483 $a_user_data[$user_id][
'roles_label'] = implode(
'<br />', $roles);
484 $a_user_data[$user_id][
'roles'] = $this->participants->setRoleOrderPosition($user_id);
487 if ($this->show_lp_status_sync) {
490 if ($a_user_data[$user_id][
"passed_info"]) {
491 $pinfo = $a_user_data[$user_id][
"passed_info"];
492 if ($pinfo[
"user_id"]) {
493 if ($pinfo[
"user_id"] < 0) {
494 $passed_info = $this->lng->txt(
"crs_passed_status_system");
495 } elseif ($pinfo[
"user_id"] > 0) {
497 $passed_info = $this->lng->txt(
"crs_passed_status_manual_by") .
": " .
$name[
"login"];
500 if ($pinfo[
"timestamp"]) {
504 $a_user_data[$user_id][
"passed_info"] = $passed_info;
510 include_once
'./Services/User/classes/class.ilUserDefinedData.php';
512 foreach (
$data as $usr_id => $fields) {
517 foreach ($fields as $field_id => $value) {
518 $a_user_data[$usr_id][
'udf_' . $field_id] = $value;
524 include_once
'./Modules/Course/classes/Export/class.ilCourseUserData.php';
526 foreach (
$data as $usr_id => $fields) {
528 if (!$this->
checkAcceptance($usr_id) || !in_array($usr_id, $usr_ids)) {
532 foreach ($fields as $field_id => $value) {
533 $a_user_data[$usr_id][
'odf_' . $field_id] = $value;
539 include_once
'./Services/Membership/classes/class.ilObjectCustomUserFieldHistory.php';
541 if (!isset($a_user_data[$usr_id])) {
545 include_once
'./Services/PrivacySecurity/classes/class.ilPrivacySettings.php';
546 if ($usr_id == $edit_info[
'update_user']) {
547 $a_user_data[$usr_id][
'odf_last_update'] =
'';
548 $a_user_data[$usr_id][
'odf_info_txt'] =
$GLOBALS[
'DIC'][
'lng']->txt(
'cdf_edited_by_self');
550 $a_user_data[$usr_id][
'odf_last_update'] .= (
'_' . $edit_info[
'editing_time']->get(
IL_CAL_UNIX));
554 $a_user_data[$usr_id][
'odf_last_update'] = $edit_info[
'update_user'];
555 $a_user_data[$usr_id][
'odf_last_update'] .= (
'_' . $edit_info[
'editing_time']->get(
IL_CAL_UNIX));
565 include_once
'./Services/Booking/classes/class.ilBookingEntry.php';
567 if (isset($a_user_data[$buser])) {
568 $a_user_data[$buser][
'consultation_hour'] = $booking[0][
'dt'];
569 $a_user_data[$buser][
'consultation_hour_end'] = $booking[0][
'dtend'];
570 $a_user_data[$buser][
'consultation_hours'] = $booking;
582 return $this->
setData($a_user_data);
showActionLinks($a_set)
show edit links
addCommandButton($a_cmd, $a_text, $a_onclick='', $a_id="", $a_class=null)
Add Command button.
static sortArray( $array, $a_array_sortby, $a_array_sortorder=0, $a_numeric=false, $a_keep_keys=false)
sortArray
static _lookupName($a_user_id)
lookup user name
setDefaultOrderField($a_defaultorderfield)
Set Default order field.
getParticipants()
Get participants.
static lookupManagedBookingsForObject($a_obj_id, $a_usr_id)
Lookup bookings for own and managed consultation hours of an object.
setEnableNumInfo($a_val)
Set enable num info.
static _getValuesByObjId($a_obj_id)
Get values by obj_id (for all users)
const LP_STATUS_NOT_ATTEMPTED
setExternalSegmentation($a_val)
Set external segmentation.
__construct( $a_parent_obj, ilObject $rep_object, $a_show_learning_progress=false, $a_show_timings=false, $a_show_lp_status_sync=false, ilCertificateUserForObjectPreloader $preloader=null)
Constructor.
getOrderDirection()
Get order direction.
initSettings()
Init acceptance.
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date public.
getParentObject()
Get parent object.
const LP_STATUS_IN_PROGRESS
static lookupData($a_user_ids, $a_field_ids)
Lookup data.
initFilter()
Init table filter.
static _enabledLearningProgress()
check wether learing progress is enabled or not
setTopCommands($a_val)
Set top commands (display command buttons on top of table, too)
setSelectAllCheckbox($a_select_all_checkbox, $a_select_all_on_top=false)
Set the name of the checkbox that should be toggled with a select all button.
static getImagePath($img, $module_path="", $mode="output", $offline=false)
get image path (for images located in a template directory)
addMultiCommand($a_cmd, $a_text)
Add Command button.
enable($a_module_name)
enables particular modules of table
getSelectedColumns()
Get selected columns.
setRowTemplate($a_template, $a_template_dir="")
Set row template.
getSelectableColumns()
Get selectable columns.
isColumnSelected($a_col)
Is given column selected?
determineOffsetAndOrder($a_omit_offset=false)
Determine offset and order.
static formatPeriod(ilDateTime $start, ilDateTime $end, $a_skip_starting_day=false)
Format a period of two date Shows: 14.
setFormName($a_formname="")
Set Form name.
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.
setShowRowsSelector($a_value)
Toggle rows-per-page selector.
setEnableHeader($a_enableheader)
Set Enable Header.
checkAcceptance($a_usr_id)
Check acceptance.
static _lookupActive($a_usr_id)
Check user account active.
static _getInstance()
Get instance of ilPrivacySettings.
setEnableTitle($a_enabletitle)
Set Enable Title.
const LP_STATUS_COMPLETED
static lookupEntriesByObjectId($a_obj_id)
Get entries by obj_id type $ilDB.
static getInstanceByObjId($a_obj_id)
Get instance by obj type.
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.
$GLOBALS['JPEG_Segment_Names']
Global Variable: XMP_tag_captions.