18 declare(strict_types=1);
53 $this->repository_object = $repository_obj;
55 $this->
lng = $DIC->language();
56 $this->
lng->loadLanguageModule(
'crs');
58 $this->tpl = $DIC->ui()->mainTemplate();
59 $this->
ctrl = $DIC->ctrl();
60 $this->
lng->loadLanguageModule(
'trac');
61 $this->
logger = $DIC->logger()->mmbr();
62 $this->
access = $DIC->access();
63 $this->
user = $DIC->user();
64 $this->error = $DIC[
'ilErr'];
65 $this->
tabs = $DIC->tabs();
66 $this->
toolbar = $DIC->toolbar();
67 $this->rbacsystem = $DIC->rbac()->system();
68 $this->rbacreview = $DIC->rbac()->review();
69 $this->tree = $DIC->repositoryTree();
70 $this->
http = $DIC->http();
79 if ($this->
http->wrapper()->post()->has(
'participants')) {
80 return $this->
http->wrapper()->post()->retrieve(
92 if ($this->
http->wrapper()->query()->has(
'member_id')) {
93 return $this->
http->wrapper()->query()->retrieve(
103 if ($this->
http->wrapper()->post()->has(
'subscribers')) {
104 return $this->
http->wrapper()->post()->retrieve(
106 $this->
refinery->kindlyTo()->listOf(
116 if ($this->
http->wrapper()->post()->has(
'waiting')) {
117 return $this->
http->wrapper()->post()->retrieve(
119 $this->
refinery->kindlyTo()->listOf(
166 string $a_permission,
171 if ($a_ref_id === 0) {
174 return $this->
access->checkAccess($a_permission, $a_cmd, $a_ref_id);
182 if ($a_ref_id === 0) {
185 return $this->
access->checkRbacOrPositionPermissionAccess($a_rbac_perm, $a_pos_perm, $a_ref_id);
195 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'no_permission'),
true);
206 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'no_permission'),
true);
231 $cmd = $this->
ctrl->getCmd(
'participants');
232 $next_class = $this->
ctrl->getNextClass();
234 switch ($next_class) {
235 case 'ilrepositorysearchgui':
240 $rep_search->addUserAccessFilterCallable([$this,
'filterUserIdsByRbacOrPositionOfCurrentUser']);
244 $participants->
isAdmin($this->user->getId()) ||
245 $this->
access->checkAccess(
'manage_members',
'', $this->getParentObject()->getRefId())
247 $rep_search->setCallback(
255 $rep_search->setCallback(
264 $this->
ctrl->setReturn($this,
'participants');
265 $ret = $this->
ctrl->forwardCommand($rep_search);
268 case 'ilmailmembersearchgui':
269 $this->
tabs->clearTargets();
270 $this->
tabs->setBackTarget(
271 $this->
lng->txt(
'btn_back'),
278 $this->
access->checkAccess(
'manage_members',
"", $this->getParentObject()->getRefId())
280 !$this->rbacsystem->checkAccess(
282 $mail->getMailObjectReferenceId()
284 $this->error->raiseError($this->
lng->txt(
"msg_no_perm_read"), $this->error->MESSAGE);
292 $mail_search->setObjParticipants(
295 $this->
ctrl->forwardCommand($mail_search);
298 case 'ilusersgallerygui':
301 $this->
tabs->setSubTabActive(
316 $this->error->raiseError($this->
lng->txt(
'msg_no_perm_read'), $this->error->MESSAGE);
324 $this->
ctrl->forwardCommand($gallery_gui);
327 case 'ilcourseparticipantsgroupsgui':
333 if ($cmd ===
"show" || $cmd =
"") {
336 $this->
ctrl->forwardCommand($cmg_gui);
339 case 'ilsessionoverviewgui':
347 $this->
ctrl->forwardCommand($overview);
350 case 'ilmemberexportgui':
356 $this->
ctrl->forwardCommand($export);
359 case 'ilobjectcustomuserfieldsgui':
364 $this->
ctrl->setReturn($this,
'participants');
366 $this->
ctrl->forwardCommand($cdf_gui);
373 $cmd ===
"mailMembersBtn" ||
374 $cmd ===
'membersMap' ||
375 $cmd ===
'printForMembersOutput' ||
376 $cmd ===
'jump2UsersGallery' 392 $this->initParticipantTemplate();
399 $this->tpl->setVariable(
'TABLE_WAIT', $waiting->getHTML());
405 $this->tpl->setVariable(
'TABLE_SUB', $subscriber->getHTML());
409 $table = $this->initParticipantTableGUI();
411 $table->setFormAction($this->
ctrl->getFormAction($this));
415 $table->setFilterCommand(
'participantsApplyFilter');
416 $table->setResetCommand(
'participantsResetFilter');
418 $this->tpl->setVariable(
'MEMBERS', $table->getHTML());
436 $table = $this->initParticipantTableGUI();
437 $table->resetOffset();
438 $table->writeFilterToSession();
448 $table = $this->initParticipantTableGUI();
449 $table->resetOffset();
450 $table->resetFilter();
470 if (!$post_participants) {
475 $participants = array_intersect($post_participants, $real_participants);
477 if (!count($participants)) {
478 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'no_checkbox'),
true);
479 $this->
ctrl->redirect($this,
'participants');
481 $table = $this->initEditParticipantTableGUI($participants);
482 $this->tpl->setContent($table->getHTML());
491 if (!count($participants)) {
492 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'no_checkbox'),
true);
493 $this->
ctrl->redirect($this,
'participants');
495 $notifications = $passed = $blocked = $contact = [];
496 if ($this->
http->wrapper()->post()->has(
'notification')) {
497 $notifications = $this->
http->wrapper()->post()->retrieve(
499 $this->
refinery->kindlyTo()->listOf(
504 if ($this->
http->wrapper()->post()->has(
'passed')) {
505 $passed = $this->
http->wrapper()->post()->retrieve(
507 $this->
refinery->kindlyTo()->listOf(
512 if ($this->
http->wrapper()->post()->has(
'blocked')) {
513 $blocked = $this->
http->wrapper()->post()->retrieve(
515 $this->
refinery->kindlyTo()->listOf(
520 if ($this->
http->wrapper()->post()->has(
'contact')) {
521 $contact = $this->
http->wrapper()->post()->retrieve(
523 $this->
refinery->kindlyTo()->listOf(
530 $hasEditPermissionAccess =
538 $assignableLocalRoles = array();
540 foreach ($this->getLocalTypeRole(
false) as $title => $role_id) {
541 $assignableLocalRoles[$role_id] = $title;
545 if ($this->
http->wrapper()->post()->has(
'roles')) {
546 $post_roles = $this->
http->wrapper()->post()->retrieve(
548 $this->
refinery->kindlyTo()->dictOf(
549 $this->
refinery->kindlyTo()->dictOf(
557 foreach ($participants as $usr_id) {
558 $memberIsAdmin = $this->rbacreview->isAssigned($usr_id, (
int) $adminRoleId);
564 !$hasEditPermissionAccess &&
567 !is_array($post_roles[$usr_id]) ||
568 !in_array($adminRoleId, $post_roles[$usr_id])
571 $post_roles[$usr_id][] = $adminRoleId;
575 foreach ((array) $post_roles[$usr_id] as $role_id) {
576 if (!array_key_exists($role_id, $assignableLocalRoles)) {
577 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'msg_no_perm_perm'),
true);
578 $this->
ctrl->redirect($this,
'participants');
580 if (!$hasEditPermissionAccess &&
581 $role_id == $adminRoleId &&
583 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'msg_no_perm_perm'));
584 $this->
ctrl->redirect($this,
'participants');
591 if (!isset($post_roles[$admin_id])) {
595 if (in_array($adminRoleId, (array) $post_roles[$admin_id])) {
601 if (!$has_admin && is_array($post_roles)) {
603 foreach ($post_roles as $roleIdsToBeAssigned) {
604 if (in_array($adminRoleId, $roleIdsToBeAssigned)) {
612 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt($this->getParentObject()->getType() .
'_min_one_admin'),
true);
613 $this->
ctrl->redirect($this,
'participants');
616 foreach ($participants as $usr_id) {
617 $this->
getMembersObject()->updateRoleAssignments($usr_id, (array) $post_roles[$usr_id]);
637 $this->
getMembersObject()->updatePassed($usr_id, in_array($usr_id, $passed),
true);
646 in_array($usr_id, $contact)
655 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"msg_obj_modified"),
true);
656 $this->
ctrl->redirect($this,
"participants");
670 if (!count($participants)) {
671 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'no_checkbox'),
true);
672 $this->
ctrl->redirect($this,
'participants');
677 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt($this->getParentObject()->getType() .
'_at_least_one_admin'),
true);
678 $this->
ctrl->redirect($this,
'participants');
683 $this->
lng->loadLanguageModule(
'rbac');
684 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'rbac_info_only_position_access'));
689 !$this->
access->checkAccess(
692 $this->getParentObject()->getRefId()
696 foreach ($participants as $usr_id) {
698 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"msg_no_perm_perm"),
true);
699 $this->
ctrl->redirect($this,
'participants');
705 $this->repository_object->getRefId(),
708 $this->showDeleteParticipantsConfirmationWithLinkedCourses($participants);
713 $confirm->setFormAction($this->
ctrl->getFormAction($this,
'confirmDeleteParticipants'));
714 $confirm->setHeaderText($this->
lng->txt($this->getParentObject()->getType() .
'_header_delete_members'));
715 $confirm->setConfirm($this->
lng->txt(
'confirm'),
'deleteParticipants');
716 $confirm->setCancel($this->
lng->txt(
'cancel'),
'participants');
718 foreach ($participants as $usr_id) {
723 (
string) $name[
'user_id'],
724 $name[
'lastname'] .
', ' . $name[
'firstname'] .
' [' . $name[
'login'] .
']',
728 $this->tpl->setContent($confirm->getHTML());
734 if (!count($participants)) {
735 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"no_checkbox"),
true);
736 $this->
ctrl->redirect($this,
'participants');
742 !$this->
access->checkAccess(
'edit_permission',
'', $this->getParentObject()->getRefId()) &&
745 foreach ($participants as $part) {
747 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'msg_no_perm_perm'),
true);
748 $this->
ctrl->redirect($this,
'participants');
754 $this->tpl->setOnScreenMessage(
'failure',
'Error deleting participants.',
true);
755 $this->
ctrl->redirect($this,
'participants');
757 foreach ($participants as $usr_id) {
774 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt($this->getParentObject()->getType() .
"_members_deleted"),
true);
775 $this->
ctrl->redirect($this,
"participants");
781 if ($this->
http->wrapper()->post()->has(
'participants')) {
783 } elseif ($this->
http->wrapper()->post()->has(
'subscribers')) {
785 } elseif ($this->
http->wrapper()->post()->has(
'waiting')) {
787 } elseif ($this->
http->wrapper()->query()->has(
'member_id')) {
790 if (!count($participants)) {
791 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"no_checkbox"),
true);
792 $this->
ctrl->redirect($this,
'participants');
796 foreach ($participants as $usr_id) {
832 $map->setMapId(
"course_map")
838 ->setEnableTypeControl(
true)
839 ->setEnableNavigationControl(
true)
840 ->setEnableCentralMarker(
true);
844 $map->addUserMarker($user_id);
847 $this->tpl->setContent($map->getHtml());
848 $this->tpl->setLeftContent($map->getUserListHtml());
866 'auto_complete_name' => $this->
lng->txt(
'user'),
869 'submit_name' => $this->
lng->txt(
'add')
874 $this->
toolbar->addSeparator();
878 $this->
lng->txt($this->getParentObject()->getType() .
"_search_users"),
879 $this->
ctrl->getLinkTargetByClass(
880 'ilRepositorySearchGUI',
886 $this->
toolbar->addSeparator();
891 $this->
lng->txt($this->getParentObject()->getType() .
"_print_list"),
892 $this->
ctrl->getLinkTarget($this,
'printMembers')
899 ?
string $a_back_cmd =
null,
900 bool $a_separator =
false 910 $this->
ctrl->setParameter($this,
"back_cmd", $a_back_cmd);
913 $this->
lng->txt($this->getParentObject()->getType() .
'_print_list'),
914 $this->
ctrl->getLinkTarget($this,
'printForMembersOutput')
924 ?
string $a_back_cmd =
null,
925 bool $a_separator =
false 933 $this->rbacsystem->checkAccess(
'internal_mail', $mail->getMailObjectReferenceId())
940 if ($a_back_cmd !==
null) {
941 $this->
ctrl->setParameter($this,
"back_cmd", $a_back_cmd);
945 $this->
lng->txt(
"mail_members"),
946 $this->
ctrl->getLinkTargetByClass(
'ilMailMemberSearchGUI',
'')
967 if ($has_manage_members_permission) {
968 return 'participants';
972 return 'jump2UsersGallery';
974 return 'mailMembersBtn';
989 if ($has_manage_members_permission) {
993 $this->
ctrl->getLinkTarget($this,
'')
1002 $this->
ctrl->getLinkTargetByClass(array(get_class($this),
'ilusersgallerygui'),
'view')
1006 $this->rbacsystem->checkAccess(
'internal_mail', $mail->getMailObjectReferenceId()) &&
1012 $this->
ctrl->getLinkTarget($this,
"mailMembersBtn")
1019 return $this->
lng->txt(
'members');
1034 $this->
ctrl->getLinkTarget($this,
'participants'),
1042 "crs_members_groups",
1043 $this->
ctrl->getLinkTargetByClass(
"ilCourseParticipantsGroupsGUI",
"show"),
1045 "ilCourseParticipantsGroupsGUI" 1049 $children = $this->tree->getSubTree(
1050 $this->tree->getNodeData($this->getParentObject()->getRefId()),
1054 if (count($children)) {
1057 $this->
ctrl->getLinkTargetByClass(array(get_class($this),
'ilsessionoverviewgui'),
'listSessions'),
1059 'ilsessionoverviewgui' 1064 $this->
ctrl->getLinkTargetByClass(array(get_class($this),
'ilUsersGalleryGUI')),
1072 $this->
ctrl->getLinkTargetByClass(array(get_class($this),
'ilUsersGalleryGUI')),
1081 $this->
ctrl->getLinkTarget($this,
'membersMap'),
1090 $this->
ctrl->getLinkTargetByClass(array(get_class($this),
'ilmemberexportgui'),
'show'),
1103 return $this->
getParentGUI()->readMemberData($usr_ids, $columns);
1121 if (!count($filtered_subscribers)) {
1125 $subscriber->readSubscriberData(
1126 $filtered_subscribers
1134 $subscriber->setTitle($this->
lng->txt(
'group_new_registrations'));
1144 if (!count($subscribers)) {
1145 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"crs_no_subscribers_selected"),
true);
1146 $this->
ctrl->redirect($this,
'participants');
1152 $c_gui->setFormAction($this->
ctrl->getFormAction($this,
"assignSubscribers"));
1153 $c_gui->setHeaderText($this->
lng->txt(
"info_assign_sure"));
1154 $c_gui->setCancel($this->
lng->txt(
"cancel"),
"participants");
1155 $c_gui->setConfirm($this->
lng->txt(
"confirm"),
"assignSubscribers");
1157 foreach ($subscribers as $subscriber) {
1162 (
string) $name[
'user_id'],
1163 $name[
'lastname'] .
', ' . $name[
'firstname'] .
' [' . $name[
'login'] .
']',
1167 $this->tpl->setContent($c_gui->getHTML());
1176 if (!count($subscribers)) {
1177 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"crs_no_subscribers_selected"),
true);
1178 $this->
ctrl->redirect($this,
'participants');
1180 $this->
lng->loadLanguageModule(
'mmbr');
1183 $c_gui->setFormAction($this->
ctrl->getFormAction($this,
"refuseSubscribers"));
1184 $c_gui->setHeaderText($this->
lng->txt(
"info_refuse_sure"));
1185 $c_gui->setCancel($this->
lng->txt(
"cancel"),
"participants");
1186 $c_gui->setConfirm($this->
lng->txt(
"confirm"),
"refuseSubscribers");
1188 foreach ($subscribers as $subscriber_id) {
1193 (
string) $name[
'user_id'],
1194 $name[
'lastname'] .
', ' . $name[
'firstname'] .
' [' . $name[
'login'] .
']',
1199 $this->tpl->setContent($c_gui->getHTML());
1205 if (!count($subscribers)) {
1206 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"crs_no_subscribers_selected"),
true);
1207 $this->
ctrl->redirect($this,
'participants');
1211 $this->tpl->setOnScreenMessage(
'failure', $this->error->getMessage(),
true);
1212 $this->
ctrl->redirect($this,
'participants');
1214 foreach ($subscribers as $usr_id) {
1230 $noti->setRecipients(array($usr_id));
1243 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"crs_subscribers_deleted"),
true);
1244 $this->
ctrl->redirect($this,
'participants');
1253 if (!count($subscribers)) {
1254 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"crs_no_subscribers_selected"),
true);
1255 $this->
ctrl->redirect($this,
'participants');
1259 $this->tpl->setOnScreenMessage(
'failure', $this->error->getMessage(),
true);
1260 $this->
ctrl->redirect($this,
'participants');
1262 foreach ($subscribers as $usr_id) {
1280 $noti->setRecipients(array($usr_id));
1286 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"crs_subscribers_assigned"),
true);
1287 $this->
ctrl->redirect($this,
'participants');
1295 $wait = $this->initWaitingList();
1298 if (!count($wait_users)) {
1303 $waiting_table->setUserIds(
1306 $waiting_table->readUserData();
1307 $waiting_table->setTitle($this->
lng->txt(
'crs_waiting_list'));
1309 return $waiting_table;
1318 if (!count($waiting_list_ids)) {
1319 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"crs_no_users_selected"),
true);
1320 $this->
ctrl->redirect($this,
'participants');
1324 $c_gui->setFormAction($this->
ctrl->getFormAction($this,
"assignFromWaitingList"));
1325 $c_gui->setHeaderText($this->
lng->txt(
"info_assign_sure"));
1326 $c_gui->setCancel($this->
lng->txt(
"cancel"),
"participants");
1327 $c_gui->setConfirm($this->
lng->txt(
"confirm"),
"assignFromWaitingList");
1329 foreach ($waiting_list_ids as $waiting) {
1334 (
string) $name[
'user_id'],
1335 $name[
'lastname'] .
', ' . $name[
'firstname'] .
' [' . $name[
'login'] .
']',
1340 $this->tpl->setContent($c_gui->getHTML());
1349 if (!count($waiting_list_ids)) {
1350 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"crs_no_users_selected"),
true);
1351 $this->
ctrl->redirect($this,
'participants');
1354 $waiting_list = $this->initWaitingList();
1357 foreach ($waiting_list_ids as
$user_id) {
1386 $noti->setRecipients(array($user_id));
1391 $waiting_list->removeFromList((
int) $user_id);
1396 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"crs_users_added"),
true);
1398 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"crs_users_already_assigned"),
true);
1400 $this->
ctrl->redirect($this,
'participants');
1409 if (!count($waiting_list_ids)) {
1410 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"no_checkbox"),
true);
1411 $this->
ctrl->redirect($this,
'participants');
1413 $this->
lng->loadLanguageModule(
'mmbr');
1417 $c_gui->setFormAction($this->
ctrl->getFormAction($this,
"refuseFromList"));
1418 $c_gui->setHeaderText($this->
lng->txt(
"info_refuse_sure"));
1419 $c_gui->setCancel($this->
lng->txt(
"cancel"),
"participants");
1420 $c_gui->setConfirm($this->
lng->txt(
"confirm"),
"refuseFromList");
1422 foreach ($waiting_list_ids as $waiting) {
1427 (
string) $name[
'user_id'],
1428 $name[
'lastname'] .
', ' . $name[
'firstname'] .
' [' . $name[
'login'] .
']',
1432 $this->tpl->setContent($c_gui->getHTML());
1441 if (!count($waiting_list_ids)) {
1442 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'no_checkbox'),
true);
1443 $this->
ctrl->redirect($this,
'participants');
1446 $waiting_list = $this->initWaitingList();
1448 foreach ($waiting_list_ids as
$user_id) {
1449 $waiting_list->removeFromList((
int) $user_id);
1468 $noti->setRecipients(array($user_id));
1473 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'crs_users_removed_from_list'),
true);
1474 $this->
ctrl->redirect($this,
'participants');
1484 if ($this->
http->wrapper()->post()->has(
'participants')) {
1486 } elseif ($this->
http->wrapper()->post()->has(
'subscribers')) {
1488 } elseif ($this->
http->wrapper()->post()->has(
'waiting')) {
1492 if (!count($users)) {
1493 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'),
true);
1494 $this->
ctrl->redirect($this,
'participants');
1500 $this->
lng->loadLanguageModule(
'user');
1501 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'clipboard_user_added'),
true);
1502 $this->
ctrl->redirect($this,
'participants');
1512 $this->
tabs->activateSubTab($a_sub_tab);
1522 $this->
tabs->clearTargets();
1524 $this->
tabs->setBackTarget(
1525 $this->
lng->txt(
'back'),
1526 $this->
ctrl->getLinkTarget($this,
'participants')
1530 $form = $list->initForm(
'printMembersOutput');
1531 $this->tpl->setContent($form->getHTML());
1539 $this->
tabs->clearTargets();
1540 $this->
tabs->setBackTarget(
1541 $this->
lng->txt(
'back'),
1542 $this->
ctrl->getLinkTarget($this,
'participants')
1546 $list->initFromForm();
1547 $list->setCallback([$this,
'getAttendanceListUserData']);
1548 $this->member_data = $this->getPrintMemberData(
1554 $list->getNonMemberUserData($this->member_data);
1555 $list->getFullscreenHTML();
1563 $this->
tabs->clearTargets();
1564 $this->
tabs->setBackTarget(
1565 $this->
lng->txt(
'back'),
1566 $this->
ctrl->getLinkTarget($this,
'jump2UsersGallery')
1570 $list->setTitle($this->
lng->txt(
'obj_' . $this->getParentObject()->getType()) .
': ' . $this->
getParentObject()->getTitle());
1571 $list->initFromSettings();
1572 $list->setCallback([$this,
'getAttendanceListUserData']);
1573 $this->member_data = $this->getPrintMemberData($this->
getMembersObject()->getParticipants());
1574 $list->getNonMemberUserData($this->member_data);
1575 $list->getFullscreenHTML();
1580 $this->
ctrl->redirectByClass(
'ilUsersGalleryGUI');
1587 $waiting_list = $this->initWaitingList();
1594 $member_id = $DIC->repositoryTree()->checkForParentType(
1599 $member_id = $DIC->repositoryTree()->checkForParentType(
1605 $DIC->logger()->sess()->warning(
'Cannot find parent course or group for ref_id: ' . $this->
getParentObject()->getRefId());
1627 $this->
lng->txt($this->getParentObject()->getType() .
'_members_print_title'),
1628 $this->
lng->txt(
'obj_' . $this->getParentObject()->getType()) .
': ' . $this->
getParentObject()->getTitle()
1633 if ($show_tracking) {
1635 $show_tracking = $olp->isActive();
1637 if ($show_tracking && $this->
getParentObject()->getType() !==
'sess') {
1638 $list->addPreset(
'progress', $this->
lng->txt(
'learning_progress'),
true);
1642 if ($privacy->enabledAccessTimesByType($this->getParentObject()->getType())) {
1643 $list->addPreset(
'access', $this->
lng->txt(
'last_access'),
true);
1648 $list->addPreset(
'status', $this->
lng->txt(
'crs_status'),
true);
1649 $list->addPreset(
'passed', $this->
lng->txt(
'crs_passed'),
true);
1653 $list->addPreset(
'mark', $this->
lng->txt(
'trac_mark'),
true);
1654 $list->addPreset(
'comment', $this->
lng->txt(
'trac_comment'),
true);
1656 $list->addPreset(
'registered', $this->
lng->txt(
'event_tbl_registered'),
true);
1658 $list->addPreset(
'participated', $this->
lng->txt(
'event_tbl_participated'),
true);
1659 $list->addBlank($this->
lng->txt(
'sess_signature'));
1661 $list->addUserFilter(
'registered', $this->
lng->txt(
'event_list_registered_only'));
readMemberData(array $usr_ids, array $columns)
Required for member table guis.
getParticipantTableTitle()
Class ilCourseParticipantsGroupsGUI.
const TYPE_ADMISSION_MEMBER
setSubTabs(ilTabsGUI $tabs)
Set sub tabs.
Base class for member tab content.
const TYPE_STATUS_CHANGED
confirmDeleteParticipants()
Show confirmation screen for participants deletion.
const TYPE_DISMISS_MEMBER
checkPermissionBool(string $a_permission, string $a_cmd='', string $a_type='', int $a_ref_id=0)
printMembersOutput()
print members output
addToClipboard()
Add selected users to user clipboard.
const TYPE_ACCEPTED_SUBSCRIPTION_MEMBER
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const TYPE_ACCEPTED_SUBSCRIPTION_MEMBER
getAttendanceListUserData(int $user_id, array $filters=[])
const TYPE_DISMISS_MEMBER
const TYPE_DISMISS_MEMBER
updateParticipants()
update members
checkPermission(string $a_permission, string $a_cmd="")
Check permission If not granted redirect to parent gui.
static getInstance(int $a_ref_id)
const TYPE_REFUSED_SUBSCRIPTION_MEMBER
assignFromWaitingList()
Assign from waiting list.
static getInstanceByObjId(int $a_obj_id)
Get instance by obj type.
const TYPE_REFUSED_SUBSCRIPTION_MEMBER
ilObjectGUI $repository_gui
participantsResetFilter()
reset participants filter
initSubscribersFromPost()
ilUsersGalleryGUI: ilPublicUserProfileGUI ilUsersGalleryGUI: ilCourseMembershipGUI, ilGroupMembershipGUI
isAdmin(int $a_usr_id)
check if user is admin
static _lookupName(int $a_user_id)
lookup user name
confirmAssignSubscribers()
Show subscription confirmation.
filterUserIdsByRbacOrPositionOfCurrentUser(array $a_user_ids)
Filter user ids by access.
editMember()
Edit one participant.
__construct(ilObjectGUI $repository_gui, ilObject $repository_obj)
printForMembersOutput()
print members output
parseWaitingListTable()
Parse table of subscription request.
static isReferenceMemberUpdateConfirmationRequired(int $course_ref_id, array $participants)
Base class for attendance lists.
addSubTabTarget(string $a_text, string $a_link, $a_cmd="", $a_cmdClass="", string $a_frame="", bool $a_activate=false, bool $a_dir_text=false)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
ilObject $repository_object
static _enabledUserRelatedData()
static _enabledLearningProgress()
static getMapGUI()
Get an instance of the GUI class.
static http()
Fetches the global http state from ILIAS.
addMemberTab(ilTabsGUI $tabs, bool $a_is_participant=false)
assignSubscribers()
Do assignment of subscription request.
editParticipants(array $post_participants=array())
Edit participants.
GUI class for membership features.
Class ilObjectGUI Basic methods of all Output classes.
createMailSignature()
Create Mail signature.
initAttendanceList(bool $a_for_members=false)
checkRbacOrPermissionAccess(string $a_rbac_perm, string $a_pos_perm)
check rbac or position access
static getImagePath(string $image_name, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
GUI class for course/group subscriptions.
ilParticipants $participants
sendMailToSelectedUsers()
showMailToMemberToolbarButton(ilToolbarGUI $toolbar, ?string $a_back_cmd=null, bool $a_separator=false)
Show mail to member toolbar button.
updateLPFromStatus(int $usr_id, bool $has_passed)
initWaitingListIdsFromPost()
ilGlobalTemplateInterface $tpl
confirmAssignFromWaitingList()
Assign from waiting list (confirmatoin)
Class ilUsersGalleryParticipants.
const TYPE_REFUSED_SUBSCRIPTION_MEMBER
showParticipantsToolbar()
Show participants toolbar.
GUI class for membership features.
static redirect(string $a_script)
confirmRefuseSubscribers()
Refuse subscriber confirmation.
static isActivated()
Checks whether Map feature is activated.
static getInstanceByObjId(?int $obj_id, bool $stop_on_error=true)
get an instance of an Ilias object by object id
Base class for course and group participants.
parseSubscriberTable()
Parse table of subscription request.
const TYPE_REFUSED_SUBSCRIPTION_MEMBER
const TYPE_ACCEPTED_SUBSCRIPTION_MEMBER
static fillAutoCompleteToolbar(object $parent_object, ?ilToolbarGUI $toolbar=null, array $a_options=[], bool $a_sticky=false)
array( auto_complete_name = $lng->txt('user'), auto_complete_size = 15, user_type = array(ilCoursePar...
initParticipantsFromPost()
GUI class for course/group waiting list.
static _isParticipant(int $a_ref_id, int $a_usr_id)
Static function to check if a user is a participant of the container object.
participants()
Show participant table, subscriber table, wating list table;.
showMemberExportToolbarButton(ilToolbarGUI $toolbar, ?string $a_back_cmd=null, bool $a_separator=false)
refuseFromList()
refuse from waiting list
activateSubTab(string $a_sub_tab)
confirmRefuseFromList()
Refuse from waiting list (confirmation)
checkRbacOrPositionAccessBool(string $a_rbac_perm, string $a_pos_perm, int $a_ref_id=0)
static getInstance(int $obj_id)
canAddOrSearchUsers()
Check if current user is allowed to add / search users.
Class ilAbstractMailMemberRoles.
static getInstance(int $a_usr_id)
GUI class for learning sequence membership features.
addTab(string $a_id, string $a_text, string $a_link, string $a_frame="")
Add a Tab.
participantsApplyFilter()
Apply filter for participant table.
static _lookupLogin(int $a_user_id)