19 declare(strict_types=0);
62 public function __construct($a_data,
int $a_id,
bool $a_call_by_reference =
true,
bool $a_prepare_output =
true)
69 $this->
help = $DIC->help();
70 $this->
logger = $DIC->logger()->crs();
71 $this->navigation_history = $DIC[
'ilNavigationHistory'];
72 $this->
ctrl->saveParameter($this, [
'ref_id']);
73 $this->
lng->loadLanguageModule(
'crs');
74 $this->
lng->loadLanguageModule(
'cert');
75 $this->
lng->loadLanguageModule(
'obj');
77 $this->
http = $DIC->http();
79 $this->news = $DIC->news();
94 $part->updateNotification(
96 (bool) $this->
settings->get(
'mail_crs_admin_notification',
'1')
98 parent::afterImport($new_object);
103 $this->
ctrl->setCmd(
"view");
109 if (strtolower($this->std_request->getBaseClass()) ===
"iladministrationgui") {
110 parent::viewObject();
114 $this->tabs_gui->setTabActive(
'view_content');
117 if (strtolower($this->std_request->getBaseClass()) ===
"iladministrationgui") {
118 parent::viewObject();
130 if ($this->
ctrl->getNextClass() !=
"ilcolumngui") {
132 $this->
user->getId(),
133 $this->
object->getId(),
134 $this->
object->getRefId(),
140 $this->tabs_gui->clearTargets();
141 $this->
ctrl->setReturn($this,
'view_content');
143 $this->
ctrl->setCmdClass(get_class($agreement));
144 $this->
ctrl->forwardCommand($agreement);
152 $stgui->enableDesktop($this->
object->getAboStatus(), $this);
164 parent::renderObject();
167 $this->
ctrl->setCmdClass(get_class($course_content_obj));
168 $this->
ctrl->forwardCommand($course_content_obj);
174 $this->tabs_gui->activateTab(
'view_content');
175 parent::deleteObject(
$error);
180 parent::renderObject();
191 $this->
ctrl->setCmd(
"showSummary");
192 $this->
ctrl->setCmdClass(
"ilinfoscreengui");
205 $this->tabs_gui->setTabActive(
'info_short');
209 $info->enablePrivateNotes();
210 $info->enableFeedback();
212 $info->enableBookingInfo(
true);
213 if ($this->
access->checkAccess(
"write",
"", $this->ref_id)) {
214 $info->enableNewsEditing();
218 strlen($this->
object->getImportantInformation()) ||
219 strlen($this->
object->getSyllabus()) ||
220 strlen((
string) $this->
object->getTargetGroup()) ||
222 $info->addSection($this->
lng->txt(
'crs_general_informations'));
225 if (strlen($this->
object->getImportantInformation())) {
227 $this->
lng->txt(
'crs_important_info'),
233 if (strlen($this->
object->getSyllabus())) {
234 $info->addProperty($this->
lng->txt(
'crs_syllabus'), nl2br(
238 if (strlen((
string) $this->
object->getTargetGroup())) {
240 $this->
lng->txt(
'crs_target_group'),
248 $tpl =
new ilTemplate(
'tpl.event_info_file.html',
true,
true,
'Modules/Course');
250 foreach ($files as $file) {
252 $this->
ctrl->setParameter($this,
'file_id', $file->getFileId());
261 $this->
lng->txt(
'crs_file_download'),
268 $record_gui->
parse();
271 $info->addMetaDataSections($this->
object->getId(), 0, $this->
object->getType());
274 if ($this->
object->hasContactData()) {
275 $info->addSection($this->
lng->txt(
"crs_contact"));
277 if (strlen($this->
object->getContactName())) {
279 $this->
lng->txt(
"crs_contact_name"),
280 $this->
object->getContactName()
283 if (strlen($this->
object->getContactResponsibility())) {
285 $this->
lng->txt(
"crs_contact_responsibility"),
286 $this->
object->getContactResponsibility()
289 if (strlen($this->
object->getContactPhone())) {
291 $this->
lng->txt(
"crs_contact_phone"),
292 $this->
object->getContactPhone()
295 if ($this->
object->getContactEmail()) {
297 $has_mail_access = $this->rbacsystem->checkAccessOfUser(
298 $this->
user->getId(),
302 $emails = explode(
",", $this->
object->getContactEmail());
304 foreach ($emails as $email) {
305 $email = trim($email);
306 if (!$has_mail_access) {
307 $mailString .= $email .
"<br />";
310 $etpl =
new ilTemplate(
"tpl.crs_contact_email.html",
true,
true,
'Modules/Course');
324 'ref_id' => $this->
object->getRefId(),
329 $etpl->setVariable(
"CONTACT_EMAIL", $email);
330 $mailString .= $etpl->get() .
"<br />";
332 $info->addProperty($this->
lng->txt(
"crs_contact_email"), $mailString);
334 if (strlen($this->
object->getContactConsultation())) {
336 $this->
lng->txt(
"crs_contact_consultation"),
337 nl2br($this->
object->getContactConsultation())
342 $conts =
$parts->getContacts();
344 $info->addSection($this->
lng->txt(
"crs_mem_contacts"));
345 foreach ($conts as
$c) {
347 $pgui->setBackUrl($this->
ctrl->getLinkTargetByClass(
"ilinfoscreengui"));
348 $pgui->setEmbedded(
true);
349 $info->addProperty(
"", $pgui->getHTML());
354 $info->enableAvailability(
false);
355 $this->
lng->loadLanguageModule(
"rep");
356 $info->addSection($this->
lng->txt(
"rep_activation_availability"));
357 $info->showLDAPRoleGroupMappingInfo();
360 $info->addAccessPeriodProperty();
363 switch ($this->
object->getSubscriptionLimitationType()) {
365 $txt = $this->
lng->txt(
"crs_info_reg_deactivated");
369 switch ($this->
object->getSubscriptionType()) {
371 $txt = $this->
lng->txt(
"crs_info_reg_confirmation");
374 $txt = $this->
lng->txt(
"crs_info_reg_direct");
377 $txt = $this->
lng->txt(
"crs_info_reg_password");
383 $info->addProperty($this->
lng->txt(
"crs_info_reg"),
$txt);
385 if ($this->
object->getSubscriptionUnlimitedStatus()) {
387 $this->
lng->txt(
"crs_reg_until"),
388 $this->
lng->txt(
'crs_unlimited')
390 } elseif ($this->
object->getSubscriptionStart() < time()) {
392 $this->
lng->txt(
"crs_reg_until"),
393 $this->
lng->txt(
'crs_to') .
' ' .
396 } elseif ($this->
object->getSubscriptionStart() > time()) {
398 $this->
lng->txt(
"crs_reg_until"),
399 $this->
lng->txt(
'crs_from') .
' ' .
403 if ($this->
object->isSubscriptionMembershipLimited()) {
404 if ($this->
object->getSubscriptionMinMembers()) {
406 $this->
lng->txt(
"mem_min_users"),
407 $this->
object->getSubscriptionMinMembers()
410 if ($this->
object->getSubscriptionMaxMembers()) {
413 $this->
lng->txt(
'mem_free_places'),
414 (string) ($reg_info[
'reg_info_free_places'] ??
'0')
420 if ($this->
object->getCancellationEnd()) {
422 $this->
lng->txt(
'crs_cancellation_end'),
429 !$this->
object->getCourseStart()->isNull()
432 $this->
lng->txt(
'crs_period'),
434 $this->
object->getCourseStart(),
435 $this->
object->getCourseEnd()
446 $this->
lng->loadLanguageModule(
'ps');
447 $info->addSection($this->
lng->txt(
'crs_user_agreement_info'));
448 $info->addProperty($this->
lng->txt(
'ps_export_data'), $field_info->exportableFieldsToInfoString());
451 $info->addProperty($this->
lng->txt(
'ps_crs_user_fields'), $fields);
454 $info->enableLearningProgress(
true);
457 $this->
ctrl->forwardCommand($info);
463 if ($noti->canCurrentUserEdit()) {
465 if ($this->
http->wrapper()->query()->has(
'crs_ntf')) {
466 $crs_ntf = $this->
http->wrapper()->query()->retrieve(
472 $noti->activateUser();
474 $noti->deactivateUser();
477 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"settings_saved"),
true);
478 $this->
ctrl->redirect($this,
"");
485 $this->tabs_gui->setTabActive(
'settings');
486 $this->tabs_gui->setSubTabActive(
'crs_info_settings');
491 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.edit_info.html',
'Modules/Course');
492 $this->tpl->setVariable(
'INFO_TABLE', $a_form->getHTML());
498 foreach ($files as $file) {
499 $table_data[
'id'] = $file->getFileId();
500 $table_data[
'filename'] = $file->getFileName();
501 $table_data[
'filetype'] = $file->getFileType();
502 $table_data[
'filesize'] = $file->getFileSize();
504 $rows[] = $table_data;
507 $table_gui->setTitle($this->
lng->txt(
"crs_info_download"));
508 $table_gui->setData($rows);
509 $table_gui->addCommandButton(
"cancel", $this->
lng->txt(
"cancel"));
510 $table_gui->addMultiCommand(
"confirmDeleteInfoFiles", $this->
lng->txt(
"delete"));
511 $table_gui->setSelectAllCheckbox(
"file_id");
512 $this->tpl->setVariable(
'INFO_FILE_TABLE', $table_gui->getHTML());
518 if ($this->
http->wrapper()->post()->has(
'file_id')) {
519 $file_ids = $this->
http->wrapper()->post()->retrieve(
521 $this->
refinery->kindlyTo()->listOf(
526 if (count($file_ids) === 0) {
527 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'));
533 $this->tabs_gui->setTabActive(
'settings');
534 $this->tabs_gui->setSubTabActive(
'crs_info_settings');
539 $c_gui->setFormAction($this->
ctrl->getFormAction($this,
"deleteInfoFiles"));
540 $c_gui->setHeaderText($this->
lng->txt(
"info_delete_sure"));
541 $c_gui->setCancel($this->
lng->txt(
"cancel"),
"editInfo");
542 $c_gui->setConfirm($this->
lng->txt(
"confirm"),
"deleteInfoFiles");
545 foreach ($file_ids as $file_id) {
547 $c_gui->addItem(
"file_id[]", $file_id, $file->getFileName());
549 $this->tpl->setContent($c_gui->getHTML());
555 if ($this->
http->wrapper()->post()->has(
'file_id')) {
556 $file_ids = $this->
http->wrapper()->post()->retrieve(
558 $this->
refinery->kindlyTo()->listOf(
564 if (count($file_ids) === 0) {
565 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'));
570 foreach ($file_ids as $file_id) {
572 if ($this->
object->getId() == $file->getCourseId()) {
576 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'settings_saved'));
601 $tg = new \ilTextAreaInputGUI($this->
lng->txt(
'crs_target_group'),
'target_group');
602 $tg->setValue($this->
object->getTargetGroup() ??
"");
607 $section->setTitle($this->
lng->txt(
'crs_info_download'));
615 $section->setTitle($this->
lng->txt(
'crs_contact'));
619 $text->setValue($this->
object->getContactName());
621 $text->setMaxLength(70);
624 $text =
new ilTextInputGUI($this->
lng->txt(
'crs_contact_responsibility'),
'contact_responsibility');
625 $text->setValue($this->
object->getContactResponsibility());
627 $text->setMaxLength(70);
630 $text =
new ilTextInputGUI($this->
lng->txt(
'crs_contact_phone'),
'contact_phone');
631 $text->setValue($this->
object->getContactPhone());
633 $text->setMaxLength(40);
636 $text =
new ilTextInputGUI($this->
lng->txt(
'crs_contact_email'),
'contact_email');
637 $text->setValue($this->
object->getContactEmail());
638 $text->setInfo($this->
lng->txt(
'crs_contact_email_info'));
640 $text->setMaxLength(255);
655 $this->record_gui->parse();
668 $this->
object->setImportantInformation((
string)
$form->
getInput(
'important'));
669 $this->
object->setSyllabus((
string)
$form->
getInput(
'syllabus'));
670 $this->
object->setTargetGroup((
string)
$form->
getInput(
'target_group'));
671 $this->
object->setContactName((
string)
$form->
getInput(
'contact_name'));
672 $this->
object->setContactResponsibility((
string)
$form->
getInput(
'contact_responsibility'));
673 $this->
object->setContactPhone((
string)
$form->
getInput(
'contact_phone'));
674 $this->
object->setContactEmail((
string)
$form->
getInput(
'contact_email'));
675 $this->
object->setContactConsultation((
string)
$form->
getInput(
'contact_consultation'));
682 $file_obj->setCourseId($this->
object->getId());
683 $file_obj->setFileName((
string) $file_name);
684 $file_obj->setFileSize((
int) $file_info[
'size']);
685 $file_obj->setFileType((
string) $file_info[
'type']);
686 $file_obj->setTemporaryName((
string) $file_info[
'tmp_name']);
687 $file_obj->setErrorCode((
int) $file_info[
'error']);
691 $file_obj->validate();
692 $this->
object->validateInfoSettings();
693 if (strlen($this->error->getMessage())) {
696 if (!$this->record_gui->importEditFormPostValues()) {
701 $this->tpl->setOnScreenMessage(
'failure', $this->error->getMessage());
707 $this->
object->update();
709 $this->record_gui->writeEditForm();
713 $ecs->handleContentUpdate();
715 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"crs_settings_saved"));
718 $this->tpl->setOnScreenMessage(
720 $this->
lng->txt(
'settings_saved')
734 $this->tpl->setOnScreenMessage(
'failure',
$GLOBALS[
'DIC']->
language()->txt(
'err_check_input'));
746 $min->setAlert($this->
lng->txt(
'crs_subscription_min_members_err'));
747 $this->tpl->setOnScreenMessage(
'failure',
$GLOBALS[
'DIC']->
language()->txt(
'err_check_input'));
756 $this->tpl->setOnScreenMessage(
758 $GLOBALS[
'DIC']->
language()->txt(
'crs_tile_and_objective_view_not_supported')
767 $this->tpl->setOnScreenMessage(
769 $GLOBALS[
'DIC']->
language()->txt(
'crs_tile_and_session_limit_not_supported')
783 $this->
object->setCoursePeriod(
784 $crs_period->getStart(),
785 $crs_period->getEnd()
790 if ($period->getStart() && $period->getEnd()) {
791 $this->
object->setActivationStart($period->getStart()->get(
IL_CAL_UNIX));
792 $this->
object->setActivationEnd($period->getEnd()->get(
IL_CAL_UNIX));
793 $this->
object->setActivationVisibility((
int)
$form->
getInput(
'activation_visibility'));
795 $this->
object->setActivationStart(0);
796 $this->
object->setActivationEnd(0);
800 $this->
object->setSubscriptionPassword(
$form->
getInput(
'subscription_password'));
801 $this->
object->setSubscriptionStart(0);
802 $this->
object->setSubscriptionEnd(0);
808 $this->
object->setSubscriptionType(
813 if ($sub_reg_type !== ilCourseConstants::IL_CRS_SUBSCRIPTION_DEACTIVATED) {
814 if ($sub_period->getStart() && $sub_period->getEnd()) {
816 $this->
object->setSubscriptionStart($sub_period->getStart()->get(
IL_CAL_UNIX));
817 $this->
object->setSubscriptionEnd($sub_period->getEnd()->get(
IL_CAL_UNIX));
823 $this->
object->setSubscriptionLimitationType(ilCourseConstants::IL_CRS_SUBSCRIPTION_DEACTIVATED);
827 $this->
object->enableRegistrationAccessCode((
bool)
$form->
getInput(
'reg_code_enabled'));
828 $this->
object->setRegistrationAccessCode(
$form->
getInput(
'reg_code'));
834 $this->
object->enableSubscriptionMembershipLimitation((
bool)
$form->
getInput(
'subscription_membership_limitation'));
835 $this->
object->setSubscriptionMaxMembers((
int)
$form->
getInput(
'subscription_max'));
836 $this->
object->setSubscriptionMinMembers((
int)
$form->
getInput(
'subscription_min'));
839 $this->
object->enableWaitingList(
true);
840 $this->
object->setWaitingListAutoFill(
true);
844 $this->
object->enableWaitingList(
true);
845 $this->
object->setWaitingListAutoFill(
false);
849 $this->
object->enableWaitingList(
false);
850 $this->
object->setWaitingListAutoFill(
false);
853 $this->
object->handleAutoFill();
855 $property_online = $this->
object->getObjectProperties()->getPropertyIsOnline();
856 $online =
$form->
getInput(
'activation_online') ? $property_online->withOnline() : $property_online->withOffline();
857 $this->
object->getObjectProperties()->storePropertyIsOnline($online);
859 $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->saveTitleIconVisibility();
860 $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->saveTopActionsVisibility();
862 $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->saveIcon();
863 $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->saveTileImage();
866 $this->
object->setViewMode((
int)
$form->
getInput(
'view_mode'));
869 $this->
object->setTimingMode((
int)
$form->
getInput(
'timing_mode'));
871 $this->
object->setTimingMode((
int)
$form->
getInput(
'timing_mode'));
872 $this->
object->setOrderType((
int)
$form->
getInput(
'sorting'));
876 $this->
object->setShowMembers((
bool)
$form->
getInput(
'show_members'));
879 $this->
object->setShowMembersExport((
bool)
$form->
getInput(
'show_members_export'));
881 $this->
object->setMailToMembersType((
int)
$form->
getInput(
'mail_type'));
883 $this->
object->enableSessionLimit((
int)
$form->
getInput(
'sl'));
886 $this->
object->setNumberOfPreviousSessions(is_numeric($session_sp) ? (
int) $session_sp : -1);
888 $this->
object->setNumberOfnextSessions(is_numeric($session_sn) ? (
int) $session_sn : -1);
889 $this->
object->setAutoNotification(
$form->
getInput(
'auto_notification') == 1 ? true :
false);
892 $show_lp_sync_confirmation =
false;
895 if ($this->
http->wrapper()->post()->has(
'status_dt')) {
896 $status_dt = $this->
http->wrapper()->post()->retrieve(
904 $show_lp_sync_confirmation =
true;
906 $this->
object->setStatusDetermination($status_dt);
910 $this->
object->update();
922 if ($show_lp_sync_confirmation) {
929 if (!$ecs->handleSettingsUpdate(
$form)) {
931 $this->tpl->setOnScreenMessage(
'failure',
$GLOBALS[
'DIC']->
language()->txt(
'err_check_input'));
938 $sub_type === ilCourseConstants::IL_CRS_SUBSCRIPTION_DEACTIVATED &&
940 !is_null($sub_period->getStart()) ||
941 !is_null($sub_period->getEnd())
944 $this->tpl->setOnScreenMessage(
946 $this->
lng->txt(
'crs_msg_no_self_registration_period_if_self_enrolment_disabled'),
950 $this->tpl->setOnScreenMessage(
'failure',
$GLOBALS[
'DIC']->
language()->txt(
'err_check_input'));
971 if ($this->news->isGloballyActivated()) {
981 $cgui->setFormAction($this->
ctrl->getFormAction($this,
"setLPSync"));
982 $cgui->setHeaderText($this->
lng->txt(
"crs_status_determination_sync"));
983 $cgui->setCancel($this->
lng->txt(
"cancel"),
"edit");
984 $cgui->setConfirm($this->
lng->txt(
"confirm"),
"setLPSync");
985 $this->tpl->setContent($cgui->getHTML());
991 $this->
object->update();
992 $this->
object->syncMembersStatusWithLP();
993 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"settings_saved"),
true);
994 $this->
ctrl->redirect($this,
"edit");
1000 $this->tabs_gui->setSubTabActive(
'crs_settings');
1005 parent::editObject();
1032 $this->initFormTitleDescription(
$form);
1039 $this->
lng->loadLanguageModule(
'mem');
1040 $cdur->enableToggleFullTime(
1041 $this->
lng->txt(
'mem_period_without_time'),
1042 !$this->
object->getCourseStartTimeIndication()
1044 $cdur->setShowTime(
true);
1045 $cdur->setInfo($this->
lng->txt(
'crs_period_info'));
1046 $cdur->setStart($this->
object->getCourseStart());
1047 $cdur->setEnd($this->
object->getCourseEnd());
1052 $this->
lng->loadLanguageModule(
'rep');
1055 $section->setTitle($this->
lng->txt(
'rep_activation_availability'));
1059 $online->setChecked(!$this->
object->getOfflineStatus());
1060 $online->setInfo($this->
lng->txt(
'crs_activation_online_info'));
1064 $dur->setShowTime(
true);
1070 $this->
lng->txt(
'rep_activation_limited_visibility'),
1071 'activation_visibility' 1073 $visible->setInfo($this->
lng->txt(
'crs_activation_limited_visibility_info'));
1074 $visible->setChecked((
bool) $this->
object->getActivationVisibility());
1075 $dur->addSubItem($visible);
1078 $section->setTitle($this->
lng->txt(
'crs_reg'));
1083 $sdur->setShowTime(
true);
1084 if ($this->
object->getSubscriptionStart()) {
1087 if ($this->
object->getSubscriptionEnd()) {
1092 $reg_proc->setValue(
1094 ? (
string) $this->
object->getSubscriptionType()
1099 $this->
lng->txt(
'crs_subscription_options_direct'),
1102 $reg_proc->addOption($opt);
1105 $this->
lng->txt(
'crs_subscription_options_password'),
1109 $pass =
new ilTextInputGUI($this->
lng->txt(
"password"),
'subscription_password');
1110 $pass->setRequired(
true);
1111 $pass->setInfo($this->
lng->txt(
'crs_reg_password_info'));
1112 $pass->setSubmitFormOnEnter(
true);
1114 $pass->setMaxLength(32);
1115 $pass->setValue($this->
object->getSubscriptionPassword());
1117 $opt->addSubItem($pass);
1118 $reg_proc->addOption($opt);
1121 $this->
lng->txt(
'crs_subscription_options_confirmation'),
1124 $opt->setInfo($this->
lng->txt(
'crs_registration_confirmation_info'));
1125 $reg_proc->addOption($opt);
1128 $this->
lng->txt(
'crs_reg_selfreg'),
1131 $opt_self_enrollment_enabled->addSubItem($reg_proc);
1132 $opt_self_enrollment_enabled->addSubItem($sdur);
1134 $this->
lng->txt(
'crs_reg_no_selfreg'),
1137 $opt_self_enrollment_disabled->setInfo($this->
lng->txt(
'crs_registration_deactivated'));
1139 $this->
lng->txt(
'crs_registration_type'),
1140 'subscription_limitation_type' 1142 $reg_proc_subscription_reg_type->
setValue(
1147 $reg_proc_subscription_reg_type->addOption($opt_self_enrollment_enabled);
1148 $reg_proc_subscription_reg_type->addOption($opt_self_enrollment_disabled);
1153 $reg_code->setChecked($this->
object->isRegistrationAccessCodeEnabled());
1154 $reg_code->setValue(
'1');
1155 $reg_code->setInfo($this->
lng->txt(
'crs_reg_code_enabled_info'));
1158 if (!$this->
object->getRegistrationAccessCode()) {
1162 $reg_link->setValue($this->
object->getRegistrationAccessCode());
1166 $val = ilLink::_getLink(
1167 $this->
object->getRefId(),
1168 $this->
object->getType(),
1170 'rcode' . $this->
object->getRegistrationAccessCode()
1172 $link->setHtml(
'<span class="small">' . $val .
'</span>');
1173 $reg_code->addSubItem($link);
1179 $cancel->
setInfo($this->
lng->txt(
'crs_cancellation_end_info'));
1180 $cancel_end = $this->
object->getCancellationEnd();
1182 $cancel->setDate($cancel_end);
1188 $this->
lng->txt(
'crs_subscription_max_members_short'),
1189 'subscription_membership_limitation' 1191 $lim->setInfo($this->
lng->txt(
'crs_subscription_max_members_short_info'));
1192 $lim->setValue((
string) 1);
1193 $lim->setChecked($this->
object->isSubscriptionMembershipLimited());
1196 $min->setSubmitFormOnEnter(
true);
1198 $min->setMaxLength(4);
1199 $min->setValue($this->
object->getSubscriptionMinMembers() ?:
'');
1200 $min->setTitle($this->
lng->txt(
'crs_subscription_min_members'));
1201 $min->setInfo($this->
lng->txt(
'crs_subscription_min_members_info'));
1202 $lim->addSubItem($min);
1205 $max->setSubmitFormOnEnter(
true);
1207 $max->setMaxLength(4);
1208 $max->setValue($this->
object->getSubscriptionMaxMembers() ?:
'');
1209 $max->setTitle($this->
lng->txt(
'crs_subscription_max_members'));
1210 $max->setInfo($this->
lng->txt(
'crs_reg_max_info'));
1212 $lim->addSubItem($max);
1216 $wait->addOption($option);
1218 $option =
new ilRadioOption($this->
lng->txt(
'crs_waiting_list_no_autofill'),
'1');
1219 $option->
setInfo($this->
lng->txt(
'crs_wait_info'));
1220 $wait->addOption($option);
1222 $option =
new ilRadioOption($this->
lng->txt(
'crs_waiting_list_autofill'),
'2');
1223 $option->
setInfo($this->
lng->txt(
'crs_waiting_list_autofill_info'));
1224 $wait->addOption($option);
1226 if ($this->
object->hasWaitingListAutoFill()) {
1227 $wait->setValue(
'2');
1228 } elseif ($this->
object->enabledWaitingList()) {
1229 $wait->setValue(
'1');
1231 $wait->setValue(
'0');
1233 $lim->addSubItem($wait);
1236 $pres->setTitle($this->
lng->txt(
'crs_view_mode'));
1241 $form = $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->addTitleIconVisibility();
1244 $form = $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->addTopActionsVisibility();
1247 if ($setting->get(
"rep_breadcr_crs") && $setting->get(
"rep_breadcr_crs_overwrite")) {
1248 $add = $setting->get(
"rep_breadcr_crs_default")
1249 ?
" (" . $this->
lng->txt(
"crs_breadcrumb_crs_only") .
")" 1250 :
" (" . $this->
lng->txt(
"crs_breadcrumb_full_path") .
")";
1252 self::BREADCRUMB_DEFAULT => $this->
lng->txt(
"crs_sys_default") . $add,
1253 self::BREADCRUMB_CRS_ONLY => $this->
lng->txt(
"crs_breadcrumb_crs_only"),
1254 self::BREADCRUMB_FULL_PATH => $this->
lng->txt(
"crs_breadcrumb_full_path")
1258 $si->setOptions($options);
1263 $form = $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->addIcon();
1266 $form = $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->addTileImage();
1276 $this->
lng->txt(
'cntr_view_sessions'),
1279 $opts->setInfo($this->
lng->txt(
'cntr_view_info_sessions'));
1280 $view_type->addOption($opts);
1284 $sess->setValue(
'1');
1285 $sess->setChecked($this->
object->isSessionLimitEnabled());
1286 $sess->setInfo($this->
lng->txt(
'sess_limit_info'));
1289 #$prev->setSubmitFormOnEnter(true); 1290 $prev->setMinValue(0);
1292 $this->
object->getNumberOfPreviousSessions() == -1 ?
1294 $this->
object->getNumberOfPreviousSessions()
1297 $prev->setMaxLength(3);
1298 $sess->addSubItem($prev);
1301 #$next->setSubmitFormOnEnter(true); 1302 $next->setMinValue(0);
1304 $this->
object->getNumberOfNextSessions() == -1 ?
1306 $this->
object->getNumberOfnextSessions()
1309 $next->setMaxLength(3);
1310 $sess->addSubItem($next);
1312 $opts->addSubItem($sess);
1315 $optsi->setInfo($this->
lng->txt(
'cntr_view_info_simple'));
1316 $view_type->addOption($optsi);
1319 $this->
lng->txt(
'cntr_view_by_type'),
1322 $optbt->setInfo($this->
lng->txt(
'cntr_view_info_by_type'));
1323 $view_type->addOption($optbt);
1326 $this->
lng->txt(
'crs_view_objective'),
1329 $opto->setInfo($this->
lng->txt(
'crs_view_info_objective'));
1330 $view_type->addOption($opto);
1333 $optt->setInfo($this->
lng->txt(
'crs_view_info_timing'));
1340 $this->
lng->txt(
'crs_view_timing_absolute'),
1343 $absolute->setInfo($this->
lng->txt(
'crs_view_info_timing_absolute'));
1344 $timing->addOption($absolute);
1347 $this->
lng->txt(
'crs_view_timing_relative'),
1350 $relative->setInfo($this->
lng->txt(
'crs_view_info_timing_relative'));
1351 $timing->addOption($relative);
1353 $optt->addSubItem($timing);
1356 $view_type->addOption($optt);
1373 if ($olp->getCurrentMode()) {
1375 $lp_status->setTitle($this->
lng->txt(
'crs_course_status_of_users'));
1380 $lp_status_options->
setValue($this->
object->getStatusDetermination());
1383 $this->
lng->txt(
'crs_status_determination_lp'),
1385 $this->
lng->txt(
'crs_status_determination_lp_info')
1387 $lp_status_options->addOption($lp_option);
1389 $this->
lng->txt(
'crs_status_determination_manual'),
1399 $feat->setTitle($this->
lng->txt(
'obj_features'));
1409 $mem->setChecked($this->
object->getShowMembers());
1410 $mem->setInfo($this->
lng->txt(
'crs_show_members_info'));
1415 $part_list =
new ilCheckboxInputGUI($this->
lng->txt(
'crs_show_member_export'),
'show_members_export');
1416 $part_list->setChecked($this->
object->getShowMembersExport());
1417 $part_list->setInfo($this->
lng->txt(
'crs_show_member_export_info'));
1418 $mem->addSubItem($part_list);
1426 $this->
lng->txt(
'crs_mail_tutors_only'),
1428 $this->
lng->txt(
'crs_mail_tutors_only_info')
1430 $mail_type->addOption($mail_tutors);
1433 $this->
lng->txt(
'crs_mail_all'),
1435 $this->
lng->txt(
'crs_mail_all_info')
1437 $mail_type->addOption($mail_all);
1447 $not->setValue(
'1');
1448 $not->setInfo($this->
lng->txt(
'crs_auto_notification_info'));
1449 $not->setChecked($this->
object->getAutoNotification());
1453 $desk->setChecked($this->
object->getAboStatus());
1454 $desk->setInfo($this->
lng->txt(
'crs_add_remove_from_desktop_info'));
1459 $ecs->addSettingsToForm(
$form,
'crs');
1466 if ($this->
http->wrapper()->query()->has(
'file_id')) {
1467 $file_id = $this->
http->wrapper()->query()->retrieve(
1480 $this->tabs_gui->addSubTabTarget(
1482 $this->
ctrl->getLinkTarget($this,
'edit'),
1487 $this->tabs_gui->addSubTabTarget(
1488 "crs_info_settings",
1489 $this->
ctrl->getLinkTarget($this,
'editInfo'),
1494 $this->tabs_gui->addSubTabTarget(
1496 $this->
ctrl->getLinkTargetByClass(
'ilConditionHandlerGUI',
'listConditions'),
1498 "ilConditionHandlerGUI" 1501 $this->tabs_gui->addSubTabTarget(
1502 "crs_start_objects",
1503 $this->
ctrl->getLinkTargetByClass(
'ilContainerStartObjectsGUI',
'listStructure'),
1508 $this->tabs_gui->addSubTabTarget(
1510 $this->
ctrl->getLinkTargetByClass(
'ilobjcoursegroupinggui',
'listGroupings'),
1515 if ($lti_settings->hasSettingsAccess()) {
1516 $this->tabs_gui->addSubTabTarget(
1518 $this->
ctrl->getLinkTargetByClass(ilLTIProviderObjectSettingGUI::class)
1524 $this->tabs_gui->addSubTabTarget(
1526 $this->
ctrl->getLinkTarget($this,
'editMapSettings'),
1534 $this->tabs_gui->addSubTabTarget(
1535 'crs_custom_user_fields',
1536 $this->
ctrl->getLinkTargetByClass(
'ilobjectcustomuserfieldsgui'),
1538 'ilobjectcustomuserfieldsgui' 1544 if (
true === $validator->validate()) {
1545 $this->tabs_gui->addSubTabTarget(
1547 $this->
ctrl->getLinkTargetByClass(
"ilcertificategui",
"certificateeditor"),
1553 if ($this->
object->getUseNews()) {
1554 $this->tabs_gui->addSubTab(
1555 'obj_news_settings',
1556 $this->
lng->txt(
"cont_news_settings"),
1557 $this->
ctrl->getLinkTargetByClass(
'ilcontainernewssettingsgui')
1560 if ($this->
object->getShowMembersExport()) {
1561 $this->tabs_gui->addSubTab(
1563 $this->
lng->txt(
'crs_show_member_export_settings'),
1564 $this->
ctrl->getLinkTargetByClass(
'ilmemberexportsettingsgui',
'')
1567 $this->tabs_gui->addSubTabTarget(
1568 "obj_multilinguality",
1569 $this->
ctrl->getLinkTargetByClass(
"ilobjecttranslationgui",
""),
1571 "ilobjecttranslationgui" 1597 $new_object->getMemberObject()->updateNotification(
1598 $this->
user->getId(),
1599 $this->
settings->get(
'mail_crs_admin_notification',
'1')
1601 $new_object->getMemberObject()->updateContact($this->
user->getId(), 1);
1608 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"crs_added"),
true);
1609 $this->
ctrl->setParameter($this,
"ref_id", $new_object->
getRefId());
1612 $this->
ctrl->getLinkTarget($this,
"edit",
"")
1616 public function readMemberData(array $ids, array $selected_columns = null,
bool $skip_names =
false): array
1623 if ($show_tracking) {
1625 $show_tracking = $olp->isActive();
1628 if ($show_tracking) {
1635 if ($privacy->enabledCourseAccessTimes()) {
1639 $do_prtf = (is_array($selected_columns) &&
1640 in_array(
'prtf', $selected_columns) &&
1645 $this->
ctrl->getLinkTarget($this,
"members")
1650 foreach ($ids as $usr_id) {
1660 $tmp_data[
'firstname'] = $name[
'firstname'];
1661 $tmp_data[
'lastname'] = $name[
'lastname'];
1662 $tmp_data[
'login'] = $name[
'login'];
1664 $tmp_data[
'passed'] = $this->
object->getMembersObject()->hasPassed($usr_id) ? 1 : 0;
1666 $tmp_data[
'passed_info'] = $this->
object->getMembersObject()->getPassedInfo($usr_id);
1668 $tmp_data[
'notification'] = $this->
object->getMembersObject()->isNotificationEnabled($usr_id) ? 1 : 0;
1669 $tmp_data[
'blocked'] = $this->
object->getMembersObject()->isBlocked($usr_id) ? 1 : 0;
1670 $tmp_data[
'contact'] = $this->
object->getMembersObject()->isContact($usr_id) ? 1 : 0;
1672 $tmp_data[
'usr_id'] = $usr_id;
1674 if ($show_tracking) {
1675 if (in_array($usr_id, $completed)) {
1677 } elseif (in_array($usr_id, $in_progress)) {
1679 } elseif (in_array($usr_id, $failed)) {
1686 if ($privacy->enabledCourseAccessTimes()) {
1687 if (isset($progress[$usr_id][
'ts']) && $progress[$usr_id][
'ts']) {
1688 $tmp_data[
'access_ut'] = $progress[$usr_id][
'ts'];
1690 $progress[$usr_id][
'ts'],
1694 $tmp_data[
'access_ut'] = 0;
1695 $tmp_data[
'access_time'] = $this->
lng->txt(
'no_date');
1700 $tmp_data[
'prtf'] = $all_prtf[$usr_id] ?? null;
1703 $members[$usr_id] = $tmp_data;
1720 if ($marks->getCompleted() !== $a_has_passed) {
1736 $this->
object->isSubscriptionMembershipLimited() &&
1737 $this->
object->getSubscriptionMaxMembers() &&
1738 $this->
object->getSubscriptionMaxMembers() <= $this->
object->getMembersObject()->getCountMembers()
1740 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"crs_max_members_reached"));
1744 if ($number = $this->
object->getMembersObject()->autoFillSubscribers()) {
1745 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"crs_number_users_added") .
" " . $number);
1747 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"crs_no_users_added"));
1757 if ($this->
object->getMembersObject()->isLastAdmin($this->
user->getId())) {
1758 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'crs_min_one_admin'));
1763 $this->tabs_gui->setTabActive(
'crs_unsubscribe');
1765 $cgui->setHeaderText($this->
lng->txt(
'crs_unsubscribe_sure'));
1766 $cgui->setFormAction($this->
ctrl->getFormAction($this));
1767 $cgui->setCancel($this->
lng->txt(
"cancel"),
"cancel");
1768 $cgui->setConfirm($this->
lng->txt(
"crs_unsubscribe"),
"performUnsubscribe");
1769 $this->tpl->setContent($cgui->getHTML());
1780 $this->
getObject()->getMembersObject()->delete($this->
user->getId());
1781 $this->
getObject()->getMembersObject()->sendUnsubscribeNotificationToAdmins($this->
user->getId());
1782 $this->
getObject()->getMembersObject()->sendNotification(
1784 $this->
user->getId()
1786 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'crs_unsubscribed_from_crs'),
true);
1788 $this->
ctrl->setParameterByClass(
"ilrepositorygui",
"ref_id", $this->tree->getParentId($this->ref_id));
1789 $this->
ctrl->redirectByClass(
"ilrepositorygui",
"");
1795 if ($this->
access->checkAccess(
'visible',
'', $this->ref_id)) {
1796 $this->
tabs->addTarget(
1798 $this->
ctrl->getLinkTargetByClass(
1799 array(
"ilobjcoursegui",
"ilinfoscreengui"),
1806 $this->
access->checkAccess(
'leave',
'', $this->object->getRefId()) &&
1807 $this->
object->getMemberObject()->isMember()
1809 $this->
tabs->addTarget(
1811 $this->
ctrl->getLinkTarget($this,
"unsubscribe"),
1820 $this->tabs_gui->addTab(
1822 $this->
lng->txt(
"content"),
1823 $this->
ctrl->getLinkTarget($this,
"view")
1829 $this->
help->setScreenIdComponent(
"crs");
1830 $this->
ctrl->setParameter($this,
"ref_id", $this->ref_id);
1832 if ($this->
access->checkAccess(
'read',
'', $this->ref_id)) {
1834 $this->tabs_gui->activateTab(
'view_content');
1835 if ($this->
object->isNewsTimelineEffective()) {
1836 if (!$this->
object->isNewsTimelineLandingPageEffective()) {
1839 $this->tabs_gui->addTab(
1841 $this->
lng->txt(
"cont_news_timeline_tab"),
1842 $this->
ctrl->getLinkTargetByClass(
"ilnewstimelinegui",
"show")
1844 if ($this->
object->isNewsTimelineLandingPageEffective()) {
1854 $this->
tabs->addTab(
1856 $this->
lng->txt(
'timings_timings'),
1857 $this->
ctrl->getLinkTargetByClass(
'ilcoursecontentgui',
'manageTimings')
1861 $this->
tabs->addTab(
1863 $this->
lng->txt(
'timings_timings'),
1864 $this->
ctrl->getLinkTargetByClass(
'ilcoursecontentgui',
'managePersonalTimings')
1869 if ($this->
access->checkAccess(
'write',
'', $this->ref_id)) {
1871 $this->tabs_gui->addTarget(
1873 $this->
ctrl->getLinkTargetByClass(
'illoeditorgui',
''),
1880 $this->
access->checkAccess(
'visible',
'', $this->ref_id) ||
1881 $this->
access->checkAccess(
'join',
'', $this->ref_id) ||
1882 $this->
access->checkAccess(
'read',
'', $this->ref_id)
1885 strcasecmp($this->
ctrl->getCmdClass(), ilInfoScreenGUI::class) === 0 ||
1886 strcasecmp($this->
ctrl->getCmdClass(), ilNoteGUI::class) === 0;
1887 $this->tabs_gui->addTarget(
1889 $this->
ctrl->getLinkTargetByClass(
1890 array(
"ilobjcoursegui",
"ilinfoscreengui"),
1899 if ($this->
access->checkAccess(
'write',
'', $this->ref_id)) {
1901 strcasecmp($this->
ctrl->getCmdClass(), ilConditionHandlerGUI::class) &&
1902 !$this->
http->wrapper()->query()->has(
'item_id');
1903 $this->tabs_gui->addTarget(
1905 $this->
ctrl->getLinkTarget($this,
"edit"),
1906 array(
"edit",
"editMapSettings",
"editCourseIcons",
"listStructure"),
1917 $membership_gui->addMemberTab($this->tabs_gui, $is_participant);
1920 if ($this->
access->checkAccess(
'write',
'', $this->ref_id)) {
1922 $this->tabs_gui->addTarget(
1923 "obj_tool_setting_badges",
1924 $this->
ctrl->getLinkTargetByClass(
"ilbadgemanagementgui",
""),
1926 "ilbadgemanagementgui" 1933 $this->tabs_gui->addTarget(
1934 "obj_tool_setting_skills",
1935 $this->
ctrl->getLinkTargetByClass(array(
"ilcontainerskillgui",
"ilcontskillpresentationgui"),
""),
1937 array(
"ilcontainerskillgui",
"ilcontskillpresentationgui",
"ilcontskilladmingui")
1947 $this->tabs_gui->addTarget(
1948 "obj_tool_setting_booking",
1949 $this->
ctrl->getLinkTargetByClass(array(
"ilbookinggatewaygui"),
"")
1955 $this->tabs_gui->addTarget(
1956 'learning_progress',
1957 $this->
ctrl->getLinkTargetByClass(array(
'ilobjcoursegui',
'illearningprogressgui'),
''),
1959 array(
'illplistofobjectsgui',
'illplistofsettingsgui',
'illearningprogressgui',
'illplistofprogressgui')
1964 if ($this->
access->checkAccess(
'write',
'', $this->ref_id)) {
1966 $mdtab = $mdgui->getTab();
1968 $this->tabs_gui->addTarget(
1972 "ilobjectmetadatagui" 1977 if ($this->
access->checkAccess(
'write',
'', $this->object->getRefId())) {
1978 $this->tabs_gui->addTarget(
1980 $this->
ctrl->getLinkTargetByClass(
'ilexportgui',
''),
1986 if ($this->
access->checkAccess(
'edit_permission',
'', $this->ref_id)) {
1987 $this->tabs_gui->addTarget(
1989 $this->
ctrl->getLinkTargetByClass(array(get_class($this),
'ilpermissiongui'),
"perm"),
1990 array(
"perm",
"info",
"owner"),
1996 if ($this->
access->checkAccess(
'join',
'', $this->ref_id) && !$this->
object->getMemberObject()->isAssigned()) {
1998 $this->tabs_gui->addTab(
2000 $this->
lng->txt(
'membership_leave'),
2001 $this->
ctrl->getLinkTargetByClass(
'ilcourseregistrationgui',
'show',
'')
2004 $this->tabs_gui->addTarget(
2006 $this->
ctrl->getLinkTargetByClass(
'ilcourseregistrationgui',
"show"),
2012 if ($this->
access->checkAccess(
'leave',
'', $this->object->getRefId()) && $this->
object->getMemberObject()->isMember()) {
2013 $this->tabs_gui->addTarget(
2015 $this->
ctrl->getLinkTarget($this,
"unsubscribe"),
2024 $next_class = $this->
ctrl->getNextClass($this);
2025 $cmd = $this->
ctrl->getCmd();
2031 $this->
access->checkAccess(
'read',
'', $this->ref_id)) {
2032 $this->navigation_history->addItem(
2034 ilLink::_getLink($this->ref_id,
"crs"),
2038 $header_action =
true;
2039 switch ($next_class) {
2040 case strtolower(ilRepositoryTrashGUI::class):
2041 $ru = new \ilRepositoryTrashGUI($this);
2042 $this->
ctrl->setReturn($this,
'trash');
2043 $this->
ctrl->forwardCommand($ru);
2046 case 'illtiproviderobjectsettinggui':
2049 $this->tabs_gui->activateTab(
'settings');
2050 $this->tabs_gui->activateSubTab(
'lti_provider');
2053 $lti_gui->offerLTIRolesForSelection(
false);
2054 $this->
ctrl->forwardCommand($lti_gui);
2057 case 'ilcoursemembershipgui':
2059 $this->tabs_gui->activateTab(
'members');
2062 $this->
ctrl->forwardCommand($mem_gui);
2065 case "ilinfoscreengui":
2069 case 'ilobjectmetadatagui':
2070 if (!$this->
access->checkAccess(
'write',
'', $this->object->getRefId())) {
2071 $this->error->raiseError($this->
lng->txt(
'permission_denied'), $this->error->WARNING);
2073 $this->tabs_gui->setTabActive(
'meta_data');
2075 $this->
ctrl->forwardCommand($md_gui);
2078 case 'ilcourseregistrationgui':
2079 $this->
ctrl->setReturn($this,
'');
2080 $this->tabs_gui->setTabActive(
'join');
2082 $this->
ctrl->forwardCommand($registration);
2085 case 'ilobjectcustomuserfieldsgui':
2088 $this->tabs_gui->activateTab(
'settings');
2089 $this->tabs_gui->activateSubTab(
'crs_custom_user_fields');
2090 $this->
ctrl->forwardCommand($cdf_gui);
2093 case "ilcourseobjectivesgui":
2095 $this->
ctrl->setReturn($this,
"");
2097 $this->
ctrl->forwardCommand($reg_gui);
2100 case 'ilobjcoursegroupinggui':
2102 $this->
ctrl->setReturn($this,
'edit');
2104 $this->tabs_gui->activateTab(
'settings');
2105 $this->tabs_gui->activateSubTab(
'groupings');
2108 if ($this->
http->wrapper()->query()->has(
'obj_id')) {
2109 $grouping_id = $this->
http->wrapper()->query()->retrieve(
2115 $this->
ctrl->forwardCommand($crs_grp_gui);
2118 case "ilpropertyformgui":
2125 $this->
ctrl->setReturn($this,
"");
2126 $this->tabs_gui->setTabActive(
'none');
2135 case "ilconditionhandlergui":
2138 $this->tabs_gui->activateTab(
'settings');
2139 $this->tabs_gui->activateSubTab(
'preconditions');
2141 $this->
ctrl->forwardCommand($new_gui);
2144 case "illearningprogressgui":
2146 $user_id = $this->
user->getId();
2147 if ($this->
http->wrapper()->query()->has(
'user_id')) {
2148 $user_id = $this->
http->wrapper()->query()->retrieve(
2155 $this->
object->getRefId(),
2158 $this->
ctrl->forwardCommand($new_gui);
2159 $this->tabs_gui->setTabActive(
'learning_progress');
2162 case 'ilpermissiongui':
2163 $this->tabs_gui->setTabActive(
'perm_settings');
2165 $this->
ctrl->forwardCommand($perm_gui);
2168 case 'ilcalendarpresentationgui':
2170 $ret = $this->
ctrl->forwardCommand($cal);
2171 $header_action =
false;
2174 case 'ilcoursecontentgui':
2175 $this->
ctrl->setReturn($this,
'members');
2177 $this->
ctrl->forwardCommand($course_content_obj);
2180 case 'ilpublicuserprofilegui':
2181 $this->tpl->enableDragDropFileUpload(null);
2183 $this->tabs_gui->setTabActive(
'members');
2185 $user_id = $this->
user->getId();
2186 if ($this->
http->wrapper()->query()->has(
'user_id')) {
2187 $user_id = $this->
http->wrapper()->query()->retrieve(
2193 $profile_gui->setBackUrl($this->
ctrl->getLinkTargetByClass([
"ilCourseMembershipGUI",
2196 $this->tabs_gui->setSubTabActive(
'crs_members_gallery');
2197 $html = $this->
ctrl->forwardCommand($profile_gui);
2198 $this->tpl->setVariable(
"ADM_CONTENT",
$html);
2201 case 'ilmemberagreementgui':
2202 $this->tabs_gui->clearTargets();
2204 $this->
ctrl->setReturn($this,
'');
2206 $this->
ctrl->forwardCommand($agreement);
2210 case "ilcontainerpagegui":
2213 $this->tpl->setContent($ret);
2215 $header_action =
false;
2218 case "ilcontainerstartobjectspagegui":
2221 $ret = $this->
ctrl->forwardCommand($pgui);
2223 $this->tpl->setContent($ret);
2227 case 'ilobjectcopygui':
2229 $cp->setType(
'crs');
2230 $this->
ctrl->forwardCommand($cp);
2233 case "ilobjectcontentstylesettingsgui":
2240 $settings_gui = $DIC->contentStyle()->gui()
2241 ->objectSettingsGUIForRefId(
2243 $this->
object->getRefId()
2245 $this->
ctrl->forwardCommand($settings_gui);
2249 $this->tabs_gui->setTabActive(
'export');
2251 $exp->addFormat(
'xml');
2252 $this->
ctrl->forwardCommand($exp);
2255 case "ilcommonactiondispatchergui":
2260 case 'ildidactictemplategui':
2261 $this->
ctrl->setReturn($this,
'edit');
2263 $this->
ctrl->forwardCommand($did);
2266 case "ilcertificategui":
2267 $this->tabs_gui->activateTab(
"settings");
2269 $this->tabs_gui->activateSubTab(
'certificate');
2272 $output_gui = $guiFactory->create($this->
object);
2273 $this->
ctrl->forwardCommand($output_gui);
2276 case 'illoeditorgui':
2277 #$this->tabs_gui->clearTargets(); 2278 #$this->tabs_gui->setBackTarget($this->lng->txt('back'),$this->ctrl->getLinkTarget($this,'')); 2279 $this->tabs_gui->activateTab(
'crs_objectives');
2282 $this->
ctrl->forwardCommand($editor);
2283 if (strtolower($this->
ctrl->getCmdClass()) ===
"illopagegui") {
2284 $header_action =
false;
2288 case 'ilcontainerstartobjectsgui':
2289 $this->
ctrl->setReturn($this,
'edit');
2290 $this->tabs_gui->clearTargets();
2291 $this->tabs_gui->setBackTarget(
2292 $this->
lng->txt(
"back_to_crs_content"),
2293 $this->
ctrl->getLinkTarget($this,
"edit")
2295 $this->tabs_gui->addTab(
2297 $this->
lng->txt(
"crs_start_objects"),
2298 $this->
ctrl->getLinkTargetByClass(
"ilcontainerstartobjectsgui",
"listStructure")
2300 $this->tabs_gui->activateTab(
"start");
2301 if (strtolower($this->
ctrl->getCmdClass()) ==
2302 "ilcontainerstartobjectspagegui") {
2303 $header_action =
false;
2307 $ilHelp = $DIC[
'ilHelp'];
2308 $this->
help->setScreenIdComponent(
"crs");
2310 $this->
ctrl->forwardCommand($stgui);
2313 case 'illomembertestresultgui':
2314 $GLOBALS[
'DIC'][
'ilCtrl']->setReturn($this,
'members');
2315 $GLOBALS[
'DIC'][
'ilTabs']->clearTargets();
2316 $GLOBALS[
'DIC'][
'ilTabs']->setBackTarget(
2317 $GLOBALS[
'DIC'][
'lng']->txt(
'back'),
2318 $GLOBALS[
'DIC'][
'ilCtrl']->getLinkTarget($this,
'members')
2322 if ($this->
http->wrapper()->query()->has(
'uid')) {
2323 $uid = $this->
http->wrapper()->query()->retrieve(
2329 $this->
ctrl->forwardCommand($result_view);
2332 case 'ilmailmembersearchgui':
2337 $this->
access->checkAccess(
'manage_members',
"", $this->
object->getRefId())) &&
2338 $this->rbac_system->checkAccess(
'internal_mail', $mail->getMailObjectReferenceId())) {
2339 $this->error->raiseError($this->
lng->txt(
"msg_no_perm_read"), $this->error->MESSAGE);
2342 $this->tabs_gui->setTabActive(
'members');
2346 $this->
object->getRefId(),
2352 $this->
ctrl->forwardCommand($mail_search);
2355 case 'ilbadgemanagementgui':
2356 $this->tabs_gui->setTabActive(
'obj_tool_setting_badges');
2358 $this->
ctrl->forwardCommand($bgui);
2361 case "ilcontainernewssettingsgui":
2363 $this->tabs_gui->activateTab(
'settings');
2364 $this->tabs_gui->activateSubTab(
'obj_news_settings');
2366 $news_set_gui->setTimeline(
true);
2367 $news_set_gui->setCronNotifications(
true);
2368 $news_set_gui->setHideByDate(
true);
2369 $this->
ctrl->forwardCommand($news_set_gui);
2372 case "ilnewstimelinegui":
2374 $this->
ctrl->redirectByClass(self::class,
"view");
2376 $this->tabs_gui->setTabActive(
'news_timeline');
2378 $this->
object->getRefId(),
2379 $this->
object->getNewsTimelineAutoEntries()
2381 $t->setUserEditAll($this->
access->checkAccess(
'write',
'', $this->object->getRefId(),
'grp'));
2383 $this->
ctrl->forwardCommand($t);
2385 $this->
user->getId(),
2386 $this->
object->getId(),
2387 $this->
object->getRefId(),
2392 case 'ilmemberexportsettingsgui':
2394 $this->tabs_gui->activateTab(
'properties');
2395 $this->tabs_gui->activateSubTab(
'export_members');
2397 $this->
ctrl->forwardCommand($settings_gui);
2400 case "ilcontainerskillgui":
2401 $this->tabs_gui->activateTab(
'obj_tool_setting_skills');
2406 case 'ilobjecttranslationgui':
2409 $this->tabs_gui->activateTab(
"settings");
2410 $this->tabs_gui->activateSubTab(
"obj_multilinguality");
2412 $this->
ctrl->forwardCommand($transgui);
2415 case "ilbookinggatewaygui":
2416 $this->tabs_gui->activateTab(
'obj_tool_setting_booking');
2423 if ($cmd ==
'infoScreenGoto') {
2428 $cmd =
'infoScreen';
2432 if (!$this->creation_mode) {
2433 if ($cmd ==
"infoScreen") {
2440 if (!$this->creation_mode
2441 && $cmd !=
'infoScreen' 2442 && $cmd !=
'sendfile' 2443 && $cmd !=
'unsubscribe' 2444 && $cmd !=
'deliverCertificate' 2445 && $cmd !=
'performUnsubscribe' 2446 && $cmd !=
'removeFromDesk' 2448 && !$this->
access->checkAccess(
"read",
'', $this->object->getRefId())
2450 || $cmd ==
'subscribe' 2451 || $cmd ===
'leaveWaitList') {
2452 if ($this->rbac_system->checkAccess(
'join', $this->object->getRefId()) &&
2454 $this->
ctrl->redirectByClass(
"ilCourseRegistrationGUI");
2461 if ($cmd ==
'listObjectives') {
2462 $this->
ctrl->setReturn($this,
"");
2464 $this->
ctrl->forwardCommand($obj_gui);
2468 if ($cmd ==
"" && $this->
object->isNewsTimelineLandingPageEffective()) {
2469 $this->
ctrl->redirectByClass(
"ilnewstimelinegui");
2480 if ($header_action) {
2487 if ($this->
access->checkAccess(
'write',
'', $this->object->getRefId())) {
2492 if (!$this->
object->getMemberObject()->isAssigned()) {
2509 $this->
logger->warning(
'Missing course confirmation.');
2514 $this->
logger->warning(
'Missing required fields');
2522 return array(
"ilCourseRegisterGUI",
'ilConditionHandlerGUI');
2527 $this->
ctrl->redirectByClass(
'ilcoursemembershipgui');
2530 public static function _goto($a_target,
string $a_add =
""): void
2533 $main_tpl = $DIC->ui()->mainTemplate();
2534 $ilAccess = $DIC[
'ilAccess'];
2537 $ilUser = $DIC[
'ilUser'];
2538 $http = $DIC->http();
2539 $refinery = $DIC->refinery();
2541 $a_target = (
int) $a_target;
2543 if (substr($a_add, 0, 5) ==
'rcode') {
2546 if ($http->
wrapper()->query()->has(
'target')) {
2547 $target = $http->
wrapper()->query()->retrieve(
2554 "login.php?target=" . $target .
"&cmd=force_login&lang=" .
2555 $ilUser->getCurrentLanguage()
2567 if ($a_add ==
"mem" && $ilAccess->checkAccess(
"manage_members",
"", $a_target)) {
2575 if ($ilAccess->checkAccess(
"read",
"", $a_target)) {
2579 if ($ilAccess->checkAccess(
"visible",
"", $a_target)) {
2583 $main_tpl->setOnScreenMessage(
'failure', sprintf(
2584 $lng->
txt(
"msg_no_perm_read_item"),
2597 $this->tabs_gui->activateTab(
'settings');
2598 $this->tabs_gui->activateSubTab(
'crs_map_settings');
2601 !$this->
access->checkAccess(
"write",
"", $this->object->getRefId())) {
2605 $latitude = $this->
object->getLatitude();
2606 $longitude = $this->
object->getLongitude();
2607 $zoom = $this->
object->getLocationZoom();
2610 if ($latitude == 0 && $longitude == 0 && $zoom == 0) {
2612 $latitude = $def[
"latitude"];
2613 $longitude = $def[
"longitude"];
2614 $zoom = $def[
"zoom"];
2623 $this->
lng->txt(
"crs_enable_map"),
2626 $public->setValue(
"1");
2627 $public->setChecked($this->
object->getEnableCourseMap());
2632 $this->
lng->txt(
"crs_map_location"),
2636 $loc_prop->setLongitude((
float) $longitude);
2637 $loc_prop->setZoom((
int) $zoom);
2642 $this->tpl->setVariable(
"ADM_CONTENT",
$form->
getHTML());
2652 if ($this->
http->wrapper()->post()->has(
'location')) {
2653 $custom_transformer = $this->
refinery->custom()->transformation(
2654 fn($array) => $array
2661 $enable_map =
false;
2662 if ($this->
http->wrapper()->post()->has(
'enable_map')) {
2663 $enable_map = $this->
http->wrapper()->post()->retrieve(
2665 $this->
refinery->kindlyTo()->bool()
2668 $this->
object->setLatitude(
$location[
'latitude']);
2669 $this->
object->setLongitude(
$location[
'longitude']);
2670 $this->
object->setLocationZoom(
$location[
'zoom']);
2671 $this->
object->setEnableCourseMap($enable_map);
2672 $this->
object->update();
2673 $this->
ctrl->redirect($this,
"editMapSettings");
2683 'ilcoursecontentgui',
2685 $this->
object->getAboStatus(),
2686 $this->
object->getRefId(),
2687 $this->
object->getId()
2693 string $a_cmd_class,
2696 int $a_course_ref_id,
2697 int $a_course_obj_id,
2698 int $a_parent_ref_id = 0
2701 $lng = $DIC->language();
2702 $ilAccess = $DIC->access();
2705 if ($a_parent_ref_id == 0) {
2706 $a_parent_ref_id = $a_course_ref_id;
2711 $a_item_list_gui->addCommandLinkParameter(array(
'crs_show_result' => $a_course_ref_id));
2716 $is_tutor = ($ilAccess->checkAccess(
2732 $ilAccess = $DIC[
'ilAccess'];
2734 $ilCtrl = $DIC[
'ilCtrl'];
2736 if ($this->
object->getType() !=
'crs') {
2739 if (!$this->
access->checkAccess(
2742 $this->object->getRefId(),
2744 $this->
object->getId()
2748 if ($this->
object->enabledObjectiveView()) {
2756 $this->tabs_gui->addSubTab(
2759 $this->
ctrl->getLinkTargetByClass(
"ilobjcoursegui",
"view")
2762 $this->tabs_gui->addSubTab(
2765 $this->
ctrl->getLinkTargetByClass(
"ilobjcoursegui",
"disableAdministrationPanel")
2777 $confirm->setHeaderText($this->
lng->txt(
'crs_objectives_reset_sure'));
2778 $confirm->setFormAction($this->
ctrl->getFormAction($this));
2779 $confirm->setConfirm($this->
lng->txt(
'reset'),
'reset');
2780 $confirm->setCancel($this->
lng->txt(
'cancel'),
'cancel');
2781 $this->tpl->setContent($confirm->getHTML());
2796 $this->
user->deletePref(
'crs_objectives_force_details_' . $this->
object->getId());
2797 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'crs_objectives_reseted'));
2803 if ($this->
access->checkAccess(
'write',
'', $this->object->getRefId())) {
2807 $this->
object->getRefId(),
2808 $this->
object->getId()
2810 if (count($this->start_obj->getStartObjects()) &&
2811 !$this->start_obj->allFullfilled($this->user->getId())) {
2823 $link = chr(13) . chr(10) . chr(13) . chr(10);
2824 $link .= $this->
lng->txt(
'crs_mail_permanent_link');
2825 $link .= chr(13) . chr(10) . chr(13) . chr(10);
2826 $link .= ilLink::_getLink($this->
object->getRefId());
2827 return rawurlencode(base64_encode($link));
2832 $lg = parent::initHeaderAction($sub_type, $sub_id);
2838 if ($validator->isCertificateDownloadable($this->user->getId(), $this->
object->getId())) {
2839 $cert_url = $this->
ctrl->getLinkTarget($this,
"deliverCertificate");
2841 $this->
lng->loadLanguageModule(
"certificate");
2842 $lg->addCustomCommand($cert_url,
"download_certificate");
2847 $this->
lng->txt(
"download_certificate"),
2857 if (!$noti->isCurrentUserActive()) {
2861 $this->
lng->txt(
"crs_notification_deactivated")
2864 $this->
ctrl->setParameter($this,
"crs_ntf", 1);
2865 $caption =
"crs_activate_notification";
2870 $this->
lng->txt(
"crs_notification_activated")
2873 $this->
ctrl->setParameter($this,
"crs_ntf", 0);
2874 $caption =
"crs_deactivate_notification";
2877 if ($noti->canCurrentUserEdit()) {
2878 $lg->addCustomCommand(
2879 $this->
ctrl->getLinkTarget($this,
"saveNotification"),
2884 $this->
ctrl->setParameter($this,
"crs_ntf",
"");
2897 if ($this->
access->checkAccess(
'manage_members',
'', $this->ref_id)) {
2899 if ($this->
http->wrapper()->query()->has(
'member_id')) {
2900 $user_id = $this->
http->wrapper()->query()->retrieve(
2907 $user_id = $this->
user->getId();
2910 $objId = $this->
object->getId();
2914 if (
false === $validator->isCertificateDownloadable($user_id,
$objId)) {
2915 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"permission_denied"),
true);
2916 $this->
ctrl->redirect($this);
2926 $this->
lng->txt(
'error_creating_certificate_pdf')
2933 $this->
ctrl->redirectByClass(array(
'ilrepositorygui',
'ilobjcoursegui',
'illoeditorgui'),
'materials');
2938 $post_position = (array) ($this->
http->request()->getParsedBody()[
'position'] ?? []);
2939 if (isset($post_position[
'lobj'])) {
2940 $lobj = $post_position[
'lobj'];
2941 $objective_order = array();
2942 foreach ($lobj as $objective_id => $materials) {
2943 $objective_order[$objective_id] = $materials[0];
2944 unset($lobj[$objective_id][0]);
2947 asort($objective_order);
2949 foreach (array_keys($objective_order) as $objective_id) {
2951 $obj->writePosition(++$pos);
2955 foreach ($lobj as $objective_id => $materials) {
2960 foreach (array_keys($materials) as $ass_id) {
2961 $objmat->writePosition($ass_id, ++$pos);
2965 parent::saveSortingObject();
2971 if ($this->
http->wrapper()->query()->has(
'tid')) {
2972 $tid = $this->
http->wrapper()->query()->retrieve(
2976 } elseif ($this->
http->wrapper()->post()->has(
'tid')) {
2977 $tid = $this->
http->wrapper()->post()->retrieve(
2988 if ($this->
http->wrapper()->query()->has(
'tid')) {
2989 $tid = $this->
http->wrapper()->query()->retrieve(
2995 if ($this->
http->wrapper()->query()->has(
'objective_id')) {
2996 $objective_id = $this->
http->wrapper()->query()->retrieve(
3004 $this->
user->getId()
3006 $passed =
$res->getCompletedObjectiveIds();
3008 $has_completed =
false;
3009 if ($objective_id) {
3010 $objective_ids = array($objective_id);
3011 if (in_array($objective_id, $passed)) {
3012 $has_completed =
true;
3019 if (count($objective_ids) === count($passed)) {
3020 $has_completed =
true;
3025 if ($has_completed) {
3041 if ($a_objective_id) {
3042 $question = $this->
lng->txt(
'crs_loc_objective_passed_confirmation');
3044 $question = $this->
lng->txt(
'crs_loc_objectives_passed_confirmation');
3047 $confirm->setHeaderText($question);
3048 $confirm->addHiddenItem(
'objective_id', (
string) $a_objective_id);
3049 $confirm->addHiddenItem(
'tid', (
string) $a_test_id);
3050 $confirm->setConfirm($this->
lng->txt(
'crs_loc_tst_start'),
'redirectLocToTestConfirmed');
3051 $confirm->setCancel($this->
lng->txt(
'cancel'),
'view');
3054 $this->tpl->setContent($confirm->getHTML());
3064 $crs_admin = $this->
object->getDefaultAdminRole();
3065 $crs_member = $this->
object->getDefaultMemberRole();
3066 $local_roles = $this->
object->getLocalCourseRoles(
false);
3070 if (in_array($crs_member, $local_roles)) {
3071 #$crs_roles[$crs_member] = ilObjRole::_getTranslation(array_search ($crs_member, $local_roles)); 3072 #unset($local_roles[$crs_roles[$crs_member]]); 3075 foreach ($local_roles as $title => $role_id) {
3083 if ($a_exclude !== []) {
3084 foreach ($a_exclude as $excluded_role) {
3085 if (isset($crs_roles[$excluded_role])) {
3086 unset($crs_roles[$excluded_role]);
3102 $this->
ctrl->redirectByClass(ilUsersGalleryGUI::class);
3110 $this->
ctrl->setReturn($this,
"view");
static handleCode(int $a_ref_id, string $a_type, string $a_code)
Interface GlobalHttpState.
prepareOutput(bool $show_subobjects=true)
redirectLocToTestConfirmedObject()
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getInstance(int $a_ref_id, bool $a_include_auto_entries)
class ilConditionHandlerGUI
setPropertyForm(ilPropertyFormGUI $form)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Class ilBadgeManagementGUI.
const IL_CRS_VIEW_TIMING_ABSOLUTE
setMessage(string $a_message)
const LP_MODE_MANUAL_BY_TUTOR
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
saveSortingSettings(ilPropertyFormGUI $form)
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
getFormAction(string $cmd, string $default_form_action="")
Get form action for command (command is method name without "Object", e.g.
const IL_CRS_SUBSCRIPTION_DIRECT
GUI class for the workflow of copying objects.
if($clientAssertionType !='urn:ietf:params:oauth:client-assertion-type:jwt-bearer'|| $grantType !='client_credentials') $parts
const IL_CRS_SUBSCRIPTION_DEACTIVATED
static _goto($a_target, string $a_add="")
confirmDeleteInfoFilesObject()
$location
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static lookupRegistrationInfo(int $a_obj_id)
static _isActivated(int $a_obj_id)
Is activated.
__construct($a_data, int $a_id, bool $a_call_by_reference=true, bool $a_prepare_output=true)
jump2UsersGalleryObject()
const LP_STATUS_NOT_ATTEMPTED
static _lookupInProgressForObject(int $a_obj_id, ?array $a_user_ids=null)
static _getInstanceByObjId(int $a_obj_id, int $a_usr_id)
static isActiveForRefId(int $ref_id)
static getImagePath(string $img, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
static getInstanceByObjId(int $a_obj_id)
Get instance by obj type.
static formatDate(ilDateTime $date, bool $a_skip_day=false, bool $a_include_wd=false, bool $include_seconds=false)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
get(string $part=self::DEFAULT_BLOCK)
Renders the given block and returns the html string.
static _gotoRepositoryNode(int $ref_id, string $cmd="")
static _lookupName(int $a_user_id)
lookup user name
This class is used for integration of the booking manager as a service into other repository objects...
static getValidFilename(string $a_filename)
static _fillHTMLMetaTags(int $a_rbac_id, int $a_obj_id, string $a_type)
static _readFilesByCourse(int $a_course_id)
Class ilMailMemberSearchGUI.
static _getObjectiveIds(int $course_id, bool $a_activated_only=false)
viewObject()
viewObject container presentation for "administration -> repository, trash, permissions" ...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
ilAdvancedMDRecordGUI $record_gui
enableSubscribe(bool $status)
setVariable(string $variable, $value='')
Sets the given variable to the given value.
afterSave(ilObject $new_object)
static updateServiceSettingsForm(int $obj_id, ilPropertyFormGUI $form, array $services)
static checkAccess(int $a_ref_id, bool $a_allow_only_read=true)
check access to learning progress
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
updateLPFromStatus(int $a_member_id, bool $a_has_passed)
sync course status and lp status
static _getFields(int $a_container_id, $a_sort=self::IL_CDF_SORT_NAME)
Get all fields of a container.
const STATUS_DETERMINATION_LP
isActiveAdministrationPanel()
const LP_STATUS_IN_PROGRESS
deliverCertificateObject()
static _lookupContainerSetting(int $a_id, string $a_keyword, string $a_default_value=null)
static _lookupViewMode(int $a_id)
editObject(ilPropertyFormGUI $form=null)
static _lookupCompletedForObject(int $a_obj_id, ?array $a_user_ids=null)
static _lookupObjId(int $ref_id)
static deliverFileLegacy(string $a_file, ?string $a_filename=null, ?string $a_mime=null, ?bool $isInline=false, ?bool $removeAfterDelivery=false, ?bool $a_exit_after=true)
static _tracProgress(int $a_user_id, int $a_obj_id, int $a_ref_id, string $a_obj_type='')
setValue(string $a_value)
modifyItemGUI(ilObjectListGUI $a_item_list_gui, array $a_item_data)
deleteObject(bool $error=false)
const EXTERNAL_MAIL_PREFIX
Export User Interface Class.
const MESSAGE_TYPE_SUCCESS
static _enabledUserRelatedData()
static _checkRequired(int $a_usr_id, int $a_obj_id)
class ilCourseObjectiveMaterials
performUnsubscribeObject()
GUI class for public user profile presentation.
static _enabledLearningProgress()
ilContainerStartObjects $start_obj
const IL_CRS_SUBSCRIPTION_PASSWORD
Class ilMailMemberCourseRoles.
static http()
Fetches the global http state from ILIAS.
class ilobjcourseobjectivesgui
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const IL_CRS_SUBSCRIPTION_LIMITED
ilGlobalTemplateInterface $tpl
static _lookupTitle(int $obj_id)
static _getInstanceByObjId(int $a_obj_id)
const MAIL_ALLOWED_TUTORS
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
createMailSignature()
Create a course mail signature.
static _getCountObjectives(int $a_obj_id, bool $a_activated_only=false)
addStandardContainerSubTabs(bool $a_include_view=true)
Add standard container subtabs for view, manage, oderdering and text/media editor link...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _getTranslation(string $a_role_title)
initDidacticTemplate(ilPropertyFormGUI $form)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Validates if an active certificate is stored in the database and can be downloaded by the user...
static getDefaultSettings()
Get default longitude, latitude and zoom.
static _recordWriteEvent(int $obj_id, int $usr_id, string $action, ?int $parent_obj_id=null)
Records a write event.
redirectLocToTestConfirmation(int $a_objective_id, int $a_test_id)
Show confirmation whether user wants to start a new run or resume a previous run. ...
const IL_CRS_VIEW_TIMING_RELATIVE
const IL_CRS_VIEW_BY_TYPE
readMemberData(array $ids, array $selected_columns=null, bool $skip_names=false)
afterImport(ilObject $new_object)
static _modifyItemGUI(ilObjectListGUI $a_item_list_gui, string $a_cmd_class, array $a_item_data, bool $a_abo_status, int $a_course_ref_id, int $a_course_obj_id, int $a_parent_ref_id=0)
static initServiceSettingsForm(int $obj_id, ilPropertyFormGUI $form, array $services)
const STATUS_DETERMINATION_MANUAL
Last visited history for repository items.
ilNavigationHistory $navigation_history
getEditFormValues()
values are already set in initEditForm Returning an empty array avoid overriding these values...
setCustomRolesForSelection(array $a_roles)
Set custom roles for mapping to LTI roles.
const AUTO_RATING_NEW_OBJECTS
Class ilObjCourseGroupingGUI.
saveListPresentation(ilPropertyFormGUI $form)
checkPermissionBool(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
static _writeContainerSetting(int $a_id, string $a_keyword, string $a_value)
const IL_CRS_VIEW_OBJECTIVE
static redirect(string $a_script)
setCurrentBlock(string $part=self::DEFAULT_BLOCK)
Sets the template to the given block.
setObjParticipants(ilParticipants $objParticipants)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static isActivated()
Checks whether Map feature is activated.
addAdoptContentLinkToToolbar()
const IL_CRS_VIEW_SESSIONS
Just a wrapper class to create Unit Test for other classes.
redirectLocToTestObject($a_force_new_run=null)
static _registrationEnabled(int $a_obj_id)
Registration enabled? Method is in Access class, since it is needed by Access/ListGUI.
static generateCode()
Generate new registration key.
initListPresentationForm(ilPropertyFormGUI $form)
Add list presentation settings to form.
static _getInstanceByType(string $a_type)
Get Singleton Instance.
const IL_CRS_SUBSCRIPTION_UNLIMITED
static isAccessible(int $ref_id)
static formatPeriod(ilDateTime $start, ilDateTime $end, bool $a_skip_starting_day=false)
Format a period of two dates Shows: 14.
static setBlockedForLP(bool $a_status)
Toggle LP blocking property status.
initHeaderAction(?string $sub_type=null, ?int $sub_id=null)
initSortingForm(ilPropertyFormGUI $form, array $a_sorting_settings)
Append sorting settings to property form.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
getReturnLocation(string $cmd, string $default_location="")
Get return location for command (command is method name without "Object", e.g.
const LP_CONTEXT_REPOSITORY
This class represents a text area property in a property form.
const IL_CRS_SUBSCRIPTION_CONFIRMATION
Class ilCourseContentGUI.
static getMailObjectRefId()
static _lookupProgressByObjId(int $a_obj_id)
lookup progress for a specific object
setInfoObject(ilInfoScreenGUI $info)
get info sections
ILIAS Container InternalGUIService $gui
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setSubTabs(string $a_tab)
Class ilContainerGUI This is a base GUI class for all container objects in ILIAS: root folder...
static _isParticipant(int $a_ref_id, int $a_usr_id)
Static function to check if a user is a participant of the container object.
static getAvailablePortfolioLinksForUserIds(array $a_owner_ids, ?string $a_back_url=null)
static _lookupFailedForObject(int $a_obj_id, ?array $a_user_ids=null)
New PermissionGUI (extends from old ilPermission2GUI) RBAC related output.
setCompleted(bool $a_status)
editInfoObject(ilPropertyFormGUI $a_form=null)
static _isOnList(int $a_usr_id, int $a_obj_id)
static _hasAccepted(int $a_usr_id, int $a_obj_id)
Check if user has accepted agreement.
parseCurrentBlock(string $block_name=self::DEFAULT_BLOCK)
Parses the given block.
static _lookupType(int $id, bool $reference=false)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const ORGU_POSITION_ACCESS
infoScreenObject()
this one is called from the info button in the repository not very nice to set cmdClass/Cmd manually...
const LP_STATUS_COMPLETED
const TYPE_UNSUBSCRIBE_MEMBER
static _catchupWriteEvents(int $obj_id, int $usr_id, ?string $timestamp=null)
Catches up with all write events which occured before the specified timestamp.
addHeaderAction()
Add header action menu.
static getInstance(int $obj_id)
static makeClickable(string $a_text, bool $detectGotoLinks=false)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _fieldsToInfoString(int $a_obj_id)
kindlyTo()
Combined validations and transformations for primitive data types that establish a baseline for furth...
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
checkPermission(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
static _hasFields(int $a_container_id)
Check if there are any define fields.
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
static deleteRuns(int $a_container_id, int $a_user_id)
Class ilContainerStartObjectsGUI.
GUI class for object translation handling.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const CALENDAR_CONFIGURATION
static _gotoRepositoryRoot(bool $raise_error=false)
Goto repository root.
static _updateStatus(int $a_obj_id, int $a_usr_id, ?object $a_obj=null, bool $a_percentage=false, bool $a_force_raise=false)
getLocalRoles(array $a_exclude=array())
downloadPdf(int $userId, int $objectId)
const BREADCRUMB_FULL_PATH
const BREADCRUMB_CRS_ONLY