19 declare(strict_types=0);
61 public function __construct($a_data,
int $a_id,
bool $a_call_by_reference =
true,
bool $a_prepare_output =
true)
68 $this->
help = $DIC->help();
69 $this->
logger = $DIC->logger()->crs();
70 $this->navigation_history = $DIC[
'ilNavigationHistory'];
71 $this->
ctrl->saveParameter($this, [
'ref_id']);
72 $this->
lng->loadLanguageModule(
'crs');
73 $this->
lng->loadLanguageModule(
'cert');
74 $this->
lng->loadLanguageModule(
'obj');
77 $this->news = $DIC->news();
92 $part->updateNotification(
94 (bool) $this->
settings->get(
'mail_crs_admin_notification',
'1')
96 parent::afterImport($new_object);
106 if (strtolower($this->std_request->getBaseClass()) ===
"iladministrationgui") {
107 parent::viewObject();
111 $this->tabs_gui->setTabActive(
'view_content');
114 if (strtolower($this->std_request->getBaseClass()) ===
"iladministrationgui") {
115 parent::viewObject();
120 if ($this->
ctrl->getNextClass() !=
"ilcolumngui") {
122 $this->
user->getId(),
123 $this->
object->getId(),
124 $this->
object->getRefId(),
130 $this->
ctrl->redirectByClass(ilMemberAgreementGUI::class);
137 $stgui->enableDesktop($this->
object->getAboStatus(), $this);
149 parent::renderObject();
159 $this->tabs_gui->activateTab(
'view_content');
160 parent::deleteObject(
$error);
165 parent::renderObject();
176 $this->
ctrl->redirectByClass([
178 ilInfoScreenGUI::class
188 $this->tabs_gui->setTabActive(
'info_short');
192 $info->enablePrivateNotes();
193 $info->enableFeedback();
195 $info->enableBookingInfo(
true);
196 if ($this->
access->checkAccess(
"write",
"", $this->ref_id)) {
197 $info->enableNewsEditing();
201 strlen($this->
object->getImportantInformation()) ||
202 strlen($this->
object->getSyllabus()) ||
203 strlen((
string) $this->
object->getTargetGroup()) ||
205 $info->addSection($this->
lng->txt(
'crs_general_informations'));
208 if (strlen($this->
object->getImportantInformation())) {
210 $this->
lng->txt(
'crs_important_info'),
216 if (strlen($this->
object->getSyllabus())) {
217 $info->addProperty($this->
lng->txt(
'crs_syllabus'), nl2br(
221 if (strlen((
string) $this->
object->getTargetGroup())) {
223 $this->
lng->txt(
'crs_target_group'),
231 $tpl =
new ilTemplate(
'tpl.event_info_file.html',
true,
true,
'components/ILIAS/Course');
233 foreach ($files as $file) {
235 $this->
ctrl->setParameter($this,
'file_id', $file->getFileId());
244 $this->
lng->txt(
'crs_file_download'),
251 $record_gui->
parse();
254 $info->addMetaDataSections($this->
object->getId(), 0, $this->
object->getType());
257 if ($this->
object->hasContactData()) {
258 $info->addSection($this->
lng->txt(
"crs_contact"));
260 if (strlen($this->
object->getContactName())) {
262 $this->
lng->txt(
"crs_contact_name"),
263 $this->
object->getContactName()
266 if (strlen($this->
object->getContactResponsibility())) {
268 $this->
lng->txt(
"crs_contact_responsibility"),
269 $this->
object->getContactResponsibility()
272 if (strlen($this->
object->getContactPhone())) {
274 $this->
lng->txt(
"crs_contact_phone"),
275 $this->
object->getContactPhone()
278 if ($this->
object->getContactEmail()) {
280 $has_mail_access = $this->rbacsystem->checkAccessOfUser(
281 $this->
user->getId(),
285 $emails = explode(
",", $this->
object->getContactEmail());
287 foreach ($emails as $email) {
288 $email = trim($email);
289 if (!$has_mail_access) {
290 $mailString .= $email .
"<br />";
293 $etpl =
new ilTemplate(
"tpl.crs_contact_email.html",
true,
true,
'components/ILIAS/Course');
307 'ref_id' => $this->
object->getRefId(),
312 $etpl->setVariable(
"CONTACT_EMAIL", $email);
313 $mailString .= $etpl->get() .
"<br />";
315 $info->addProperty($this->
lng->txt(
"crs_contact_email"), $mailString);
317 if (strlen($this->
object->getContactConsultation())) {
319 $this->
lng->txt(
"crs_contact_consultation"),
320 nl2br($this->
object->getContactConsultation())
325 $conts =
$parts->getContacts();
327 $info->addSection($this->
lng->txt(
"crs_mem_contacts"));
328 foreach ($conts as
$c) {
330 $pgui->setBackUrl($this->
ctrl->getLinkTargetByClass(
"ilinfoscreengui"));
331 $pgui->setEmbedded(
true);
332 $info->addProperty(
"", $pgui->getHTML());
337 $info->enableAvailability(
false);
338 $this->
lng->loadLanguageModule(
"rep");
339 $info->addSection($this->
lng->txt(
"rep_activation_availability"));
340 $info->showLDAPRoleGroupMappingInfo();
343 $info->addAccessPeriodProperty();
346 switch ($this->
object->getSubscriptionLimitationType()) {
348 $txt = $this->
lng->txt(
"crs_info_reg_deactivated");
352 switch ($this->
object->getSubscriptionType()) {
354 $txt = $this->
lng->txt(
"crs_info_reg_confirmation");
357 $txt = $this->
lng->txt(
"crs_info_reg_direct");
360 $txt = $this->
lng->txt(
"crs_info_reg_password");
366 $info->addProperty($this->
lng->txt(
"crs_info_reg"),
$txt);
368 if ($this->
object->getSubscriptionUnlimitedStatus()) {
370 $this->
lng->txt(
"crs_reg_until"),
371 $this->
lng->txt(
'crs_unlimited')
373 } elseif ($this->
object->getSubscriptionStart() < time()) {
375 $this->
lng->txt(
"crs_reg_until"),
376 $this->
lng->txt(
'crs_to') .
' ' .
379 } elseif ($this->
object->getSubscriptionStart() > time()) {
381 $this->
lng->txt(
"crs_reg_until"),
382 $this->
lng->txt(
'crs_from') .
' ' .
386 if ($this->
object->isSubscriptionMembershipLimited()) {
387 if ($this->
object->getSubscriptionMinMembers()) {
389 $this->
lng->txt(
"mem_min_users"),
390 $this->
object->getSubscriptionMinMembers()
393 if ($this->
object->getSubscriptionMaxMembers()) {
396 $this->
lng->txt(
'mem_free_places'),
397 (string) ($reg_info[
'reg_info_free_places'] ??
'0')
403 if ($this->
object->getCancellationEnd()) {
405 $this->
lng->txt(
'crs_cancellation_end'),
412 !$this->
object->getCourseStart()->isNull()
415 $this->
lng->txt(
'crs_period'),
417 $this->
object->getCourseStart(),
418 $this->
object->getCourseEnd()
429 $this->
lng->loadLanguageModule(
'ps');
430 $info->addSection($this->
lng->txt(
'crs_user_agreement_info'));
431 $info->addProperty($this->
lng->txt(
'ps_export_data'), $field_info->exportableFieldsToInfoString());
434 $info->addProperty($this->
lng->txt(
'ps_crs_user_fields'), $fields);
437 $info->enableLearningProgress(
true);
440 $this->
ctrl->forwardCommand($info);
446 if ($noti->canCurrentUserEdit()) {
448 if ($this->
http->wrapper()->query()->has(
'crs_ntf')) {
449 $crs_ntf = $this->
http->wrapper()->query()->retrieve(
455 $noti->activateUser();
457 $noti->deactivateUser();
460 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"settings_saved"),
true);
461 $this->
ctrl->redirect($this,
"");
468 $this->tabs_gui->setTabActive(
'settings');
469 $this->tabs_gui->setSubTabActive(
'crs_info_settings');
474 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.edit_info.html',
'components/ILIAS/Course');
475 $this->tpl->setVariable(
'INFO_TABLE', $a_form->getHTML());
481 foreach ($files as $file) {
482 $table_data[
'id'] = $file->getFileId();
483 $table_data[
'filename'] = $file->getFileName();
484 $table_data[
'filetype'] = $file->getFileType();
485 $table_data[
'filesize'] = $file->getFileSize();
487 $rows[] = $table_data;
490 $table_gui->setTitle($this->
lng->txt(
"crs_info_download"));
491 $table_gui->setData($rows);
492 $table_gui->addCommandButton(
"cancel", $this->
lng->txt(
"cancel"));
493 $table_gui->addMultiCommand(
"confirmDeleteInfoFiles", $this->
lng->txt(
"delete"));
494 $table_gui->setSelectAllCheckbox(
"file_id");
495 $this->tpl->setVariable(
'INFO_FILE_TABLE', $table_gui->getHTML());
501 if ($this->
http->wrapper()->post()->has(
'file_id')) {
502 $file_ids = $this->
http->wrapper()->post()->retrieve(
504 $this->
refinery->kindlyTo()->listOf(
509 if (count($file_ids) === 0) {
510 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'));
516 $this->tabs_gui->setTabActive(
'settings');
517 $this->tabs_gui->setSubTabActive(
'crs_info_settings');
522 $c_gui->setFormAction($this->
ctrl->getFormAction($this,
"deleteInfoFiles"));
523 $c_gui->setHeaderText($this->
lng->txt(
"info_delete_sure"));
524 $c_gui->setCancel($this->
lng->txt(
"cancel"),
"editInfo");
525 $c_gui->setConfirm($this->
lng->txt(
"confirm"),
"deleteInfoFiles");
528 foreach ($file_ids as $file_id) {
530 $c_gui->addItem(
"file_id[]", $file_id, $file->getFileName());
532 $this->tpl->setContent($c_gui->getHTML());
538 if ($this->
http->wrapper()->post()->has(
'file_id')) {
539 $file_ids = $this->
http->wrapper()->post()->retrieve(
541 $this->
refinery->kindlyTo()->listOf(
547 if (count($file_ids) === 0) {
548 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'));
553 foreach ($file_ids as $file_id) {
555 if ($this->
object->getId() == $file->getCourseId()) {
559 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'settings_saved'));
584 $tg = new \ilTextAreaInputGUI($this->
lng->txt(
'crs_target_group'),
'target_group');
585 $tg->setValue($this->
object->getTargetGroup() ??
"");
590 $section->setTitle($this->
lng->txt(
'crs_info_download'));
598 $section->setTitle($this->
lng->txt(
'crs_contact'));
602 $text->setValue($this->
object->getContactName());
604 $text->setMaxLength(70);
607 $text =
new ilTextInputGUI($this->
lng->txt(
'crs_contact_responsibility'),
'contact_responsibility');
608 $text->setValue($this->
object->getContactResponsibility());
610 $text->setMaxLength(70);
613 $text =
new ilTextInputGUI($this->
lng->txt(
'crs_contact_phone'),
'contact_phone');
614 $text->setValue($this->
object->getContactPhone());
616 $text->setMaxLength(40);
619 $text =
new ilTextInputGUI($this->
lng->txt(
'crs_contact_email'),
'contact_email');
620 $text->setValue($this->
object->getContactEmail());
621 $text->setInfo($this->
lng->txt(
'crs_contact_email_info'));
623 $text->setMaxLength(255);
638 $this->record_gui->parse();
651 $this->
object->setImportantInformation((
string)
$form->
getInput(
'important'));
652 $this->
object->setSyllabus((
string)
$form->
getInput(
'syllabus'));
653 $this->
object->setTargetGroup((
string)
$form->
getInput(
'target_group'));
654 $this->
object->setContactName((
string)
$form->
getInput(
'contact_name'));
655 $this->
object->setContactResponsibility((
string)
$form->
getInput(
'contact_responsibility'));
656 $this->
object->setContactPhone((
string)
$form->
getInput(
'contact_phone'));
657 $this->
object->setContactEmail((
string)
$form->
getInput(
'contact_email'));
658 $this->
object->setContactConsultation((
string)
$form->
getInput(
'contact_consultation'));
665 $file_obj->setCourseId($this->
object->getId());
666 $file_obj->setFileName((
string) $file_name);
667 $file_obj->setFileSize((
int) $file_info[
'size']);
668 $file_obj->setFileType((
string) $file_info[
'type']);
669 $file_obj->setTemporaryName((
string) $file_info[
'tmp_name']);
670 $file_obj->setErrorCode((
int) $file_info[
'error']);
674 $file_obj->validate();
675 $this->
object->validateInfoSettings();
676 if (strlen($this->error->getMessage())) {
679 if (!$this->record_gui->importEditFormPostValues()) {
684 $this->tpl->setOnScreenMessage(
'failure', $this->error->getMessage());
690 $this->
object->update();
692 $this->record_gui->writeEditForm();
696 $ecs->handleContentUpdate();
698 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"crs_settings_saved"));
701 $this->tpl->setOnScreenMessage(
703 $this->
lng->txt(
'settings_saved')
717 $this->tpl->setOnScreenMessage(
'failure',
$GLOBALS[
'DIC']->
language()->txt(
'err_check_input'));
729 $min->setAlert($this->
lng->txt(
'crs_subscription_min_members_err'));
730 $this->tpl->setOnScreenMessage(
'failure',
$GLOBALS[
'DIC']->
language()->txt(
'err_check_input'));
739 $this->tpl->setOnScreenMessage(
741 $GLOBALS[
'DIC']->
language()->txt(
'crs_tile_and_objective_view_not_supported')
750 $this->tpl->setOnScreenMessage(
752 $GLOBALS[
'DIC']->
language()->txt(
'crs_tile_and_session_limit_not_supported')
766 $this->
object->setCoursePeriod(
767 $crs_period->getStart(),
768 $crs_period->getEnd()
773 if ($period->getStart() && $period->getEnd()) {
774 $this->
object->setActivationStart($period->getStart()->get(
IL_CAL_UNIX));
775 $this->
object->setActivationEnd($period->getEnd()->get(
IL_CAL_UNIX));
776 $this->
object->setActivationVisibility((
int)
$form->
getInput(
'activation_visibility'));
778 $this->
object->setActivationStart(0);
779 $this->
object->setActivationEnd(0);
783 $this->
object->setSubscriptionPassword(
$form->
getInput(
'subscription_password'));
784 $this->
object->setSubscriptionStart(0);
785 $this->
object->setSubscriptionEnd(0);
791 $this->
object->setSubscriptionType(
796 if ($sub_reg_type !== ilCourseConstants::IL_CRS_SUBSCRIPTION_DEACTIVATED) {
797 if ($sub_period->getStart() && $sub_period->getEnd()) {
799 $this->
object->setSubscriptionStart($sub_period->getStart()->get(
IL_CAL_UNIX));
800 $this->
object->setSubscriptionEnd($sub_period->getEnd()->get(
IL_CAL_UNIX));
806 $this->
object->setSubscriptionLimitationType(ilCourseConstants::IL_CRS_SUBSCRIPTION_DEACTIVATED);
810 $this->
object->enableRegistrationAccessCode((
bool)
$form->
getInput(
'reg_code_enabled'));
811 $this->
object->setRegistrationAccessCode(
$form->
getInput(
'reg_code'));
817 $this->
object->enableSubscriptionMembershipLimitation((
bool)
$form->
getInput(
'subscription_membership_limitation'));
818 $this->
object->setSubscriptionMaxMembers((
int)
$form->
getInput(
'subscription_max'));
819 $this->
object->setSubscriptionMinMembers((
int)
$form->
getInput(
'subscription_min'));
822 $this->
object->enableWaitingList(
true);
823 $this->
object->setWaitingListAutoFill(
true);
827 $this->
object->enableWaitingList(
true);
828 $this->
object->setWaitingListAutoFill(
false);
832 $this->
object->enableWaitingList(
false);
833 $this->
object->setWaitingListAutoFill(
false);
836 $this->
object->handleAutoFill();
838 $property_online = $this->
object->getObjectProperties()->getPropertyIsOnline();
839 $online =
$form->
getInput(
'activation_online') ? $property_online->withOnline() : $property_online->withOffline();
840 $this->
object->getObjectProperties()->storePropertyIsOnline($online);
842 $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->saveTitleIconVisibility();
843 $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->saveTopActionsVisibility();
845 $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->saveIcon();
846 $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->saveTileImage();
849 $this->
object->setViewMode((
int)
$form->
getInput(
'view_mode'));
852 $this->
object->setTimingMode((
int)
$form->
getInput(
'timing_mode'));
854 $this->
object->setTimingMode((
int)
$form->
getInput(
'timing_mode'));
855 $this->
object->setOrderType((
int)
$form->
getInput(
'sorting'));
859 "\n\n\nValue: " . (
int)
$form->
getInput(
'tutorial_support_block_checkbox') .
"\n\n\n" 861 $this->
object->setTutorialSupportBlockSettingValue(
866 $this->
object->setShowMembers((
bool)
$form->
getInput(
'show_members'));
869 $this->
object->setShowMembersExport((
bool)
$form->
getInput(
'show_members_export'));
871 $this->
object->setMailToMembersType((
int)
$form->
getInput(
'mail_type'));
873 $this->
object->enableSessionLimit((
int)
$form->
getInput(
'sl'));
876 $this->
object->setNumberOfPreviousSessions(is_numeric($session_sp) ? (
int) $session_sp : -1);
878 $this->
object->setNumberOfnextSessions(is_numeric($session_sn) ? (
int) $session_sn : -1);
879 $this->
object->setAutoNotification(
$form->
getInput(
'auto_notification') == 1 ? true :
false);
882 $show_lp_sync_confirmation =
false;
885 if ($this->
http->wrapper()->post()->has(
'status_dt')) {
886 $status_dt = $this->
http->wrapper()->post()->retrieve(
894 $show_lp_sync_confirmation =
true;
896 $this->
object->setStatusDetermination($status_dt);
900 $this->
object->update();
912 if ($show_lp_sync_confirmation) {
919 if (!$ecs->handleSettingsUpdate(
$form)) {
921 $this->tpl->setOnScreenMessage(
'failure',
$GLOBALS[
'DIC']->
language()->txt(
'err_check_input'));
928 $sub_type === ilCourseConstants::IL_CRS_SUBSCRIPTION_DEACTIVATED &&
930 !is_null($sub_period->getStart()) ||
931 !is_null($sub_period->getEnd())
934 $this->tpl->setOnScreenMessage(
936 $this->
lng->txt(
'crs_msg_no_self_registration_period_if_self_enrolment_disabled'),
940 $this->tpl->setOnScreenMessage(
'failure',
$GLOBALS[
'DIC']->
language()->txt(
'err_check_input'));
961 if ($this->news->isGloballyActivated()) {
971 $cgui->setFormAction($this->
ctrl->getFormAction($this,
"setLPSync"));
972 $cgui->setHeaderText($this->
lng->txt(
"crs_status_determination_sync"));
973 $cgui->setCancel($this->
lng->txt(
"cancel"),
"edit");
974 $cgui->setConfirm($this->
lng->txt(
"confirm"),
"setLPSync");
975 $this->tpl->setContent($cgui->getHTML());
981 $this->
object->update();
982 $this->
object->syncMembersStatusWithLP();
983 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"settings_saved"),
true);
984 $this->
ctrl->redirect($this,
"edit");
990 $this->tabs_gui->setSubTabActive(
'general');
995 parent::editObject();
1022 $this->initFormTitleDescription(
$form);
1029 $this->
lng->loadLanguageModule(
'mem');
1030 $cdur->enableToggleFullTime(
1031 $this->
lng->txt(
'mem_period_without_time'),
1032 !$this->
object->getCourseStartTimeIndication()
1034 $cdur->setShowTime(
true);
1035 $cdur->setInfo($this->
lng->txt(
'crs_period_info'));
1036 $cdur->setStart($this->
object->getCourseStart());
1037 $cdur->setEnd($this->
object->getCourseEnd());
1042 $this->
lng->loadLanguageModule(
'rep');
1045 $section->setTitle($this->
lng->txt(
'rep_activation_availability'));
1049 $online->setChecked(!$this->
object->getOfflineStatus());
1050 $online->setInfo($this->
lng->txt(
'crs_activation_online_info'));
1054 $dur->setShowTime(
true);
1060 $this->
lng->txt(
'rep_activation_limited_visibility'),
1061 'activation_visibility' 1063 $visible->setInfo($this->
lng->txt(
'crs_activation_limited_visibility_info'));
1064 $visible->setChecked((
bool) $this->
object->getActivationVisibility());
1065 $dur->addSubItem($visible);
1068 $section->setTitle($this->
lng->txt(
'crs_reg'));
1073 $sdur->setShowTime(
true);
1074 if ($this->
object->getSubscriptionStart()) {
1077 if ($this->
object->getSubscriptionEnd()) {
1082 $reg_proc->setValue(
1084 ? (
string) $this->
object->getSubscriptionType()
1089 $this->
lng->txt(
'crs_subscription_options_direct'),
1092 $reg_proc->addOption($opt);
1095 $this->
lng->txt(
'crs_subscription_options_password'),
1099 $pass =
new ilTextInputGUI($this->
lng->txt(
"password"),
'subscription_password');
1100 $pass->setRequired(
true);
1101 $pass->setInfo($this->
lng->txt(
'crs_reg_password_info'));
1102 $pass->setSubmitFormOnEnter(
true);
1104 $pass->setMaxLength(32);
1105 $pass->setValue($this->
object->getSubscriptionPassword());
1107 $opt->addSubItem($pass);
1108 $reg_proc->addOption($opt);
1111 $this->
lng->txt(
'crs_subscription_options_confirmation'),
1114 $opt->setInfo($this->
lng->txt(
'crs_registration_confirmation_info'));
1115 $reg_proc->addOption($opt);
1118 $this->
lng->txt(
'crs_reg_selfreg'),
1121 $opt_self_enrollment_enabled->addSubItem($reg_proc);
1122 $opt_self_enrollment_enabled->addSubItem($sdur);
1124 $this->
lng->txt(
'crs_reg_no_selfreg'),
1127 $opt_self_enrollment_disabled->setInfo($this->
lng->txt(
'crs_registration_deactivated'));
1129 $this->
lng->txt(
'crs_registration_type'),
1130 'subscription_limitation_type' 1132 $reg_proc_subscription_reg_type->
setValue(
1137 $reg_proc_subscription_reg_type->addOption($opt_self_enrollment_enabled);
1138 $reg_proc_subscription_reg_type->addOption($opt_self_enrollment_disabled);
1143 $reg_code->setChecked($this->
object->isRegistrationAccessCodeEnabled());
1144 $reg_code->setValue(
'1');
1145 $reg_code->setInfo($this->
lng->txt(
'crs_reg_code_enabled_info'));
1148 if (!$this->
object->getRegistrationAccessCode()) {
1152 $reg_link->setValue($this->
object->getRegistrationAccessCode());
1156 $val = ilLink::_getLink(
1157 $this->
object->getRefId(),
1158 $this->
object->getType(),
1160 'rcode' . $this->
object->getRegistrationAccessCode()
1162 $link->setHtml(
'<span class="small">' . $val .
'</span>');
1163 $reg_code->addSubItem($link);
1169 $cancel->
setInfo($this->
lng->txt(
'crs_cancellation_end_info'));
1170 $cancel_end = $this->
object->getCancellationEnd();
1172 $cancel->setDate($cancel_end);
1178 $this->
lng->txt(
'crs_subscription_max_members_short'),
1179 'subscription_membership_limitation' 1181 $lim->setInfo($this->
lng->txt(
'crs_subscription_max_members_short_info'));
1182 $lim->setValue((
string) 1);
1183 $lim->setChecked($this->
object->isSubscriptionMembershipLimited());
1186 $min->setSubmitFormOnEnter(
true);
1188 $min->setMaxLength(4);
1189 $min->setValue($this->
object->getSubscriptionMinMembers() ?:
'');
1190 $min->setTitle($this->
lng->txt(
'crs_subscription_min_members'));
1191 $min->setInfo($this->
lng->txt(
'crs_subscription_min_members_info'));
1192 $lim->addSubItem($min);
1195 $max->setSubmitFormOnEnter(
true);
1197 $max->setMaxLength(4);
1198 $max->setValue($this->
object->getSubscriptionMaxMembers() ?:
'');
1199 $max->setTitle($this->
lng->txt(
'crs_subscription_max_members'));
1200 $max->setInfo($this->
lng->txt(
'crs_reg_max_info'));
1202 $lim->addSubItem($max);
1206 $wait->addOption($option);
1208 $option =
new ilRadioOption($this->
lng->txt(
'crs_waiting_list_no_autofill'),
'1');
1209 $option->
setInfo($this->
lng->txt(
'crs_wait_info'));
1210 $wait->addOption($option);
1212 $option =
new ilRadioOption($this->
lng->txt(
'crs_waiting_list_autofill'),
'2');
1213 $option->
setInfo($this->
lng->txt(
'crs_waiting_list_autofill_info'));
1214 $wait->addOption($option);
1216 if ($this->
object->hasWaitingListAutoFill()) {
1217 $wait->setValue(
'2');
1218 } elseif ($this->
object->enabledWaitingList()) {
1219 $wait->setValue(
'1');
1221 $wait->setValue(
'0');
1223 $lim->addSubItem($wait);
1226 $pres->setTitle($this->
lng->txt(
'crs_view_mode'));
1231 $form = $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->addTitleIconVisibility();
1234 $form = $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->addTopActionsVisibility();
1237 if ($setting->get(
"rep_breadcr_crs") && $setting->get(
"rep_breadcr_crs_overwrite")) {
1238 $add = $setting->get(
"rep_breadcr_crs_default")
1239 ?
" (" . $this->
lng->txt(
"crs_breadcrumb_crs_only") .
")" 1240 :
" (" . $this->
lng->txt(
"crs_breadcrumb_full_path") .
")";
1242 self::BREADCRUMB_DEFAULT => $this->
lng->txt(
"crs_sys_default") . $add,
1243 self::BREADCRUMB_CRS_ONLY => $this->
lng->txt(
"crs_breadcrumb_crs_only"),
1244 self::BREADCRUMB_FULL_PATH => $this->
lng->txt(
"crs_breadcrumb_full_path")
1248 $si->setOptions($options);
1253 $form = $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->addIcon();
1256 $form = $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->addTileImage();
1266 $this->
lng->txt(
'cntr_view_sessions'),
1269 $opts->setInfo($this->
lng->txt(
'cntr_view_info_sessions'));
1270 $view_type->addOption($opts);
1274 $sess->setValue(
'1');
1275 $sess->setChecked($this->
object->isSessionLimitEnabled());
1276 $sess->setInfo($this->
lng->txt(
'sess_limit_info'));
1279 #$prev->setSubmitFormOnEnter(true); 1282 $this->
object->getNumberOfPreviousSessions() == -1 ?
1284 $this->
object->getNumberOfPreviousSessions()
1287 $prev->setMaxLength(3);
1288 $sess->addSubItem($prev);
1291 #$next->setSubmitFormOnEnter(true); 1294 $this->
object->getNumberOfNextSessions() == -1 ?
1296 $this->
object->getNumberOfnextSessions()
1299 $next->setMaxLength(3);
1300 $sess->addSubItem($next);
1302 $opts->addSubItem($sess);
1305 $optsi->setInfo($this->
lng->txt(
'cntr_view_info_simple'));
1306 $view_type->addOption($optsi);
1309 $this->
lng->txt(
'cntr_view_by_type'),
1312 $optbt->setInfo($this->
lng->txt(
'cntr_view_info_by_type'));
1313 $view_type->addOption($optbt);
1316 $this->
lng->txt(
'crs_view_objective'),
1319 $opto->setInfo($this->
lng->txt(
'crs_view_info_objective'));
1320 $view_type->addOption($opto);
1323 $optt->setInfo($this->
lng->txt(
'crs_view_info_timing'));
1330 $this->
lng->txt(
'crs_view_timing_absolute'),
1333 $absolute->setInfo($this->
lng->txt(
'crs_view_info_timing_absolute'));
1334 $timing->addOption($absolute);
1337 $this->
lng->txt(
'crs_view_timing_relative'),
1340 $relative->setInfo($this->
lng->txt(
'crs_view_info_timing_relative'));
1341 $timing->addOption($relative);
1343 $optt->addSubItem($timing);
1346 $view_type->addOption($optt);
1361 $this->
lng->txt(
'tutorial_support_block_setting_title'),
1362 'tutorial_support_block_checkbox' 1365 $tutorial_support_panel_checkbox->setChecked((
bool) $this->
object->getTutorialSupportBlockSettingValue());
1366 $tutorial_support_panel_checkbox->setInfo($this->
lng->txt(
'tutorial_support_block_byline'));
1372 if ($olp->getCurrentMode()) {
1374 $lp_status->setTitle($this->
lng->txt(
'crs_course_status_of_users'));
1379 $lp_status_options->
setValue($this->
object->getStatusDetermination());
1382 $this->
lng->txt(
'crs_status_determination_lp'),
1384 $this->
lng->txt(
'crs_status_determination_lp_info')
1386 $lp_status_options->addOption($lp_option);
1388 $this->
lng->txt(
'crs_status_determination_manual'),
1398 $feat->setTitle($this->
lng->txt(
'obj_features'));
1408 $mem->setChecked($this->
object->getShowMembers());
1409 $mem->setInfo($this->
lng->txt(
'crs_show_members_info'));
1414 $part_list =
new ilCheckboxInputGUI($this->
lng->txt(
'crs_show_member_export'),
'show_members_export');
1415 $part_list->setChecked($this->
object->getShowMembersExport());
1416 $part_list->setInfo($this->
lng->txt(
'crs_show_member_export_info'));
1417 $mem->addSubItem($part_list);
1425 $this->
lng->txt(
'crs_mail_tutors_only'),
1427 $this->
lng->txt(
'crs_mail_tutors_only_info')
1429 $mail_type->addOption($mail_tutors);
1432 $this->
lng->txt(
'crs_mail_all'),
1434 $this->
lng->txt(
'crs_mail_all_info')
1436 $mail_type->addOption($mail_all);
1446 $not->setValue(
'1');
1447 $not->setInfo($this->
lng->txt(
'crs_auto_notification_info'));
1448 $not->setChecked($this->
object->getAutoNotification());
1452 $desk->setChecked($this->
object->getAboStatus());
1453 $desk->setInfo($this->
lng->txt(
'crs_add_remove_from_desktop_info'));
1458 $ecs->addSettingsToForm(
$form,
'crs');
1465 if ($this->
http->wrapper()->query()->has(
'file_id')) {
1466 $file_id = $this->
http->wrapper()->query()->retrieve(
1479 $this->tabs_gui->addSubTabTarget(
1481 $this->
ctrl->getLinkTarget($this,
'edit'),
1486 $this->tabs_gui->addSubTabTarget(
1487 "crs_info_settings",
1488 $this->
ctrl->getLinkTarget($this,
'editInfo'),
1493 $this->tabs_gui->addSubTabTarget(
1495 $this->
ctrl->getLinkTargetByClass(
'ilConditionHandlerGUI',
'listConditions'),
1497 "ilConditionHandlerGUI" 1500 $this->tabs_gui->addSubTabTarget(
1501 "crs_start_objects",
1502 $this->
ctrl->getLinkTargetByClass(
'ilContainerStartObjectsGUI',
'listStructure'),
1507 $this->tabs_gui->addSubTabTarget(
1509 $this->
ctrl->getLinkTargetByClass(
'ilobjcoursegroupinggui',
'listGroupings'),
1514 if ($lti_settings->hasSettingsAccess()) {
1515 $this->tabs_gui->addSubTabTarget(
1517 $this->
ctrl->getLinkTargetByClass(ilLTIProviderObjectSettingGUI::class)
1523 $this->tabs_gui->addSubTabTarget(
1525 $this->
ctrl->getLinkTarget($this,
'editMapSettings'),
1533 $this->tabs_gui->addSubTabTarget(
1534 'crs_custom_user_fields',
1535 $this->
ctrl->getLinkTargetByClass(
'ilobjectcustomuserfieldsgui'),
1537 'ilobjectcustomuserfieldsgui' 1543 if (
true === $validator->validate()) {
1544 $this->tabs_gui->addSubTabTarget(
1546 $this->
ctrl->getLinkTargetByClass(
"ilcertificategui",
"certificateeditor"),
1552 if ($this->
object->getUseNews()) {
1553 $this->tabs_gui->addSubTab(
1554 'obj_news_settings',
1555 $this->
lng->txt(
"cont_news_settings"),
1556 $this->
ctrl->getLinkTargetByClass(
'ilcontainernewssettingsgui')
1559 if ($this->
object->getShowMembersExport()) {
1560 $this->tabs_gui->addSubTab(
1562 $this->
lng->txt(
'crs_show_member_export_settings'),
1563 $this->
ctrl->getLinkTargetByClass(
'ilmemberexportsettingsgui',
'')
1566 $this->tabs_gui->addSubTabTarget(
1567 "obj_multilinguality",
1568 $this->
ctrl->getLinkTargetByClass(TranslationGUI::class,
""),
1570 TranslationGUI::class
1593 foreach ($disabled_object_types as
$type) {
1594 unset($createble_object_types[$type]);
1609 $new_object->getMemberObject()->updateNotification(
1610 $this->
user->getId(),
1611 $this->
settings->get(
'mail_crs_admin_notification',
'1')
1613 $new_object->getMemberObject()->updateContact($this->
user->getId(), 1);
1620 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"crs_added"),
true);
1621 $this->
ctrl->setParameter($this,
"ref_id", $new_object->
getRefId());
1624 $this->
ctrl->getLinkTarget($this,
"edit",
"")
1628 public function readMemberData(array $ids, ?array $selected_columns =
null,
bool $skip_names =
false): array
1635 if ($show_tracking) {
1637 $show_tracking = $olp->isActive();
1640 if ($show_tracking) {
1647 if ($privacy->enabledCourseAccessTimes()) {
1651 $do_prtf = (is_array($selected_columns) &&
1652 in_array(
'prtf', $selected_columns) &&
1657 $this->
ctrl->getLinkTarget($this,
"members")
1662 foreach ($ids as $usr_id) {
1672 $tmp_data[
'firstname'] = $name[
'firstname'];
1673 $tmp_data[
'lastname'] = $name[
'lastname'];
1674 $tmp_data[
'login'] = $name[
'login'];
1676 $tmp_data[
'passed'] = $this->
object->getMembersObject()->hasPassed($usr_id) ? 1 : 0;
1678 $tmp_data[
'passed_info'] = $this->
object->getMembersObject()->getPassedInfo($usr_id);
1680 $tmp_data[
'notification'] = $this->
object->getMembersObject()->isNotificationEnabled($usr_id) ? 1 : 0;
1681 $tmp_data[
'blocked'] = $this->
object->getMembersObject()->isBlocked($usr_id) ? 1 : 0;
1682 $tmp_data[
'contact'] = $this->
object->getMembersObject()->isContact($usr_id) ? 1 : 0;
1684 $tmp_data[
'usr_id'] = $usr_id;
1686 if ($show_tracking) {
1687 if (in_array($usr_id, $completed)) {
1689 } elseif (in_array($usr_id, $in_progress)) {
1691 } elseif (in_array($usr_id, $failed)) {
1698 if ($privacy->enabledCourseAccessTimes()) {
1699 if (isset($progress[$usr_id][
'ts']) && $progress[$usr_id][
'ts']) {
1700 $tmp_data[
'access_ut'] = $progress[$usr_id][
'ts'];
1702 $progress[$usr_id][
'ts'],
1706 $tmp_data[
'access_ut'] = 0;
1707 $tmp_data[
'access_time'] = $this->
lng->txt(
'no_date');
1712 $tmp_data[
'prtf'] = $all_prtf[$usr_id] ??
null;
1715 $members[$usr_id] = $tmp_data;
1732 if ($marks->getCompleted() !== $a_has_passed) {
1733 $marks->setCompleted($a_has_passed);
1748 $this->
object->isSubscriptionMembershipLimited() &&
1749 $this->
object->getSubscriptionMaxMembers() &&
1750 $this->
object->getSubscriptionMaxMembers() <= $this->
object->getMembersObject()->getCountMembers()
1752 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"crs_max_members_reached"));
1756 if ($number = $this->
object->getMembersObject()->autoFillSubscribers()) {
1757 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"crs_number_users_added") .
" " . $number);
1759 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"crs_no_users_added"));
1769 if ($this->
object->getMembersObject()->isLastAdmin($this->
user->getId())) {
1770 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'crs_min_one_admin'));
1775 $this->tabs_gui->setTabActive(
'crs_unsubscribe');
1777 $cgui->setHeaderText($this->
lng->txt(
'crs_unsubscribe_sure'));
1778 $cgui->setFormAction($this->
ctrl->getFormAction($this));
1779 $cgui->setCancel($this->
lng->txt(
"cancel"),
"cancel");
1780 $cgui->setConfirm($this->
lng->txt(
"crs_unsubscribe"),
"performUnsubscribe");
1781 $this->tpl->setContent($cgui->getHTML());
1792 $this->
getObject()->getMembersObject()->delete($this->
user->getId());
1793 $this->
getObject()->getMembersObject()->sendUnsubscribeNotificationToAdmins($this->
user->getId());
1794 $this->
getObject()->getMembersObject()->sendNotification(
1796 $this->
user->getId()
1798 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'crs_unsubscribed_from_crs'),
true);
1800 $this->
ctrl->setParameterByClass(
"ilrepositorygui",
"ref_id", $this->tree->getParentId($this->ref_id));
1801 $this->
ctrl->redirectByClass(
"ilrepositorygui",
"");
1807 if ($this->
access->checkAccess(
'visible',
'', $this->ref_id)) {
1808 $this->
tabs->addTarget(
1810 $this->
ctrl->getLinkTargetByClass(
1811 array(
"ilobjcoursegui",
"ilinfoscreengui"),
1818 $this->
access->checkAccess(
'leave',
'', $this->object->getRefId()) &&
1819 $this->
object->getMemberObject()->isMember()
1821 $this->
tabs->addTarget(
1823 $this->
ctrl->getLinkTarget($this,
"unsubscribe"),
1832 $this->tabs_gui->addTab(
1834 $this->
lng->txt(
"content"),
1835 $this->
ctrl->getLinkTarget($this,
"view")
1841 $this->
help->setScreenIdComponent(
"crs");
1842 $this->
ctrl->setParameter($this,
"ref_id", $this->ref_id);
1844 if ($this->
access->checkAccess(
'read',
'', $this->ref_id)) {
1846 $this->tabs_gui->activateTab(
'view_content');
1847 if ($this->
object->isNewsTimelineEffective()) {
1848 if (!$this->
object->isNewsTimelineLandingPageEffective()) {
1851 $this->tabs_gui->addTab(
1853 $this->
lng->txt(
"cont_news_timeline_tab"),
1854 $this->
ctrl->getLinkTargetByClass(
"ilnewstimelinegui",
"show")
1856 if ($this->
object->isNewsTimelineLandingPageEffective()) {
1866 $this->
tabs->addTab(
1868 $this->
lng->txt(
'timings_timings'),
1869 $this->
ctrl->getLinkTargetByClass(
'ilcoursecontentgui',
'manageTimings')
1873 $this->
tabs->addTab(
1875 $this->
lng->txt(
'timings_timings'),
1876 $this->
ctrl->getLinkTargetByClass(
'ilcoursecontentgui',
'managePersonalTimings')
1881 if ($this->
access->checkAccess(
'write',
'', $this->ref_id)) {
1883 $this->tabs_gui->addTarget(
1885 $this->
ctrl->getLinkTargetByClass(
'illoeditorgui',
''),
1892 $this->
access->checkAccess(
'visible',
'', $this->ref_id) ||
1893 $this->
access->checkAccess(
'join',
'', $this->ref_id) ||
1894 $this->
access->checkAccess(
'read',
'', $this->ref_id)
1897 strcasecmp($this->
ctrl->getCmdClass(), ilInfoScreenGUI::class) === 0 ||
1898 strcasecmp($this->
ctrl->getCmdClass(), ilNoteGUI::class) === 0;
1899 $this->tabs_gui->addTarget(
1901 $this->
ctrl->getLinkTargetByClass(
1902 array(
"ilobjcoursegui",
"ilinfoscreengui"),
1911 if ($this->
access->checkAccess(
'write',
'', $this->ref_id)) {
1913 strcasecmp($this->
ctrl->getCmdClass(), ilConditionHandlerGUI::class) &&
1914 !$this->
http->wrapper()->query()->has(
'item_id');
1915 $this->tabs_gui->addTarget(
1917 $this->
ctrl->getLinkTarget($this,
"edit"),
1918 array(
"edit",
"editMapSettings",
"editCourseIcons",
"listStructure"),
1929 $membership_gui->addMemberTab($this->tabs_gui, $is_participant);
1932 if ($this->
access->checkAccess(
'write',
'', $this->ref_id)) {
1934 $this->tabs_gui->addTarget(
1935 "obj_tool_setting_badges",
1936 $this->
ctrl->getLinkTargetByClass(
"ilbadgemanagementgui",
""),
1938 "ilbadgemanagementgui" 1945 $this->tabs_gui->addTarget(
1946 "obj_tool_setting_skills",
1947 $this->
ctrl->getLinkTargetByClass(array(
"ilcontainerskillgui",
"ilcontskillpresentationgui"),
""),
1949 array(
"ilcontainerskillgui",
"ilcontskillpresentationgui",
"ilcontskilladmingui")
1959 $this->tabs_gui->addTarget(
1960 "obj_tool_setting_booking",
1961 $this->
ctrl->getLinkTargetByClass(array(
"ilbookinggatewaygui"),
"")
1967 $this->tabs_gui->addTarget(
1968 'learning_progress',
1969 $this->
ctrl->getLinkTargetByClass(array(
'ilobjcoursegui',
'illearningprogressgui'),
''),
1971 array(
'illplistofobjectsgui',
'illplistofsettingsgui',
'illearningprogressgui',
'illplistofprogressgui')
1976 if ($this->
access->checkAccess(
'write',
'', $this->ref_id)) {
1978 $mdtab = $mdgui->getTab();
1980 $this->tabs_gui->addTarget(
1984 "ilobjectmetadatagui" 1989 if ($this->
access->checkAccess(
'write',
'', $this->object->getRefId())) {
1990 $this->tabs_gui->addTarget(
1992 $this->
ctrl->getLinkTargetByClass(
'ilexportgui',
''),
1998 if ($this->
access->checkAccess(
'edit_permission',
'', $this->ref_id)) {
1999 $this->tabs_gui->addTarget(
2001 $this->
ctrl->getLinkTargetByClass(array(get_class($this),
'ilpermissiongui'),
"perm"),
2002 array(
"perm",
"info",
"owner"),
2008 if ($this->
access->checkAccess(
'join',
'', $this->ref_id) && !$this->
object->getMemberObject()->isAssigned()) {
2010 $this->tabs_gui->addTab(
2012 $this->
lng->txt(
'membership_leave'),
2013 $this->
ctrl->getLinkTargetByClass(
'ilcourseregistrationgui',
'show',
'')
2016 $this->tabs_gui->addTarget(
2018 $this->
ctrl->getLinkTargetByClass(
'ilcourseregistrationgui',
"show"),
2024 if ($this->
access->checkAccess(
'leave',
'', $this->object->getRefId()) && $this->
object->getMemberObject()->isMember()) {
2025 $this->tabs_gui->addTarget(
2027 $this->
ctrl->getLinkTarget($this,
"unsubscribe"),
2036 $next_class = $this->
ctrl->getNextClass($this);
2037 $cmd = $this->
ctrl->getCmd();
2043 $this->
access->checkAccess(
'read',
'', $this->ref_id)) {
2044 $this->navigation_history->addItem(
2046 ilLink::_getLink($this->ref_id,
"crs"),
2050 $header_action =
true;
2051 switch ($next_class) {
2052 case strtolower(ilRepositoryTrashGUI::class):
2053 $ru = new \ilRepositoryTrashGUI($this);
2054 $this->
ctrl->setReturn($this,
'trash');
2055 $this->
ctrl->forwardCommand($ru);
2058 case 'illtiproviderobjectsettinggui':
2061 $this->tabs_gui->activateTab(
'settings');
2062 $this->tabs_gui->activateSubTab(
'lti_provider');
2065 $lti_gui->offerLTIRolesForSelection(
false);
2066 $this->
ctrl->forwardCommand($lti_gui);
2069 case 'ilcoursemembershipgui':
2071 $this->tabs_gui->activateTab(
'members');
2074 $this->
ctrl->forwardCommand($mem_gui);
2077 case "ilinfoscreengui":
2081 case 'ilobjectmetadatagui':
2082 if (!$this->
access->checkAccess(
'write',
'', $this->object->getRefId())) {
2083 $this->error->raiseError($this->
lng->txt(
'permission_denied'), $this->error->WARNING);
2085 $this->tabs_gui->setTabActive(
'meta_data');
2087 $this->
ctrl->forwardCommand($md_gui);
2090 case 'ilcourseregistrationgui':
2091 $this->
ctrl->setReturn($this,
'');
2092 $this->tabs_gui->setTabActive(
'join');
2094 $this->
ctrl->forwardCommand($registration);
2097 case 'ilobjectcustomuserfieldsgui':
2100 $this->tabs_gui->activateTab(
'settings');
2101 $this->tabs_gui->activateSubTab(
'crs_custom_user_fields');
2102 $this->
ctrl->forwardCommand($cdf_gui);
2105 case "ilcourseobjectivesgui":
2107 $this->
ctrl->setReturn($this,
"");
2109 $this->
ctrl->forwardCommand($reg_gui);
2112 case 'ilobjcoursegroupinggui':
2114 $this->
ctrl->setReturn($this,
'edit');
2116 $this->tabs_gui->activateTab(
'settings');
2117 $this->tabs_gui->activateSubTab(
'groupings');
2120 if ($this->
http->wrapper()->query()->has(
'obj_id')) {
2121 $grouping_id = $this->
http->wrapper()->query()->retrieve(
2127 $this->
ctrl->forwardCommand($crs_grp_gui);
2130 case "ilpropertyformgui":
2137 $this->
ctrl->setReturn($this,
"");
2138 $this->tabs_gui->setTabActive(
'none');
2147 case "ilconditionhandlergui":
2150 $this->tabs_gui->activateTab(
'settings');
2151 $this->tabs_gui->activateSubTab(
'preconditions');
2153 $this->
ctrl->forwardCommand($new_gui);
2156 case "illearningprogressgui":
2159 if ($this->
http->wrapper()->query()->has(
'user_id')) {
2167 $this->
object->getRefId(),
2170 $this->
ctrl->forwardCommand($new_gui);
2171 $this->tabs_gui->setTabActive(
'learning_progress');
2174 case 'ilpermissiongui':
2175 $this->tabs_gui->setTabActive(
'perm_settings');
2177 $this->
ctrl->forwardCommand($perm_gui);
2180 case 'ilcalendarpresentationgui':
2182 $ret = $this->
ctrl->forwardCommand($cal);
2183 $header_action =
false;
2186 case 'ilcoursecontentgui':
2187 $this->
ctrl->setReturn($this,
'members');
2189 $this->
ctrl->forwardCommand($course_content_obj);
2192 case 'ilpublicuserprofilegui':
2193 $this->tpl->enableDragDropFileUpload(
null);
2195 $this->tabs_gui->setTabActive(
'members');
2198 if ($this->
http->wrapper()->query()->has(
'user_id')) {
2205 $profile_gui->setBackUrl($this->
ctrl->getLinkTargetByClass([
"ilCourseMembershipGUI",
2208 $this->tabs_gui->setSubTabActive(
'crs_members_gallery');
2209 $html = $this->
ctrl->forwardCommand($profile_gui);
2210 $this->tpl->setVariable(
"ADM_CONTENT",
$html);
2213 case 'ilmemberagreementgui':
2214 $this->tabs_gui->clearTargets();
2216 $this->
ctrl->setReturn($this,
'');
2218 $this->
ctrl->forwardCommand($agreement);
2222 case "ilcontainerpagegui":
2225 $this->tpl->setContent($ret);
2227 $header_action =
false;
2230 case "ilcontainerstartobjectspagegui":
2233 $ret = $this->
ctrl->forwardCommand($pgui);
2235 $this->tpl->setContent($ret);
2239 case 'ilobjectcopygui':
2241 $cp->setType(
'crs');
2242 $this->
ctrl->forwardCommand($cp);
2245 case "ilobjectcontentstylesettingsgui":
2252 $settings_gui = $DIC->contentStyle()->gui()
2253 ->objectSettingsGUIForRefId(
2255 $this->
object->getRefId()
2257 $this->
ctrl->forwardCommand($settings_gui);
2261 $this->tabs_gui->setTabActive(
'export');
2263 $exp->addFormat(
'xml');
2264 $this->
ctrl->forwardCommand($exp);
2267 case "ilcommonactiondispatchergui":
2272 case 'ildidactictemplategui':
2273 $this->
ctrl->setReturn($this,
'edit');
2275 $this->
ctrl->forwardCommand($did);
2278 case "ilcertificategui":
2279 $this->tabs_gui->activateTab(
"settings");
2281 $this->tabs_gui->activateSubTab(
'certificate');
2284 $output_gui = $guiFactory->create($this->
object);
2285 $this->
ctrl->forwardCommand($output_gui);
2288 case 'illoeditorgui':
2289 #$this->tabs_gui->clearTargets(); 2290 #$this->tabs_gui->setBackTarget($this->lng->txt('back'),$this->ctrl->getLinkTarget($this,'')); 2291 $this->tabs_gui->activateTab(
'crs_objectives');
2294 $this->
ctrl->forwardCommand($editor);
2295 if (strtolower($this->
ctrl->getCmdClass()) ===
"illopagegui") {
2296 $header_action =
false;
2300 case 'ilcontainerstartobjectsgui':
2301 $this->
ctrl->setReturn($this,
'edit');
2302 $this->tabs_gui->clearTargets();
2303 $this->tabs_gui->setBackTarget(
2304 $this->
lng->txt(
"back_to_crs_content"),
2305 $this->
ctrl->getLinkTarget($this,
"edit")
2307 $this->tabs_gui->addTab(
2309 $this->
lng->txt(
"crs_start_objects"),
2310 $this->
ctrl->getLinkTargetByClass(
"ilcontainerstartobjectsgui",
"listStructure")
2312 $this->tabs_gui->activateTab(
"start");
2313 if (strtolower($this->
ctrl->getCmdClass()) ==
2314 "ilcontainerstartobjectspagegui") {
2315 $header_action =
false;
2319 $ilHelp = $DIC[
'ilHelp'];
2320 $this->
help->setScreenIdComponent(
"crs");
2322 $this->
ctrl->forwardCommand($stgui);
2325 case 'illomembertestresultgui':
2326 $GLOBALS[
'DIC'][
'ilCtrl']->setReturn($this,
'members');
2327 $GLOBALS[
'DIC'][
'ilTabs']->clearTargets();
2328 $GLOBALS[
'DIC'][
'ilTabs']->setBackTarget(
2329 $GLOBALS[
'DIC'][
'lng']->txt(
'back'),
2330 $GLOBALS[
'DIC'][
'ilCtrl']->getLinkTarget($this,
'members')
2334 if ($this->
http->wrapper()->query()->has(
'uid')) {
2335 $uid = $this->
http->wrapper()->query()->retrieve(
2341 $this->
ctrl->forwardCommand($result_view);
2344 case 'ilmailmembersearchgui':
2349 $this->
access->checkAccess(
'manage_members',
"", $this->
object->getRefId())) &&
2350 $this->rbac_system->checkAccess(
'internal_mail', $mail->getMailObjectReferenceId())) {
2351 $this->error->raiseError($this->
lng->txt(
"msg_no_perm_read"), $this->error->MESSAGE);
2354 $this->tabs_gui->setTabActive(
'members');
2358 $this->
object->getRefId(),
2364 $this->
ctrl->forwardCommand($mail_search);
2367 case 'ilbadgemanagementgui':
2368 $this->tabs_gui->setTabActive(
'obj_tool_setting_badges');
2370 $this->
ctrl->forwardCommand($bgui);
2373 case "ilcontainernewssettingsgui":
2375 $this->tabs_gui->activateTab(
'settings');
2376 $this->tabs_gui->activateSubTab(
'obj_news_settings');
2378 $news_set_gui->setTimeline(
true);
2379 $news_set_gui->setCronNotifications(
true);
2380 $news_set_gui->setHideByDate(
true);
2381 $this->
ctrl->forwardCommand($news_set_gui);
2384 case "ilnewstimelinegui":
2386 $this->
ctrl->redirectByClass(self::class,
"view");
2388 $this->tabs_gui->setTabActive(
'news_timeline');
2390 $this->
object->getRefId(),
2391 $this->
object->getNewsTimelineAutoEntries()
2393 $t->setUserEditAll($this->
access->checkAccess(
'write',
'', $this->object->getRefId(),
'grp'));
2395 $this->
ctrl->forwardCommand($t);
2397 $this->
user->getId(),
2398 $this->
object->getId(),
2399 $this->
object->getRefId(),
2404 case 'ilmemberexportsettingsgui':
2406 $this->tabs_gui->activateTab(
'properties');
2407 $this->tabs_gui->activateSubTab(
'export_members');
2409 $this->
ctrl->forwardCommand($settings_gui);
2412 case "ilcontainerskillgui":
2413 $this->tabs_gui->activateTab(
'obj_tool_setting_skills');
2418 case strtolower(TranslationGUI::class):
2421 $this->tabs_gui->activateTab(
"settings");
2422 $this->tabs_gui->activateSubTab(
"obj_multilinguality");
2436 $this->
ctrl->forwardCommand($transgui);
2439 case "ilbookinggatewaygui":
2440 $this->tabs_gui->activateTab(
'obj_tool_setting_booking');
2447 if ($cmd ==
'infoScreenGoto') {
2452 $cmd =
'infoScreen';
2456 if (!$this->creation_mode) {
2457 if ($cmd ==
"infoScreen") {
2464 if (!$this->creation_mode
2465 && $cmd !=
'infoScreen' 2466 && $cmd !=
'sendfile' 2467 && $cmd !=
'unsubscribe' 2468 && $cmd !=
'deliverCertificate' 2469 && $cmd !=
'performUnsubscribe' 2470 && $cmd !=
'removeFromDesk' 2472 && !$this->
access->checkAccess(
"read",
'', $this->object->getRefId())
2474 || $cmd ==
'subscribe' 2475 || $cmd ===
'leaveWaitList') {
2476 if ($this->rbac_system->checkAccess(
'join', $this->object->getRefId()) &&
2478 $this->
ctrl->redirectByClass(
"ilCourseRegistrationGUI");
2485 if ($cmd ==
'listObjectives') {
2486 $this->
ctrl->setReturn($this,
"");
2488 $this->
ctrl->forwardCommand($obj_gui);
2492 if ($cmd ==
"" && $this->
object->isNewsTimelineLandingPageEffective()) {
2493 $this->
ctrl->redirectByClass(
"ilnewstimelinegui");
2504 if ($header_action) {
2511 if ($this->
access->checkAccess(
'write',
'', $this->object->getRefId())) {
2516 if (!$this->
object->getMemberObject()->isAssigned()) {
2533 $this->
logger->warning(
'Missing course confirmation.');
2538 $this->
logger->warning(
'Missing required fields');
2546 return array(
"ilCourseRegisterGUI",
'ilConditionHandlerGUI');
2551 $this->
ctrl->redirectByClass(
'ilcoursemembershipgui');
2554 public static function _goto($a_target,
string $a_add =
""): void
2557 $main_tpl = $DIC->ui()->mainTemplate();
2558 $ilAccess = $DIC[
'ilAccess'];
2561 $ilUser = $DIC[
'ilUser'];
2562 $http = $DIC->http();
2563 $refinery = $DIC->refinery();
2565 $a_target = (
int) $a_target;
2567 if (substr($a_add, 0, 5) ==
'rcode') {
2570 if (
$http->wrapper()->query()->has(
'target')) {
2571 $target =
$http->wrapper()->query()->retrieve(
2578 "login.php?target=" . $target .
"&cmd=force_login&lang=" .
2579 $ilUser->getCurrentLanguage()
2591 if ($a_add ==
"mem" && $ilAccess->checkAccess(
"manage_members",
"", $a_target)) {
2599 if ($ilAccess->checkAccess(
"read",
"", $a_target)) {
2603 if ($ilAccess->checkAccess(
"visible",
"", $a_target)) {
2607 $main_tpl->setOnScreenMessage(
'failure', sprintf(
2608 $lng->
txt(
"msg_no_perm_read_item"),
2621 $this->tabs_gui->activateTab(
'settings');
2622 $this->tabs_gui->activateSubTab(
'crs_map_settings');
2625 !$this->
access->checkAccess(
"write",
"", $this->object->getRefId())) {
2629 $latitude = $this->
object->getLatitude();
2630 $longitude = $this->
object->getLongitude();
2631 $zoom = $this->
object->getLocationZoom();
2634 if ($latitude == 0 && $longitude == 0 && $zoom == 0) {
2636 $latitude = $def[
"latitude"];
2637 $longitude = $def[
"longitude"];
2638 $zoom = $def[
"zoom"];
2647 $this->
lng->txt(
"crs_enable_map"),
2650 $public->setValue(
"1");
2651 $public->setChecked($this->
object->getEnableCourseMap());
2656 $this->
lng->txt(
"crs_map_location"),
2660 $loc_prop->setLongitude((
float) $longitude);
2661 $loc_prop->setZoom((
int) $zoom);
2666 $this->tpl->setVariable(
"ADM_CONTENT",
$form->
getHTML());
2676 if ($this->
http->wrapper()->post()->has(
'location')) {
2677 $custom_transformer = $this->
refinery->custom()->transformation(
2678 fn($array) => $array
2685 $enable_map =
false;
2686 if ($this->
http->wrapper()->post()->has(
'enable_map')) {
2687 $enable_map = $this->
http->wrapper()->post()->retrieve(
2689 $this->
refinery->kindlyTo()->bool()
2692 $this->
object->setLatitude(
$location[
'latitude']);
2693 $this->
object->setLongitude(
$location[
'longitude']);
2694 $this->
object->setLocationZoom(
$location[
'zoom']);
2695 $this->
object->setEnableCourseMap($enable_map);
2696 $this->
object->update();
2697 $this->
ctrl->redirect($this,
"editMapSettings");
2707 'ilcoursecontentgui',
2709 $this->
object->getAboStatus(),
2710 $this->
object->getRefId(),
2711 $this->
object->getId()
2717 string $a_cmd_class,
2720 int $a_course_ref_id,
2721 int $a_course_obj_id,
2722 int $a_parent_ref_id = 0
2725 $lng = $DIC->language();
2726 $ilAccess = $DIC->access();
2729 if ($a_parent_ref_id == 0) {
2730 $a_parent_ref_id = $a_course_ref_id;
2735 $a_item_list_gui->addCommandLinkParameter(array(
'crs_show_result' => $a_course_ref_id));
2740 $is_tutor = ($ilAccess->checkAccess(
2756 $ilAccess = $DIC[
'ilAccess'];
2758 $ilCtrl = $DIC[
'ilCtrl'];
2760 if ($this->
object->getType() !=
'crs') {
2763 if (!$this->
access->checkAccess(
2766 $this->object->getRefId(),
2768 $this->
object->getId()
2772 if ($this->
object->enabledObjectiveView()) {
2780 $this->tabs_gui->addSubTab(
2783 $this->
ctrl->getLinkTargetByClass(
"ilobjcoursegui",
"view")
2786 $this->tabs_gui->addSubTab(
2789 $this->
ctrl->getLinkTargetByClass(
"ilobjcoursegui",
"disableAdministrationPanel")
2801 $confirm->setHeaderText($this->
lng->txt(
'crs_objectives_reset_sure'));
2802 $confirm->setFormAction($this->
ctrl->getFormAction($this));
2803 $confirm->setConfirm($this->
lng->txt(
'reset'),
'reset');
2804 $confirm->setCancel($this->
lng->txt(
'cancel'),
'cancel');
2805 $this->tpl->setContent($confirm->getHTML());
2820 $this->
user->deletePref(
'crs_objectives_force_details_' . $this->
object->getId());
2821 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'crs_objectives_reseted'));
2827 if ($this->
access->checkAccess(
'write',
'', $this->object->getRefId())) {
2831 $this->
object->getRefId(),
2832 $this->
object->getId()
2834 if (count($this->start_obj->getStartObjects()) &&
2835 !$this->start_obj->allFullfilled($this->user->getId())) {
2847 $link = chr(13) . chr(10) . chr(13) . chr(10);
2848 $link .= $this->
lng->txt(
'crs_mail_permanent_link');
2849 $link .= chr(13) . chr(10) . chr(13) . chr(10);
2850 $link .= ilLink::_getLink($this->
object->getRefId());
2851 return rawurlencode(base64_encode($link));
2856 $lg = parent::initHeaderAction($sub_type, $sub_id);
2862 if ($validator->isCertificateDownloadable($this->user->getId(), $this->
object->getId())) {
2863 $cert_url = $this->
ctrl->getLinkTarget($this,
"deliverCertificate");
2865 $this->
lng->loadLanguageModule(
"certificate");
2866 $lg->addCustomCommand($cert_url,
"download_certificate");
2871 $this->
lng->txt(
"download_certificate"),
2881 if (!$noti->isCurrentUserActive()) {
2885 $this->
lng->txt(
"crs_notification_deactivated")
2888 $this->
ctrl->setParameter($this,
"crs_ntf", 1);
2889 $caption =
"crs_activate_notification";
2894 $this->
lng->txt(
"crs_notification_activated")
2897 $this->
ctrl->setParameter($this,
"crs_ntf", 0);
2898 $caption =
"crs_deactivate_notification";
2901 if ($noti->canCurrentUserEdit()) {
2902 $lg->addCustomCommand(
2903 $this->
ctrl->getLinkTarget($this,
"saveNotification"),
2908 $this->
ctrl->setParameter($this,
"crs_ntf",
"");
2921 if ($this->
access->checkAccess(
'manage_members',
'', $this->ref_id)) {
2923 if ($this->
http->wrapper()->query()->has(
'member_id')) {
2934 $objId = $this->
object->getId();
2938 if (
false === $validator->isCertificateDownloadable(
$user_id,
$objId)) {
2939 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"permission_denied"),
true);
2940 $this->
ctrl->redirect($this);
2950 $this->
lng->txt(
'error_creating_certificate_pdf')
2957 $this->
ctrl->redirectByClass(array(
'ilrepositorygui',
'ilobjcoursegui',
'illoeditorgui'),
'materials');
2962 $post_position = (array) ($this->
http->request()->getParsedBody()[
'position'] ?? []);
2963 if (isset($post_position[
'lobj'])) {
2964 $lobj = $post_position[
'lobj'];
2965 $objective_order = array();
2966 foreach ($lobj as $objective_id => $materials) {
2967 $objective_order[$objective_id] = $materials[0];
2968 unset($lobj[$objective_id][0]);
2971 asort($objective_order);
2973 foreach (array_keys($objective_order) as $objective_id) {
2975 $obj->writePosition(++$pos);
2979 foreach ($lobj as $objective_id => $materials) {
2984 foreach (array_keys($materials) as
$ass_id) {
2985 $objmat->writePosition($ass_id, ++$pos);
2989 parent::saveSortingObject();
2995 if ($this->
http->wrapper()->query()->has(
'tid')) {
2996 $tid = $this->
http->wrapper()->query()->retrieve(
3000 } elseif ($this->
http->wrapper()->post()->has(
'tid')) {
3001 $tid = $this->
http->wrapper()->post()->retrieve(
3012 if ($this->
http->wrapper()->query()->has(
'tid')) {
3013 $tid = $this->
http->wrapper()->query()->retrieve(
3019 if ($this->
http->wrapper()->query()->has(
'objective_id')) {
3020 $objective_id = $this->
http->wrapper()->query()->retrieve(
3028 $this->
user->getId()
3030 $passed =
$res->getCompletedObjectiveIds();
3032 $has_completed =
false;
3033 if ($objective_id) {
3034 $objective_ids = array($objective_id);
3035 if (in_array($objective_id, $passed)) {
3036 $has_completed =
true;
3043 if (count($objective_ids) === count($passed)) {
3044 $has_completed =
true;
3049 if ($has_completed) {
3065 if ($a_objective_id) {
3066 $question = $this->
lng->txt(
'crs_loc_objective_passed_confirmation');
3068 $question = $this->
lng->txt(
'crs_loc_objectives_passed_confirmation');
3071 $confirm->setHeaderText($question);
3072 $confirm->addHiddenItem(
'objective_id', (
string) $a_objective_id);
3073 $confirm->addHiddenItem(
'tid', (
string) $a_test_id);
3074 $confirm->setConfirm($this->
lng->txt(
'crs_loc_tst_start'),
'redirectLocToTestConfirmed');
3075 $confirm->setCancel($this->
lng->txt(
'cancel'),
'view');
3078 $this->tpl->setContent($confirm->getHTML());
3088 $crs_admin = $this->
object->getDefaultAdminRole();
3089 $crs_member = $this->
object->getDefaultMemberRole();
3090 $local_roles = $this->
object->getLocalCourseRoles(
false);
3094 if (in_array($crs_member, $local_roles)) {
3095 #$crs_roles[$crs_member] = ilObjRole::_getTranslation(array_search ($crs_member, $local_roles)); 3096 #unset($local_roles[$crs_roles[$crs_member]]); 3099 foreach ($local_roles as $title => $role_id) {
3107 if ($a_exclude !== []) {
3108 foreach ($a_exclude as $excluded_role) {
3109 if (isset($crs_roles[$excluded_role])) {
3110 unset($crs_roles[$excluded_role]);
3126 $this->
ctrl->redirectByClass(ilUsersGalleryGUI::class);
3134 $this->
ctrl->setReturn($this,
"view");
static handleCode(int $a_ref_id, string $a_type, string $a_code)
redirectLocToTestConfirmedObject()
This class represents an option in a radio group.
parseCurrentBlock(string $block_name=self::DEFAULT_BLOCK)
Parses the given block.
editInfoObject(?ilPropertyFormGUI $a_form=null)
static getInstance(int $a_ref_id, bool $a_include_auto_entries)
setPropertyForm(ilPropertyFormGUI $form)
Container start objects page GUI class.
ilBadgeManagementGUI: ilPropertyFormGUI
const IL_CRS_VIEW_TIMING_ABSOLUTE
setMessage(string $a_message)
const LP_MODE_MANUAL_BY_TUTOR
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.
setCurrentBlock(string $part=self::DEFAULT_BLOCK)
Sets the template to the given block.
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()
static lookupRegistrationInfo(int $a_obj_id)
prepareOutput(bool $show_sub_objects=true)
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)
GUI class for object translation handling.
static getInstanceByObjId(int $a_obj_id)
Get instance by obj type.
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 _readFilesByCourse(int $a_course_id)
static _getObjectiveIds(int $course_id, bool $a_activated_only=false)
viewObject()
viewObject container presentation for "administration -> repository, trash, permissions" ...
ilAdvancedMDRecordGUI $record_gui
enableSubscribe(bool $status)
afterSave(ilObject $new_object)
static updateServiceSettingsForm(int $obj_id, ilPropertyFormGUI $form, array $services)
const MESSAGE_TYPE_SUCCESS
static checkAccess(int $a_ref_id, bool $a_allow_only_read=true)
check access to learning progress
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.
setVariable(string $variable, $value='')
Sets the given variable to the given value.
readMemberData(array $ids, ?array $selected_columns=null, bool $skip_names=false)
isActiveAdministrationPanel()
const LP_STATUS_IN_PROGRESS
deliverCertificateObject()
static _lookupViewMode(int $a_id)
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)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
modifyItemGUI(ilObjectListGUI $a_item_list_gui, array $a_item_data)
deleteObject(bool $error=false)
const EXTERNAL_MAIL_PREFIX
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
const IL_CRS_SUBSCRIPTION_LIMITED
ilGlobalTemplateInterface $tpl
static _lookupTitle(int $obj_id)
static _getInstanceByObjId(int $a_obj_id)
const MAIL_ALLOWED_TUTORS
GUI class for LTI provider object settings.
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...
static _getTranslation(string $a_role_title)
initDidacticTemplate(ilPropertyFormGUI $form)
Skills for container (course/group) (top gui class)
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 getImagePath(string $image_name, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
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
renderAddNewItem(string ... $disabled_object_types)
const int STATUS_DETERMINATION_LP
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)
get(string $part=self::DEFAULT_BLOCK)
Renders the given block and returns the html string.
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)
const int STATUS_DETERMINATION_MANUAL
setObjParticipants(ilParticipants $objParticipants)
GUI class for course registrations.
buildAddNewItemElements(array $subtypes, string $create_target_class=ilRepositoryGUI::class, ?int $redirect_target_ref_id=null,)
static isActivated()
Checks whether Map feature is activated.
addAdoptContentLinkToToolbar()
const IL_CRS_VIEW_SESSIONS
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.
Render add new item selector.
initListPresentationForm(ilPropertyFormGUI $form)
Add list presentation settings to form.
static _getInstanceByType(string $a_type)
Get Singleton Instance.
const IL_CRS_SUBSCRIPTION_UNLIMITED
editObject(?ilPropertyFormGUI $form=null)
static isAccessible(int $ref_id)
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.
__construct(Container $dic, ilPlugin $plugin)
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 formatDate(ilDateTime $date, bool $a_skip_day=false, bool $a_include_wd=false, bool $include_seconds=false, ?ilObjUser $user=null,)
static getMailObjectRefId()
static _lookupProgressByObjId(int $a_obj_id)
lookup progress for a specific object
setInfoObject(ilInfoScreenGUI $info)
get info sections
ILIAS Container InternalGUIService $gui
Class ilContainerStartObjectsContentGUI.
setSubTabs(string $a_tab)
static _isParticipant(int $a_ref_id, int $a_usr_id)
Static function to check if a user is a participant of the container object.
getCreatableObjectTypes()
static getAvailablePortfolioLinksForUserIds(array $a_owner_ids, ?string $a_back_url=null)
static _lookupFailedForObject(int $a_obj_id, ?array $a_user_ids=null)
static _lookupContainerSetting(int $a_id, string $a_keyword, ?string $a_default_value=null)
static _isOnList(int $a_usr_id, int $a_obj_id)
language()
description: > Example for rendring a language glyph.
static _hasAccepted(int $a_usr_id, int $a_obj_id)
Check if user has accepted agreement.
static _lookupType(int $id, bool $reference=false)
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)
Membership notification settings.
static _fieldsToInfoString(int $a_obj_id)
kindlyTo()
Combined validations and transformations for primitive data types that establish a baseline for furth...
Class ilObjUserTrackingGUI.
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.
Class ilECSCourseSettings.
const CALENDAR_CONFIGURATION
static _gotoRepositoryRoot(bool $raise_error=false)
Goto repository root.
static formatPeriod(ilDateTime $start, ilDateTime $end, bool $a_skip_starting_day=false, ?ilObjUser $user=null)
Format a period of two dates Shows: 14.
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