19declare(strict_types=0);
45 return $GLOBALS[
'DIC']->access()->filterUserIdsByRbacOrPositionOfCurrentUser(
76 $this->tpl->setOnScreenMessage(
'question', $this->
lng->txt(
'crs_ref_delete_confirmation_info'));
81 'confirmDeleteParticipants'
87 $this->tpl->setContent($table->getHTML());
95 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"no_checkbox"),
true);
96 $this->
ctrl->redirect($this,
'participants');
102 !$this->
access->checkAccess(
'edit_permission',
'', $this->getParentObject()->getRefId()) &&
103 !$this->getMembersObject()->isAdmin($this->user->getId())
107 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'msg_no_perm_perm'),
true);
108 $this->
ctrl->redirect($this,
'participants');
114 $this->tpl->setOnScreenMessage(
'failure',
'Error deleting participants.',
true);
115 $this->
ctrl->redirect($this,
'participants');
129 if ($this->
http->wrapper()->post()->has(
'refs')) {
130 $refs = $this->
http->wrapper()->post()->retrieve(
132 $this->
refinery->kindlyTo()->dictOf(
133 $this->refinery->kindlyTo()->dictOf(
134 $this->refinery->kindlyTo()->int()
141 foreach ($refs as $usr_id => $usr_info) {
142 foreach ((array) $usr_info as $course_ref_id => $tmp) {
144 $part->delete($usr_id);
147 $this->tpl->setOnScreenMessage(
149 $this->
lng->txt($this->getParentObject()->getType() .
"_members_deleted"),
152 $this->
ctrl->redirect($this,
"participants");
160 $a_type = (
int) $a_type;
162 $this->
error->raiseError($this->
lng->txt(
"msg_no_perm_read"), $this->
error->FATAL);
164 if ($a_usr_ids === []) {
165 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"crs_no_users_selected"),
true);
189 if (in_array($a_type, $this->
getParentObject()->getLocalCourseRoles(
true))) {
191 $this->
getMembersObject()->updateRoleAssignments($user_id, (array) $a_type);
194 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"crs_cannot_find_role"),
true);
206 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"crs_users_added"),
true);
207 $this->
ctrl->redirect($this,
'participants');
209 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
"crs_users_already_assigned"),
true);
215 if ($this->
http->wrapper()->post()->has($item_key)) {
216 return $this->
http->wrapper()->post()->retrieve(
218 $this->
refinery->kindlyTo()->listOf(
219 $this->refinery->kindlyTo()->int()
228 $visible_members = [];
229 if ($this->
http->wrapper()->post()->has(
'visible_member_ids')) {
230 $visible_members = $this->
http->wrapper()->post()->retrieve(
231 'visible_member_ids',
232 $this->
refinery->kindlyTo()->listOf(
233 $this->refinery->kindlyTo()->int()
242 foreach ($visible_members as $member_id) {
243 if ($this->
access->checkAccess(
"grade",
"", $this->getParentObject()->getRefId())) {
244 $this->
getMembersObject()->updatePassed($member_id, in_array($member_id, $passed),
true);
251 $this->
getMembersObject()->updateNotification($member_id, in_array($member_id, $notification));
252 $this->
getMembersObject()->updateContact($member_id, in_array($member_id, $contact));
255 if ($this->
getMembersObject()->isBlocked($member_id) && !in_array($member_id, $blocked)) {
262 if (!$this->
getMembersObject()->isBlocked($member_id) && in_array($member_id, $blocked)) {
272 $this->
getMembersObject()->updateBlocked($member_id, in_array($member_id, $blocked));
275 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'settings_saved'),
true);
276 $this->
ctrl->redirect($this,
'participants');
283 if ($show_tracking) {
285 $show_tracking = $olp->isActive();
304 $table->setTitle($this->
lng->txt($this->getParentObject()->getType() .
'_header_edit_members'));
312 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.crs_edit_members.html',
'components/ILIAS/Course');
323 public function readMemberData(array $usr_ids, array $columns,
bool $skip_names =
false): array
325 return $this->
getParentGUI()->readMemberData($usr_ids, $columns, $skip_names);
330 $this->
getParentGUI()->updateLPFromStatus($a_member_id, $a_passed);
340 return $this->
getParentGUI()->getObject()->getDefaultMemberRole();
350 $this->
lng->loadLanguageModule(
'trac');
355 if ($privacy->enabledCourseAccessTimes()) {
361 if ($show_tracking) {
363 $show_tracking = $olp->isActive();
366 if ($show_tracking) {
377 $udf_data = $this->
profile->getAllUserDefinedFields();
379 foreach ($a_members as $member_id) {
382 foreach ($udf_data->getAll() as $field) {
383 $print_member[$member_id][
'udf_' . $field->getIdentifier()] = (string) $field->retrieveValueFromUser($tmp_obj);
386 foreach ((array) ($cdfs[$member_id] ?? []) as $cdf_field => $cdf_value) {
387 $print_member[$member_id][
'cdf_' . $cdf_field] = (string) $cdf_value;
390 foreach ((array) $profile_data[$member_id] as $field => $value) {
391 $print_member[$member_id][$field] = $value;
394 $print_member[$member_id][
'login'] = $tmp_obj->getLogin();
395 $print_member[$member_id][
'name'] = $tmp_obj->getLastname() .
', ' . $tmp_obj->getFirstname();
398 $print_member[$member_id][
'role'] = $this->
lng->txt(
"il_crs_admin");
400 $print_member[$member_id][
'role'] = $this->
lng->txt(
"il_crs_tutor");
402 $print_member[$member_id][
'role'] = $this->
lng->txt(
"il_crs_member");
406 $print_member[$member_id][
'status'] = $this->
lng->txt(
"crs_notify");
408 $print_member[$member_id][
'status'] = $this->
lng->txt(
"crs_no_notify");
412 $print_member[$member_id][
'status'] = $this->
lng->txt(
"crs_blocked");
414 $print_member[$member_id][
'status'] = $this->
lng->txt(
"crs_unblocked");
419 $print_member[$member_id][
'passed'] = $this->
getMembersObject()->hasPassed($member_id) ?
420 $this->
lng->txt(
'crs_member_passed') :
421 $this->
lng->txt(
'crs_member_not_passed');
423 if ($privacy->enabledCourseAccessTimes()) {
424 if (isset($progress[$member_id][
'ts']) && $progress[$member_id][
'ts']) {
427 $progress[$member_id][
'ts'],
432 $print_member[$member_id][
'access'] = $this->
lng->txt(
'no_date');
435 if ($show_tracking) {
436 if (in_array($member_id, $completed)) {
438 } elseif (in_array($member_id, $in_progress)) {
440 } elseif (in_array($member_id, $failed)) {
448 $print_order = (string) (
ilSession::get(
'crs_print_order') ??
'');
454 if (is_array($this->member_data) && array_key_exists(
$user_id, $this->member_data)) {
455 return $this->member_data[
$user_id];
Class ilAbstractMailMemberRoles.
static sortArray(array $array, string $a_array_sortby_key, string $a_array_sortorder="asc", bool $a_numeric=false, bool $a_keep_keys=false)
static _lookupContainerSetting(int $a_id, string $a_keyword, ?string $a_default_value=null)
showDeleteParticipantsConfirmationWithLinkedCourses(array $participants)
Show deletion confirmation with linked courses.
deleteParticipantsWithLinkedCourses()
readMemberData(array $usr_ids, array $columns, bool $skip_names=false)
updateLPFromStatus(int $a_member_id, bool $a_passed)
initParticipantTemplate()
initParticipantTableGUI()
getAttendanceListUserData(int $user_id, array $filters=[])
getPrintMemberData(array $a_members)
updateParticipantsStatus()
initEditParticipantTableGUI(array $participants)
assignMembers(array $a_usr_ids, string $a_type)
callback from repository search gui
initParticipantStatusFromPostFor(string $item_key)
filterUserIdsByRbacOrPositionOfCurrentUser(array $a_user_ids)
Filter user ids by access.
getLocalTypeRole(bool $a_translation=false)
const TYPE_UNBLOCKED_MEMBER
const TYPE_BLOCKED_MEMBER
const TYPE_ADMISSION_MEMBER
const TYPE_DISMISS_MEMBER
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _getValuesByObjId(int $a_obj_id)
static setUseRelativeDates(bool $a_status)
set use relative dates
static formatDate(ilDateTime $date, bool $a_skip_day=false, bool $a_include_wd=false, bool $include_seconds=false, ?ilObjUser $user=null,)
@classDescription Date and time handling
static _lookupCompletedForObject(int $a_obj_id, ?array $a_user_ids=null)
static _lookupFailedForObject(int $a_obj_id, ?array $a_user_ids=null)
static _lookupInProgressForObject(int $a_obj_id, ?array $a_user_ids=null)
const LP_STATUS_COMPLETED
const LP_STATUS_NOT_ATTEMPTED
const LP_STATUS_IN_PROGRESS
static _lookupProgressByObjId(int $a_obj_id)
lookup progress for a specific object
static getLogger(string $a_component_id)
Get component logger.
Class ilMailMemberCourseRoles.
const string PROP_CONTEXT_SUBJECT_PREFIX
Base class for member tab content.
ilParticipants $participants
checkRbacOrPositionAccessBool(string $a_rbac_perm, string $a_pos_perm, int $a_ref_id=0)
initParticipantsFromPost()
const int STATUS_DETERMINATION_LP
static _enabledLearningProgress()
static _enabledUserRelatedData()
static _readUsersProfileData(array $a_user_ids)
static hasTimings(int $ref_id)
Check if there is any active timing (in subtree)
static getInstanceByObjId(?int $obj_id, bool $stop_on_error=true)
get an instance of an Ilias object by object id
static getInstance(int $obj_id)
const EXTERNAL_MAIL_PREFIX
static getInstance(int $a_ref_id)
static get(string $a_var)
static http()
Fetches the global http state from ILIAS.