19 declare(strict_types=1);
54 $this->repository_object = $repository_obj;
56 $this->
lng = $DIC->language();
57 $this->
lng->loadLanguageModule(
'crs');
59 $this->tpl = $DIC->ui()->mainTemplate();
60 $this->
ctrl = $DIC->ctrl();
61 $this->
lng->loadLanguageModule(
'trac');
62 $this->
logger = $DIC->logger()->mmbr();
63 $this->
access = $DIC->access();
64 $this->
user = $DIC->user();
65 $this->error = $DIC[
'ilErr'];
66 $this->
tabs = $DIC->tabs();
67 $this->
toolbar = $DIC->toolbar();
68 $this->rbacsystem = $DIC->rbac()->system();
69 $this->rbacreview = $DIC->rbac()->review();
70 $this->tree = $DIC->repositoryTree();
71 $this->
http = $DIC->http();
80 if ($this->
http->wrapper()->post()->has(
'participants')) {
81 return $this->
http->wrapper()->post()->retrieve(
93 if ($this->
http->wrapper()->query()->has(
'member_id')) {
94 return $this->
http->wrapper()->query()->retrieve(
104 if ($this->
http->wrapper()->post()->has(
'subscribers')) {
105 return $this->
http->wrapper()->post()->retrieve(
107 $this->
refinery->kindlyTo()->listOf(
117 if ($this->
http->wrapper()->post()->has(
'waiting')) {
118 return $this->
http->wrapper()->post()->retrieve(
120 $this->
refinery->kindlyTo()->listOf(
167 string $a_permission,
172 if ($a_ref_id === 0) {
175 return $this->
access->checkAccess($a_permission, $a_cmd, $a_ref_id);
183 if ($a_ref_id === 0) {
186 return $this->
access->checkRbacOrPositionPermissionAccess($a_rbac_perm, $a_pos_perm, $a_ref_id);
196 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'no_permission'),
true);
207 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'no_permission'),
true);
232 $cmd = $this->
ctrl->getCmd(
'participants');
233 $next_class = $this->
ctrl->getNextClass();
235 switch ($next_class) {
236 case 'ilrepositorysearchgui':
241 $rep_search->addUserAccessFilterCallable([$this,
'filterUserIdsByRbacOrPositionOfCurrentUser']);
245 $participants->
isAdmin($this->user->getId()) ||
246 $this->
access->checkAccess(
'manage_members',
'', $this->getParentObject()->getRefId())
248 $rep_search->setCallback(
256 $rep_search->setCallback(
265 $this->
ctrl->setReturn($this,
'participants');
266 $ret = $this->
ctrl->forwardCommand($rep_search);
269 case 'ilmailmembersearchgui':
270 $this->
tabs->clearTargets();
271 $this->
tabs->setBackTarget(
272 $this->
lng->txt(
'btn_back'),
279 $this->
access->checkAccess(
'manage_members',
"", $this->getParentObject()->getRefId())
281 !$this->rbacsystem->checkAccess(
283 $mail->getMailObjectReferenceId()
285 $this->error->raiseError($this->
lng->txt(
"msg_no_perm_read"), $this->error->MESSAGE);
293 $mail_search->setObjParticipants(
296 $this->
ctrl->forwardCommand($mail_search);
299 case 'ilusersgallerygui':
302 $this->
tabs->setSubTabActive(
317 $this->error->raiseError($this->
lng->txt(
'msg_no_perm_read'), $this->error->MESSAGE);
325 $this->
ctrl->forwardCommand($gallery_gui);
328 case 'ilcourseparticipantsgroupsgui':
334 if ($cmd ===
"show" || $cmd =
"") {
337 $this->
ctrl->forwardCommand($cmg_gui);
340 case 'ilsessionoverviewgui':
348 $this->
ctrl->forwardCommand($overview);
351 case 'ilmemberexportgui':
357 $this->
ctrl->forwardCommand($export);
360 case 'ilobjectcustomuserfieldsgui':
365 $this->
ctrl->setReturn($this,
'participants');
367 $this->
ctrl->forwardCommand($cdf_gui);
374 $cmd ===
"mailMembersBtn" ||
375 $cmd ===
'membersMap' ||
376 $cmd ===
'printForMembersOutput' ||
377 $cmd ===
'jump2UsersGallery' 393 $this->initParticipantTemplate();
400 $this->tpl->setVariable(
'TABLE_WAIT', $waiting->getHTML());
406 $this->tpl->setVariable(
'TABLE_SUB', $subscriber->getHTML());
410 $table = $this->initParticipantTableGUI();
412 $table->setFormAction($this->
ctrl->getFormAction($this));
416 $table->setFilterCommand(
'participantsApplyFilter');
417 $table->setResetCommand(
'participantsResetFilter');
419 $this->tpl->setVariable(
'MEMBERS', $table->getHTML());
437 $table = $this->initParticipantTableGUI();
438 $table->resetOffset();
439 $table->writeFilterToSession();
449 $table = $this->initParticipantTableGUI();
450 $table->resetOffset();
451 $table->resetFilter();
471 if (!$post_participants) {
476 $participants = array_intersect($post_participants, $real_participants);
478 if (!count($participants)) {
479 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'no_checkbox'),
true);
480 $this->
ctrl->redirect($this,
'participants');
482 $table = $this->initEditParticipantTableGUI($participants);
483 $this->tpl->setContent($table->getHTML());
492 if (!count($participants)) {
493 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'no_checkbox'),
true);
494 $this->
ctrl->redirect($this,
'participants');
496 $notifications = $passed = $blocked = $contact = [];
497 if ($this->
http->wrapper()->post()->has(
'notification')) {
498 $notifications = $this->
http->wrapper()->post()->retrieve(
500 $this->
refinery->kindlyTo()->listOf(
505 if ($this->
http->wrapper()->post()->has(
'passed')) {
506 $passed = $this->
http->wrapper()->post()->retrieve(
508 $this->
refinery->kindlyTo()->listOf(
513 if ($this->
http->wrapper()->post()->has(
'blocked')) {
514 $blocked = $this->
http->wrapper()->post()->retrieve(
516 $this->
refinery->kindlyTo()->listOf(
521 if ($this->
http->wrapper()->post()->has(
'contact')) {
522 $contact = $this->
http->wrapper()->post()->retrieve(
524 $this->
refinery->kindlyTo()->listOf(
531 $hasEditPermissionAccess =
539 $assignableLocalRoles = array();
541 foreach ($this->getLocalTypeRole(
false) as $title => $role_id) {
542 $assignableLocalRoles[$role_id] = $title;
546 if ($this->
http->wrapper()->post()->has(
'roles')) {
547 $post_roles = $this->
http->wrapper()->post()->retrieve(
549 $this->
refinery->kindlyTo()->dictOf(
550 $this->
refinery->kindlyTo()->dictOf(
558 foreach ($participants as $usr_id) {
559 $memberIsAdmin = $this->rbacreview->isAssigned($usr_id, (
int) $adminRoleId);
565 !$hasEditPermissionAccess &&
568 !is_array($post_roles[$usr_id]) ||
569 !in_array($adminRoleId, $post_roles[$usr_id])
572 $post_roles[$usr_id][] = $adminRoleId;
576 foreach ((array) $post_roles[$usr_id] as $role_id) {
577 if (!array_key_exists($role_id, $assignableLocalRoles)) {
578 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'msg_no_perm_perm'),
true);
579 $this->
ctrl->redirect($this,
'participants');
581 if (!$hasEditPermissionAccess &&
582 $role_id == $adminRoleId &&
584 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'msg_no_perm_perm'));
585 $this->
ctrl->redirect($this,
'participants');
592 if (!isset($post_roles[$admin_id])) {
596 if (in_array($adminRoleId, (array) $post_roles[$admin_id])) {
602 if (!$has_admin && is_array($post_roles)) {
604 foreach ($post_roles as $roleIdsToBeAssigned) {
605 if (in_array($adminRoleId, $roleIdsToBeAssigned)) {
613 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt($this->getParentObject()->getType() .
'_min_one_admin'),
true);
614 $this->
ctrl->redirect($this,
'participants');
617 foreach ($participants as $usr_id) {
618 $this->
getMembersObject()->updateRoleAssignments($usr_id, (array) $post_roles[$usr_id]);
638 $this->
getMembersObject()->updatePassed($usr_id, in_array($usr_id, $passed),
true);
647 in_array($usr_id, $contact)
656 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"msg_obj_modified"),
true);
657 $this->
ctrl->redirect($this,
"participants");
671 if (!count($participants)) {
672 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'no_checkbox'),
true);
673 $this->
ctrl->redirect($this,
'participants');
678 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt($this->getParentObject()->getType() .
'_at_least_one_admin'),
true);
679 $this->
ctrl->redirect($this,
'participants');
684 $this->
lng->loadLanguageModule(
'rbac');
685 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'rbac_info_only_position_access'));
690 !$this->
access->checkAccess(
693 $this->getParentObject()->getRefId()
697 foreach ($participants as $usr_id) {
699 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"msg_no_perm_perm"),
true);
700 $this->
ctrl->redirect($this,
'participants');
706 $this->repository_object->getRefId(),
709 $this->showDeleteParticipantsConfirmationWithLinkedCourses($participants);
714 $confirm->setFormAction($this->
ctrl->getFormAction($this,
'confirmDeleteParticipants'));
715 $confirm->setHeaderText($this->
lng->txt($this->getParentObject()->getType() .
'_header_delete_members'));
716 $confirm->setConfirm($this->
lng->txt(
'confirm'),
'deleteParticipants');
717 $confirm->setCancel($this->
lng->txt(
'cancel'),
'participants');
719 foreach ($participants as $usr_id) {
724 (
string) $name[
'user_id'],
725 $name[
'lastname'] .
', ' . $name[
'firstname'] .
' [' . $name[
'login'] .
']',
729 $this->tpl->setContent($confirm->getHTML());
735 if (!count($participants)) {
736 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"no_checkbox"),
true);
737 $this->
ctrl->redirect($this,
'participants');
743 !$this->
access->checkAccess(
'edit_permission',
'', $this->getParentObject()->getRefId()) &&
746 foreach ($participants as $part) {
748 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'msg_no_perm_perm'),
true);
749 $this->
ctrl->redirect($this,
'participants');
755 $this->tpl->setOnScreenMessage(
'failure',
'Error deleting participants.',
true);
756 $this->
ctrl->redirect($this,
'participants');
758 foreach ($participants as $usr_id) {
775 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt($this->getParentObject()->getType() .
"_members_deleted"),
true);
776 $this->
ctrl->redirect($this,
"participants");
782 if ($this->
http->wrapper()->post()->has(
'participants')) {
784 } elseif ($this->
http->wrapper()->post()->has(
'subscribers')) {
786 } elseif ($this->
http->wrapper()->post()->has(
'waiting')) {
788 } elseif ($this->
http->wrapper()->query()->has(
'member_id')) {
791 if (!count($participants)) {
792 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"no_checkbox"),
true);
793 $this->
ctrl->redirect($this,
'participants');
797 foreach ($participants as $usr_id) {
833 $map->setMapId(
"course_map")
839 ->setEnableTypeControl(
true)
840 ->setEnableNavigationControl(
true)
841 ->setEnableCentralMarker(
true);
845 $map->addUserMarker($user_id);
848 $this->tpl->setContent($map->getHtml());
849 $this->tpl->setLeftContent($map->getUserListHtml());
867 'auto_complete_name' => $this->
lng->txt(
'user'),
870 'submit_name' => $this->
lng->txt(
'add')
875 $this->
toolbar->addSeparator();
879 $this->
lng->txt($this->getParentObject()->getType() .
"_search_users"),
880 $this->
ctrl->getLinkTargetByClass(
881 'ilRepositorySearchGUI',
887 $this->
toolbar->addSeparator();
892 $this->
lng->txt($this->getParentObject()->getType() .
"_print_list"),
893 $this->
ctrl->getLinkTarget($this,
'printMembers')
900 ?
string $a_back_cmd =
null,
901 bool $a_separator =
false 911 $this->
ctrl->setParameter($this,
"back_cmd", $a_back_cmd);
914 $this->
lng->txt($this->getParentObject()->getType() .
'_print_list'),
915 $this->
ctrl->getLinkTarget($this,
'printForMembersOutput')
925 ?
string $a_back_cmd =
null,
926 bool $a_separator =
false 934 $this->rbacsystem->checkAccess(
'internal_mail', $mail->getMailObjectReferenceId())
941 if ($a_back_cmd !==
null) {
942 $this->
ctrl->setParameter($this,
"back_cmd", $a_back_cmd);
947 $this->
ctrl->getLinkTargetByClass(
'ilMailMemberSearchGUI',
'')
954 return $this->
lng->txt(
"mail_members");
973 if ($has_manage_members_permission) {
974 return 'participants';
978 return 'jump2UsersGallery';
980 return 'mailMembersBtn';
995 if ($has_manage_members_permission) {
999 $this->
ctrl->getLinkTarget($this,
'')
1008 $this->
ctrl->getLinkTargetByClass(array(get_class($this),
'ilusersgallerygui'),
'view')
1012 $this->rbacsystem->checkAccess(
'internal_mail', $mail->getMailObjectReferenceId()) &&
1018 $this->
ctrl->getLinkTarget($this,
"mailMembersBtn")
1025 return $this->
lng->txt(
'members');
1040 $this->
ctrl->getLinkTarget($this,
'participants'),
1048 "crs_members_groups",
1049 $this->
ctrl->getLinkTargetByClass(
"ilCourseParticipantsGroupsGUI",
"show"),
1051 "ilCourseParticipantsGroupsGUI" 1055 $children = $this->tree->getSubTree(
1056 $this->tree->getNodeData($this->getParentObject()->getRefId()),
1060 if (count($children)) {
1063 $this->
ctrl->getLinkTargetByClass(array(get_class($this),
'ilsessionoverviewgui'),
'listSessions'),
1065 'ilsessionoverviewgui' 1070 $this->
ctrl->getLinkTargetByClass(array(get_class($this),
'ilUsersGalleryGUI')),
1078 $this->
ctrl->getLinkTargetByClass(array(get_class($this),
'ilUsersGalleryGUI')),
1087 $this->
ctrl->getLinkTarget($this,
'membersMap'),
1096 $this->
ctrl->getLinkTargetByClass(array(get_class($this),
'ilmemberexportgui'),
'show'),
1109 return $this->
getParentGUI()->readMemberData($usr_ids, $columns);
1127 if (!count($filtered_subscribers)) {
1131 $subscriber->readSubscriberData(
1132 $filtered_subscribers
1140 $subscriber->setTitle($this->
lng->txt(
'group_new_registrations'));
1150 if (!count($subscribers)) {
1151 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"crs_no_subscribers_selected"),
true);
1152 $this->
ctrl->redirect($this,
'participants');
1158 $c_gui->setFormAction($this->
ctrl->getFormAction($this,
"assignSubscribers"));
1159 $c_gui->setHeaderText($this->
lng->txt(
"info_assign_sure"));
1160 $c_gui->setCancel($this->
lng->txt(
"cancel"),
"participants");
1161 $c_gui->setConfirm($this->
lng->txt(
"confirm"),
"assignSubscribers");
1163 foreach ($subscribers as $subscriber) {
1168 (
string) $name[
'user_id'],
1169 $name[
'lastname'] .
', ' . $name[
'firstname'] .
' [' . $name[
'login'] .
']',
1173 $this->tpl->setContent($c_gui->getHTML());
1182 if (!count($subscribers)) {
1183 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"crs_no_subscribers_selected"),
true);
1184 $this->
ctrl->redirect($this,
'participants');
1186 $this->
lng->loadLanguageModule(
'mmbr');
1189 $c_gui->setFormAction($this->
ctrl->getFormAction($this,
"refuseSubscribers"));
1190 $c_gui->setHeaderText($this->
lng->txt(
"info_refuse_sure"));
1191 $c_gui->setCancel($this->
lng->txt(
"cancel"),
"participants");
1192 $c_gui->setConfirm($this->
lng->txt(
"confirm"),
"refuseSubscribers");
1194 foreach ($subscribers as $subscriber_id) {
1199 (
string) $name[
'user_id'],
1200 $name[
'lastname'] .
', ' . $name[
'firstname'] .
' [' . $name[
'login'] .
']',
1205 $this->tpl->setContent($c_gui->getHTML());
1211 if (!count($subscribers)) {
1212 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"crs_no_subscribers_selected"),
true);
1213 $this->
ctrl->redirect($this,
'participants');
1217 $this->tpl->setOnScreenMessage(
'failure', $this->error->getMessage(),
true);
1218 $this->
ctrl->redirect($this,
'participants');
1220 foreach ($subscribers as $usr_id) {
1236 $noti->setRecipients(array($usr_id));
1249 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"crs_subscribers_deleted"),
true);
1250 $this->
ctrl->redirect($this,
'participants');
1259 if (!count($subscribers)) {
1260 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"crs_no_subscribers_selected"),
true);
1261 $this->
ctrl->redirect($this,
'participants');
1265 $this->tpl->setOnScreenMessage(
'failure', $this->error->getMessage(),
true);
1266 $this->
ctrl->redirect($this,
'participants');
1268 foreach ($subscribers as $usr_id) {
1286 $noti->setRecipients(array($usr_id));
1292 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"crs_subscribers_assigned"),
true);
1293 $this->
ctrl->redirect($this,
'participants');
1301 $wait = $this->initWaitingList();
1304 if (!count($wait_users)) {
1309 $waiting_table->setUserIds(
1312 $waiting_table->readUserData();
1313 $waiting_table->setTitle($this->
lng->txt(
'crs_waiting_list'));
1315 return $waiting_table;
1324 if (!count($waiting_list_ids)) {
1325 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"crs_no_users_selected"),
true);
1326 $this->
ctrl->redirect($this,
'participants');
1330 $c_gui->setFormAction($this->
ctrl->getFormAction($this,
"assignFromWaitingList"));
1331 $c_gui->setHeaderText($this->
lng->txt(
"info_assign_sure"));
1332 $c_gui->setCancel($this->
lng->txt(
"cancel"),
"participants");
1333 $c_gui->setConfirm($this->
lng->txt(
"confirm"),
"assignFromWaitingList");
1335 foreach ($waiting_list_ids as $waiting) {
1340 (
string) $name[
'user_id'],
1341 $name[
'lastname'] .
', ' . $name[
'firstname'] .
' [' . $name[
'login'] .
']',
1346 $this->tpl->setContent($c_gui->getHTML());
1355 if (!count($waiting_list_ids)) {
1356 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"crs_no_users_selected"),
true);
1357 $this->
ctrl->redirect($this,
'participants');
1360 $waiting_list = $this->initWaitingList();
1363 foreach ($waiting_list_ids as
$user_id) {
1392 $noti->setRecipients(array($user_id));
1397 $waiting_list->removeFromList((
int) $user_id);
1402 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"crs_users_added"),
true);
1404 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
"crs_users_already_assigned"),
true);
1406 $this->
ctrl->redirect($this,
'participants');
1415 if (!count($waiting_list_ids)) {
1416 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"no_checkbox"),
true);
1417 $this->
ctrl->redirect($this,
'participants');
1419 $this->
lng->loadLanguageModule(
'mmbr');
1423 $c_gui->setFormAction($this->
ctrl->getFormAction($this,
"refuseFromList"));
1424 $c_gui->setHeaderText($this->
lng->txt(
"info_refuse_sure"));
1425 $c_gui->setCancel($this->
lng->txt(
"cancel"),
"participants");
1426 $c_gui->setConfirm($this->
lng->txt(
"confirm"),
"refuseFromList");
1428 foreach ($waiting_list_ids as $waiting) {
1433 (
string) $name[
'user_id'],
1434 $name[
'lastname'] .
', ' . $name[
'firstname'] .
' [' . $name[
'login'] .
']',
1438 $this->tpl->setContent($c_gui->getHTML());
1447 if (!count($waiting_list_ids)) {
1448 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'no_checkbox'),
true);
1449 $this->
ctrl->redirect($this,
'participants');
1452 $waiting_list = $this->initWaitingList();
1454 foreach ($waiting_list_ids as
$user_id) {
1455 $waiting_list->removeFromList((
int) $user_id);
1474 $noti->setRecipients(array($user_id));
1479 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'crs_users_removed_from_list'),
true);
1480 $this->
ctrl->redirect($this,
'participants');
1490 if ($this->
http->wrapper()->post()->has(
'participants')) {
1492 } elseif ($this->
http->wrapper()->post()->has(
'subscribers')) {
1494 } elseif ($this->
http->wrapper()->post()->has(
'waiting')) {
1498 if (!count($users)) {
1499 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'),
true);
1500 $this->
ctrl->redirect($this,
'participants');
1506 $this->
lng->loadLanguageModule(
'user');
1507 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'clipboard_user_added'),
true);
1508 $this->
ctrl->redirect($this,
'participants');
1518 $this->
tabs->activateSubTab($a_sub_tab);
1528 $this->
tabs->clearTargets();
1530 $this->
tabs->setBackTarget(
1531 $this->
lng->txt(
'back'),
1532 $this->
ctrl->getLinkTarget($this,
'participants')
1536 $form = $list->initForm(
'printMembersOutput');
1537 $this->tpl->setContent($form->getHTML());
1545 $this->
tabs->clearTargets();
1546 $this->
tabs->setBackTarget(
1547 $this->
lng->txt(
'back'),
1548 $this->
ctrl->getLinkTarget($this,
'participants')
1552 $list->initFromForm();
1553 $list->setCallback([$this,
'getAttendanceListUserData']);
1554 $this->member_data = $this->getPrintMemberData(
1560 $list->getNonMemberUserData($this->member_data);
1561 $list->getFullscreenHTML();
1569 $this->
tabs->clearTargets();
1570 $this->
tabs->setBackTarget(
1571 $this->
lng->txt(
'back'),
1572 $this->
ctrl->getLinkTarget($this,
'jump2UsersGallery')
1576 $list->setTitle($this->
lng->txt(
'obj_' . $this->getParentObject()->getType()) .
': ' . $this->
getParentObject()->getTitle());
1577 $list->initFromSettings();
1578 $list->setCallback([$this,
'getAttendanceListUserData']);
1579 $this->member_data = $this->getPrintMemberData($this->
getMembersObject()->getParticipants());
1580 $list->getNonMemberUserData($this->member_data);
1581 $list->getFullscreenHTML();
1586 $this->
ctrl->redirectByClass(
'ilUsersGalleryGUI');
1593 $waiting_list = $this->initWaitingList();
1600 $member_id = $DIC->repositoryTree()->checkForParentType(
1605 $member_id = $DIC->repositoryTree()->checkForParentType(
1611 $DIC->logger()->sess()->warning(
'Cannot find parent course or group for ref_id: ' . $this->
getParentObject()->getRefId());
1633 $this->
lng->txt($this->getParentObject()->getType() .
'_members_print_title'),
1634 $this->
lng->txt(
'obj_' . $this->getParentObject()->getType()) .
': ' . $this->
getParentObject()->getTitle()
1639 if ($show_tracking) {
1641 $show_tracking = $olp->isActive();
1643 if ($show_tracking && $this->
getParentObject()->getType() !==
'sess') {
1644 $list->addPreset(
'progress', $this->
lng->txt(
'learning_progress'),
true);
1648 if ($privacy->enabledAccessTimesByType($this->getParentObject()->getType())) {
1649 $list->addPreset(
'access', $this->
lng->txt(
'last_access'),
true);
1654 $list->addPreset(
'status', $this->
lng->txt(
'crs_status'),
true);
1655 $list->addPreset(
'passed', $this->
lng->txt(
'crs_passed'),
true);
1659 $list->addPreset(
'mark', $this->
lng->txt(
'trac_mark'),
true);
1660 $list->addPreset(
'comment', $this->
lng->txt(
'trac_comment'),
true);
1662 $list->addPreset(
'registered', $this->
lng->txt(
'event_tbl_registered'),
true);
1664 $list->addPreset(
'participated', $this->
lng->txt(
'event_tbl_participated'),
true);
1665 $list->addBlank($this->
lng->txt(
'sess_signature'));
1667 $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
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)