19declare(strict_types=0);
66 public function __construct($a_data,
int $a_id,
bool $a_call_by_reference =
true,
bool $a_prepare_output =
true)
73 $this->
help = $DIC->help();
74 $this->
logger = $DIC->logger()->crs();
75 $this->navigation_history =
$DIC[
'ilNavigationHistory'];
76 $this->
ctrl->saveParameter($this, [
'ref_id']);
77 $this->
lng->loadLanguageModule(
'crs');
78 $this->
lng->loadLanguageModule(
'cert');
79 $this->
lng->loadLanguageModule(
'obj');
80 $this->data_factory =
new ilDataFactory();
81 $this->
http = $DIC->http();
83 $this->news =
$DIC->news();
98 $part->updateNotification(
100 (
bool) $this->settings->get(
'mail_crs_admin_notification',
'1')
102 parent::afterImport($new_object);
112 if (strtolower($this->std_request->getBaseClass()) ===
"iladministrationgui") {
113 parent::viewObject();
117 $this->tabs_gui->setTabActive(
'view_content');
120 if (strtolower($this->std_request->getBaseClass()) ===
"iladministrationgui") {
121 parent::viewObject();
126 if ($this->
ctrl->getNextClass() !=
"ilcolumngui") {
128 $this->
user->getId(),
129 $this->object->getId(),
130 $this->object->getRefId(),
136 $this->
ctrl->redirectByClass(ilMemberAgreementGUI::class);
143 $stgui->enableDesktop($this->
object->getAboStatus(), $this);
155 parent::renderObject();
165 $this->tabs_gui->activateTab(
'view_content');
166 parent::deleteObject(
$error);
171 parent::renderObject();
182 $this->
ctrl->redirectByClass([
184 ilInfoScreenGUI::class
194 $this->tabs_gui->setTabActive(
'info_short');
198 $info->enablePrivateNotes();
199 $info->enableFeedback();
201 $info->enableBookingInfo(
true);
202 if ($this->
access->checkAccess(
"write",
"", $this->ref_id)) {
203 $info->enableNewsEditing();
207 strlen($this->
object->getImportantInformation()) ||
208 strlen($this->
object->getSyllabus()) ||
209 strlen((
string) $this->
object->getTargetGroup()) ||
211 $info->addSection($this->
lng->txt(
'crs_general_informations'));
214 if (strlen($this->
object->getImportantInformation())) {
216 $this->
lng->txt(
'crs_important_info'),
222 if (strlen($this->
object->getSyllabus())) {
223 $info->addProperty($this->
lng->txt(
'crs_syllabus'), nl2br(
227 if (strlen((
string) $this->
object->getTargetGroup())) {
229 $this->
lng->txt(
'crs_target_group'),
237 $tpl =
new ilTemplate(
'tpl.event_info_file.html',
true,
true,
'components/ILIAS/Course');
239 foreach ($files as $file) {
241 $this->
ctrl->setParameter($this,
'file_id', $file->getFileId());
250 $this->
lng->txt(
'crs_file_download'),
260 $info->addMetaDataSections($this->
object->getId(), 0, $this->object->getType());
263 if ($this->
object->hasContactData()) {
264 $info->addSection($this->
lng->txt(
"crs_contact"));
266 if (strlen($this->
object->getContactName())) {
268 $this->
lng->txt(
"crs_contact_name"),
269 $this->object->getContactName()
272 if (strlen($this->
object->getContactResponsibility())) {
274 $this->
lng->txt(
"crs_contact_responsibility"),
275 $this->object->getContactResponsibility()
278 if (strlen($this->
object->getContactPhone())) {
280 $this->
lng->txt(
"crs_contact_phone"),
281 $this->object->getContactPhone()
284 if ($this->
object->getContactEmail()) {
286 $has_mail_access = $this->rbacsystem->checkAccessOfUser(
287 $this->
user->getId(),
291 $emails = explode(
",", $this->
object->getContactEmail());
293 foreach ($emails as $email) {
294 $email = trim($email);
295 if (!$has_mail_access) {
296 $mailString .= $email .
"<br />";
299 $etpl =
new ilTemplate(
"tpl.crs_contact_email.html",
true,
true,
'components/ILIAS/Course');
313 'ref_id' => $this->
object->getRefId(),
318 $etpl->setVariable(
"CONTACT_EMAIL", $email);
319 $mailString .= $etpl->get() .
"<br />";
321 $info->addProperty($this->
lng->txt(
"crs_contact_email"), $mailString);
323 if (strlen($this->
object->getContactConsultation())) {
325 $this->
lng->txt(
"crs_contact_consultation"),
326 nl2br($this->
object->getContactConsultation())
331 $conts =
$parts->getContacts();
333 $info->addSection($this->
lng->txt(
"crs_mem_contacts"));
334 foreach ($conts as
$c) {
336 $pgui->setBackUrl($this->
ctrl->getLinkTargetByClass(
"ilinfoscreengui"));
337 $pgui->setEmbedded(
true);
338 $info->addProperty(
"", $pgui->getHTML());
343 $info->enableAvailability(
false);
344 $this->
lng->loadLanguageModule(
"rep");
345 $info->addSection($this->
lng->txt(
"rep_activation_availability"));
346 $info->showLDAPRoleGroupMappingInfo();
349 $info->addAccessPeriodProperty();
352 switch ($this->
object->getSubscriptionLimitationType()) {
354 $txt = $this->
lng->txt(
"crs_info_reg_deactivated");
358 switch ($this->
object->getSubscriptionType()) {
360 $txt = $this->
lng->txt(
"crs_info_reg_confirmation");
363 $txt = $this->
lng->txt(
"crs_info_reg_direct");
366 $txt = $this->
lng->txt(
"crs_info_reg_password");
372 $info->addProperty($this->
lng->txt(
"crs_info_reg"), $txt);
374 if ($this->
object->getSubscriptionUnlimitedStatus()) {
376 $this->
lng->txt(
"crs_reg_until"),
377 $this->lng->txt(
'crs_unlimited')
379 } elseif ($this->
object->getSubscriptionStart() < time()) {
381 $this->
lng->txt(
"crs_reg_until"),
382 $this->lng->txt(
'crs_to') .
' ' .
385 } elseif ($this->
object->getSubscriptionStart() > time()) {
387 $this->
lng->txt(
"crs_reg_until"),
388 $this->lng->txt(
'crs_from') .
' ' .
392 if ($this->
object->isSubscriptionMembershipLimited()) {
393 if ($this->
object->getSubscriptionMinMembers()) {
395 $this->
lng->txt(
"mem_min_users"),
396 $this->object->getSubscriptionMinMembers()
399 if ($this->
object->getSubscriptionMaxMembers()) {
402 $this->
lng->txt(
'mem_free_places'),
403 (
string) ($reg_info[
'reg_info_free_places'] ??
'0')
409 if ($this->
object->getCancellationEnd()) {
411 $this->
lng->txt(
'crs_cancellation_end'),
418 !$this->object->getCourseStart()->
isNull()
421 $this->
lng->txt(
'crs_period'),
423 $this->object->getCourseStart(),
424 $this->object->getCourseEnd()
435 $this->
lng->loadLanguageModule(
'ps');
436 $info->addSection($this->
lng->txt(
'crs_user_agreement_info'));
437 $info->addProperty($this->
lng->txt(
'ps_export_data'), $field_info->exportableFieldsToInfoString());
440 $info->addProperty($this->
lng->txt(
'ps_crs_user_fields'), $fields);
443 $info->enableLearningProgress(
true);
452 if ($noti->canCurrentUserEdit()) {
454 if ($this->
http->wrapper()->query()->has(
'crs_ntf')) {
455 $crs_ntf = $this->
http->wrapper()->query()->retrieve(
461 $noti->activateUser();
463 $noti->deactivateUser();
466 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"settings_saved"),
true);
467 $this->
ctrl->redirect($this,
"");
474 $this->tabs_gui->setTabActive(
'settings');
475 $this->tabs_gui->setSubTabActive(
'crs_info_settings');
480 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.edit_info.html',
'components/ILIAS/Course');
481 $this->tpl->setVariable(
'INFO_TABLE', $a_form->getHTML());
486 $data_retrieval->init();
496 $table->handleCommands();
497 $this->tpl->setVariable(
'INFO_FILE_TABLE', $table->getHTML());
510 $area->setValue($this->
object->getImportantInformation());
516 $area->setValue($this->
object->getSyllabus());
521 $tg = new \ilTextAreaInputGUI($this->
lng->txt(
'crs_target_group'),
'target_group');
522 $tg->setValue($this->
object->getTargetGroup() ??
"");
527 $section->setTitle($this->
lng->txt(
'crs_info_download'));
531 $file->enableFileNameSelection(
'file_name');
535 $section->setTitle($this->
lng->txt(
'crs_contact'));
541 $text->setMaxLength(70);
545 $text->setValue($this->
object->getContactResponsibility());
547 $text->setMaxLength(70);
553 $text->setMaxLength(40);
558 $text->setInfo($this->
lng->txt(
'crs_contact_email_info'));
560 $text->setMaxLength(255);
564 $area->setValue($this->
object->getContactConsultation());
574 $this->record_gui->setPropertyForm(
$form);
575 $this->record_gui->parse();
588 $this->
object->setImportantInformation((
string)
$form->
getInput(
'important'));
589 $this->
object->setSyllabus((
string)
$form->
getInput(
'syllabus'));
590 $this->
object->setTargetGroup((
string)
$form->
getInput(
'target_group'));
591 $this->
object->setContactName((
string)
$form->
getInput(
'contact_name'));
592 $this->
object->setContactResponsibility((
string)
$form->
getInput(
'contact_responsibility'));
593 $this->
object->setContactPhone((
string)
$form->
getInput(
'contact_phone'));
594 $this->
object->setContactEmail((
string)
$form->
getInput(
'contact_email'));
595 $this->
object->setContactConsultation((
string)
$form->
getInput(
'contact_consultation'));
602 $file_obj->setCourseId($this->
object->getId());
603 $file_obj->setFileName((
string) $file_name);
604 $file_obj->setFileSize((
int) $file_info[
'size']);
605 $file_obj->setFileType((
string) $file_info[
'type']);
606 $file_obj->setTemporaryName((
string) $file_info[
'tmp_name']);
607 $file_obj->setErrorCode((
int) $file_info[
'error']);
610 $this->
error->setMessage(
'');
611 $file_obj->validate();
612 $this->
object->validateInfoSettings();
613 if (strlen($this->
error->getMessage())) {
616 if (!$this->record_gui->importEditFormPostValues()) {
621 $this->tpl->setOnScreenMessage(
'failure', $this->
error->getMessage());
624 $this->editInfoObject(
$form);
627 $this->
object->update();
629 $this->record_gui->writeEditForm();
633 $ecs->handleContentUpdate();
635 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"crs_settings_saved"));
636 $this->editInfoObject();
638 $this->tpl->setOnScreenMessage(
640 $this->
lng->txt(
'settings_saved')
654 $this->tpl->setOnScreenMessage(
'failure',
$GLOBALS[
'DIC']->
language()->txt(
'err_check_input'));
666 $min->setAlert($this->
lng->txt(
'crs_subscription_min_members_err'));
667 $this->tpl->setOnScreenMessage(
'failure',
$GLOBALS[
'DIC']->
language()->txt(
'err_check_input'));
676 $this->tpl->setOnScreenMessage(
678 $GLOBALS[
'DIC']->
language()->txt(
'crs_tile_and_objective_view_not_supported')
687 $this->tpl->setOnScreenMessage(
689 $GLOBALS[
'DIC']->
language()->txt(
'crs_tile_and_session_limit_not_supported')
703 $this->
object->setCoursePeriod(
704 $crs_period->getStart(),
705 $crs_period->getEnd()
710 if ($period->getStart() && $period->getEnd()) {
711 $this->
object->setActivationStart($period->getStart()->get(
IL_CAL_UNIX));
712 $this->
object->setActivationEnd($period->getEnd()->get(
IL_CAL_UNIX));
713 $this->
object->setActivationVisibility((
int)
$form->
getInput(
'activation_visibility'));
715 $this->
object->setActivationStart(0);
716 $this->
object->setActivationEnd(0);
720 $this->
object->setSubscriptionPassword(
$form->
getInput(
'subscription_password'));
721 $this->
object->setSubscriptionStart(0);
722 $this->
object->setSubscriptionEnd(0);
728 $this->
object->setSubscriptionType(
734 if ($sub_period->getStart() && $sub_period->getEnd()) {
736 $this->
object->setSubscriptionStart($sub_period->getStart()->get(
IL_CAL_UNIX));
737 $this->
object->setSubscriptionEnd($sub_period->getEnd()->get(
IL_CAL_UNIX));
743 $this->
object->setSubscriptionLimitationType(ilCourseConstants::IL_CRS_SUBSCRIPTION_DEACTIVATED);
747 $this->
object->enableRegistrationAccessCode((
bool)
$form->
getInput(
'reg_code_enabled'));
748 $this->
object->setRegistrationAccessCode(
$form->
getInput(
'reg_code'));
754 $this->
object->enableSubscriptionMembershipLimitation((
bool)
$form->
getInput(
'subscription_membership_limitation'));
755 $this->
object->setSubscriptionMaxMembers((
int)
$form->
getInput(
'subscription_max'));
756 $this->
object->setSubscriptionMinMembers((
int)
$form->
getInput(
'subscription_min'));
759 $this->
object->enableWaitingList(
true);
760 $this->
object->setWaitingListAutoFill(
true);
764 $this->
object->enableWaitingList(
true);
765 $this->
object->setWaitingListAutoFill(
false);
769 $this->
object->enableWaitingList(
false);
770 $this->
object->setWaitingListAutoFill(
false);
773 $this->
object->handleAutoFill();
775 $property_online = $this->
object->getObjectProperties()->getPropertyIsOnline();
776 $online =
$form->
getInput(
'activation_online') ? $property_online->withOnline() : $property_online->withOffline();
777 $this->
object->getObjectProperties()->storePropertyIsOnline($online);
779 $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->saveTitleIconVisibility();
780 $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->saveTopActionsVisibility();
782 $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->saveIcon();
783 $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->saveTileImage();
786 $this->
object->setViewMode((
int)
$form->
getInput(
'view_mode'));
789 $this->
object->setTimingMode((
int)
$form->
getInput(
'timing_mode'));
791 $this->
object->setTimingMode((
int)
$form->
getInput(
'timing_mode'));
792 $this->
object->setOrderType((
int)
$form->
getInput(
'sorting'));
796 "\n\n\nValue: " . (
int)
$form->
getInput(
'tutorial_support_block_checkbox') .
"\n\n\n"
798 $this->
object->setTutorialSupportBlockSettingValue(
803 $this->
object->setShowMembers((
bool)
$form->
getInput(
'show_members'));
806 $this->
object->setShowMembersExport((
bool)
$form->
getInput(
'show_members_export'));
808 $this->
object->setMailToMembersType((
int)
$form->
getInput(
'mail_type'));
810 $this->
object->enableSessionLimit((
int)
$form->
getInput(
'sl'));
813 $this->
object->setNumberOfPreviousSessions(is_numeric($session_sp) ? (
int) $session_sp : -1);
815 $this->
object->setNumberOfnextSessions(is_numeric($session_sn) ? (
int) $session_sn : -1);
816 $this->
object->setAutoNotification(
$form->
getInput(
'auto_notification') == 1 ?
true :
false);
819 $show_lp_sync_confirmation =
false;
822 if ($this->
http->wrapper()->post()->has(
'status_dt')) {
823 $status_dt = $this->
http->wrapper()->post()->retrieve(
831 $show_lp_sync_confirmation =
true;
833 $this->
object->setStatusDetermination($status_dt);
837 $this->
object->update();
842 $this->getSubServices()
848 if ($show_lp_sync_confirmation) {
855 if (!$ecs->handleSettingsUpdate(
$form)) {
857 $this->tpl->setOnScreenMessage(
'failure',
$GLOBALS[
'DIC']->
language()->txt(
'err_check_input'));
866 !is_null($sub_period->getStart()) ||
867 !is_null($sub_period->getEnd())
870 $this->tpl->setOnScreenMessage(
872 $this->
lng->txt(
'crs_msg_no_self_registration_period_if_self_enrolment_disabled'),
876 $this->tpl->setOnScreenMessage(
'failure',
$GLOBALS[
'DIC']->
language()->txt(
'err_check_input'));
897 if ($this->news->isGloballyActivated()) {
907 $cgui->setFormAction($this->
ctrl->getFormAction($this,
"setLPSync"));
908 $cgui->setHeaderText($this->
lng->txt(
"crs_status_determination_sync"));
909 $cgui->setCancel($this->
lng->txt(
"cancel"),
"edit");
910 $cgui->setConfirm($this->
lng->txt(
"confirm"),
"setLPSync");
911 $this->tpl->setContent($cgui->getHTML());
917 $this->
object->update();
918 $this->
object->syncMembersStatusWithLP();
919 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"settings_saved"),
true);
920 $this->
ctrl->redirect($this,
"edit");
926 $this->tabs_gui->setSubTabActive(
'general');
931 parent::editObject();
958 $this->initFormTitleDescription(
$form);
965 $this->
lng->loadLanguageModule(
'mem');
966 $cdur->enableToggleFullTime(
967 $this->
lng->txt(
'mem_period_without_time'),
968 !$this->object->getCourseStartTimeIndication()
970 $cdur->setShowTime(
true);
971 $cdur->setInfo($this->
lng->txt(
'crs_period_info'));
972 $cdur->setStart($this->
object->getCourseStart());
973 $cdur->setEnd($this->
object->getCourseEnd());
978 $this->
lng->loadLanguageModule(
'rep');
981 $section->setTitle($this->
lng->txt(
'rep_activation_availability'));
985 $online->setChecked(!$this->
object->getOfflineStatus());
986 $online->setInfo($this->
lng->txt(
'crs_activation_online_info'));
990 $dur->setShowTime(
true);
996 $this->
lng->txt(
'rep_activation_limited_visibility'),
997 'activation_visibility'
999 $visible->setInfo($this->
lng->txt(
'crs_activation_limited_visibility_info'));
1000 $visible->setChecked((
bool) $this->
object->getActivationVisibility());
1001 $dur->addSubItem($visible);
1004 $section->setTitle($this->
lng->txt(
'crs_reg'));
1009 $sdur->setShowTime(
true);
1010 if ($this->
object->getSubscriptionStart()) {
1013 if ($this->
object->getSubscriptionEnd()) {
1018 $reg_proc->setValue(
1020 ? (
string) $this->object->getSubscriptionType()
1025 $this->
lng->txt(
'crs_subscription_options_direct'),
1026 (
string) ilCourseConstants::IL_CRS_SUBSCRIPTION_DIRECT
1028 $reg_proc->addOption($opt);
1031 $this->
lng->txt(
'crs_subscription_options_password'),
1035 $pass =
new ilTextInputGUI($this->
lng->txt(
"password"),
'subscription_password');
1036 $pass->setRequired(
true);
1037 $pass->setInfo($this->
lng->txt(
'crs_reg_password_info'));
1038 $pass->setSubmitFormOnEnter(
true);
1040 $pass->setMaxLength(32);
1041 $pass->setValue($this->
object->getSubscriptionPassword());
1043 $opt->addSubItem($pass);
1044 $reg_proc->addOption($opt);
1047 $this->
lng->txt(
'crs_subscription_options_confirmation'),
1050 $opt->setInfo($this->
lng->txt(
'crs_registration_confirmation_info'));
1051 $reg_proc->addOption($opt);
1054 $this->
lng->txt(
'crs_reg_selfreg'),
1057 $opt_self_enrollment_enabled->addSubItem($reg_proc);
1058 $opt_self_enrollment_enabled->addSubItem($sdur);
1060 $this->
lng->txt(
'crs_reg_no_selfreg'),
1063 $opt_self_enrollment_disabled->setInfo($this->
lng->txt(
'crs_registration_deactivated'));
1065 $this->
lng->txt(
'crs_registration_type'),
1066 'subscription_limitation_type'
1068 $reg_proc_subscription_reg_type->setValue(
1069 $this->
object->getSubscriptionLimitationType() !== ilCourseConstants::IL_CRS_SUBSCRIPTION_DEACTIVATED
1073 $reg_proc_subscription_reg_type->addOption($opt_self_enrollment_enabled);
1074 $reg_proc_subscription_reg_type->addOption($opt_self_enrollment_disabled);
1079 $reg_code->setChecked($this->
object->isRegistrationAccessCodeEnabled());
1080 $reg_code->setValue(
'1');
1081 $reg_code->setInfo($this->
lng->txt(
'crs_reg_code_enabled_info'));
1084 if (!$this->
object->getRegistrationAccessCode()) {
1088 $reg_link->setValue($this->
object->getRegistrationAccessCode());
1092 $val = ilLink::_getLink(
1093 $this->
object->getRefId(),
1094 $this->object->getType(),
1096 'rcode' . $this->
object->getRegistrationAccessCode()
1098 $link->setHtml(
'<span class="small">' . $val .
'</span>');
1099 $reg_code->addSubItem($link);
1105 $cancel->setInfo($this->
lng->txt(
'crs_cancellation_end_info'));
1106 $cancel_end = $this->
object->getCancellationEnd();
1108 $cancel->setDate($cancel_end);
1114 $this->
lng->txt(
'crs_subscription_max_members_short'),
1115 'subscription_membership_limitation'
1117 $lim->setInfo($this->
lng->txt(
'crs_subscription_max_members_short_info'));
1118 $lim->setValue((
string) 1);
1119 $lim->setChecked($this->
object->isSubscriptionMembershipLimited());
1122 $min->setSubmitFormOnEnter(
true);
1124 $min->setMaxLength(4);
1125 $min->setValue($this->
object->getSubscriptionMinMembers() ?:
'');
1126 $min->setTitle($this->
lng->txt(
'crs_subscription_min_members'));
1127 $min->setInfo($this->
lng->txt(
'crs_subscription_min_members_info'));
1128 $lim->addSubItem($min);
1131 $max->setSubmitFormOnEnter(
true);
1133 $max->setMaxLength(4);
1134 $max->setValue($this->
object->getSubscriptionMaxMembers() ?:
'');
1135 $max->setTitle($this->
lng->txt(
'crs_subscription_max_members'));
1136 $max->setInfo($this->
lng->txt(
'crs_reg_max_info'));
1138 $lim->addSubItem($max);
1142 $wait->addOption($option);
1144 $option =
new ilRadioOption($this->
lng->txt(
'crs_waiting_list_no_autofill'),
'1');
1145 $option->setInfo($this->
lng->txt(
'crs_wait_info'));
1146 $wait->addOption($option);
1148 $option =
new ilRadioOption($this->
lng->txt(
'crs_waiting_list_autofill'),
'2');
1149 $option->setInfo($this->
lng->txt(
'crs_waiting_list_autofill_info'));
1150 $wait->addOption($option);
1152 if ($this->
object->hasWaitingListAutoFill()) {
1153 $wait->setValue(
'2');
1154 } elseif ($this->
object->enabledWaitingList()) {
1155 $wait->setValue(
'1');
1157 $wait->setValue(
'0');
1159 $lim->addSubItem($wait);
1162 $pres->setTitle($this->
lng->txt(
'crs_view_mode'));
1167 $form = $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->addTitleIconVisibility();
1170 $form = $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->addTopActionsVisibility();
1173 if ($setting->get(
"rep_breadcr_crs") && $setting->get(
"rep_breadcr_crs_overwrite")) {
1174 $add = $setting->get(
"rep_breadcr_crs_default")
1175 ?
" (" . $this->
lng->txt(
"crs_breadcrumb_crs_only") .
")"
1176 :
" (" . $this->
lng->txt(
"crs_breadcrumb_full_path") .
")";
1178 self::BREADCRUMB_DEFAULT => $this->
lng->txt(
"crs_sys_default") . $add,
1179 self::BREADCRUMB_CRS_ONLY => $this->lng->txt(
"crs_breadcrumb_crs_only"),
1180 self::BREADCRUMB_FULL_PATH => $this->lng->txt(
"crs_breadcrumb_full_path")
1189 $form = $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->addIcon();
1192 $form = $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->addTileImage();
1199 $view_type->setValue($this->
object->getViewMode());
1202 $this->
lng->txt(
'cntr_view_sessions'),
1205 $opts->setInfo($this->
lng->txt(
'cntr_view_info_sessions'));
1206 $view_type->addOption($opts);
1210 $sess->setValue(
'1');
1211 $sess->setChecked($this->
object->isSessionLimitEnabled());
1212 $sess->setInfo($this->
lng->txt(
'sess_limit_info'));
1215 #$prev->setSubmitFormOnEnter(true);
1216 $prev->setMinValue(0);
1218 $this->
object->getNumberOfPreviousSessions() == -1 ?
1220 $this->object->getNumberOfPreviousSessions()
1223 $prev->setMaxLength(3);
1224 $sess->addSubItem($prev);
1227 #$next->setSubmitFormOnEnter(true);
1228 $next->setMinValue(0);
1230 $this->
object->getNumberOfNextSessions() == -1 ?
1232 $this->object->getNumberOfnextSessions()
1235 $next->setMaxLength(3);
1236 $sess->addSubItem($next);
1238 $opts->addSubItem($sess);
1241 $optsi->setInfo($this->
lng->txt(
'cntr_view_info_simple'));
1242 $view_type->addOption($optsi);
1245 $this->
lng->txt(
'cntr_view_by_type'),
1248 $optbt->setInfo($this->
lng->txt(
'cntr_view_info_by_type'));
1249 $view_type->addOption($optbt);
1252 $this->
lng->txt(
'crs_view_objective'),
1255 $opto->setInfo($this->
lng->txt(
'crs_view_info_objective'));
1256 $view_type->addOption($opto);
1259 $optt->setInfo($this->
lng->txt(
'crs_view_info_timing'));
1263 $timing->setValue($this->
object->getTimingMode());
1266 $this->
lng->txt(
'crs_view_timing_absolute'),
1269 $absolute->setInfo($this->
lng->txt(
'crs_view_info_timing_absolute'));
1270 $timing->addOption($absolute);
1273 $this->
lng->txt(
'crs_view_timing_relative'),
1276 $relative->setInfo($this->
lng->txt(
'crs_view_info_timing_relative'));
1277 $timing->addOption($relative);
1279 $optt->addSubItem($timing);
1282 $view_type->addOption($optt);
1297 $this->
lng->txt(
'tutorial_support_block_setting_title'),
1298 'tutorial_support_block_checkbox'
1301 $tutorial_support_panel_checkbox->setChecked((
bool) $this->
object->getTutorialSupportBlockSettingValue());
1302 $tutorial_support_panel_checkbox->setInfo($this->
lng->txt(
'tutorial_support_block_byline'));
1308 if ($olp->getCurrentMode()) {
1310 $lp_status->setTitle($this->
lng->txt(
'crs_course_status_of_users'));
1315 $lp_status_options->setValue($this->
object->getStatusDetermination());
1318 $this->
lng->txt(
'crs_status_determination_lp'),
1320 $this->lng->txt(
'crs_status_determination_lp_info')
1322 $lp_status_options->addOption($lp_option);
1324 $this->
lng->txt(
'crs_status_determination_manual'),
1334 $feat->setTitle($this->
lng->txt(
'obj_features'));
1340 $this->getSubServices()
1344 $mem->setChecked($this->
object->getShowMembers());
1345 $mem->setInfo($this->
lng->txt(
'crs_show_members_info'));
1350 $part_list =
new ilCheckboxInputGUI($this->
lng->txt(
'crs_show_member_export'),
'show_members_export');
1351 $part_list->setChecked($this->
object->getShowMembersExport());
1352 $part_list->setInfo($this->
lng->txt(
'crs_show_member_export_info'));
1353 $mem->addSubItem($part_list);
1358 $mail_type->setValue($this->
object->getMailToMembersType());
1361 $this->
lng->txt(
'crs_mail_tutors_only'),
1363 $this->lng->txt(
'crs_mail_tutors_only_info')
1365 $mail_type->addOption($mail_tutors);
1368 $this->
lng->txt(
'crs_mail_all'),
1370 $this->lng->txt(
'crs_mail_all_info')
1372 $mail_type->addOption($mail_all);
1382 $not->setValue(
'1');
1383 $not->setInfo($this->
lng->txt(
'crs_auto_notification_info'));
1384 $not->setChecked($this->
object->getAutoNotification());
1388 $desk->setChecked($this->
object->getAboStatus());
1389 $desk->setInfo($this->
lng->txt(
'crs_add_remove_from_desktop_info'));
1394 $ecs->addSettingsToForm(
$form,
'crs');
1401 if ($this->
http->wrapper()->query()->has(
'file_id')) {
1402 $file_id = $this->
http->wrapper()->query()->retrieve(
1415 $this->tabs_gui->addSubTabTarget(
1417 $this->
ctrl->getLinkTarget($this,
'edit'),
1422 $this->tabs_gui->addSubTabTarget(
1423 "crs_info_settings",
1424 $this->
ctrl->getLinkTarget($this,
'editInfo'),
1429 $this->tabs_gui->addSubTabTarget(
1431 $this->
ctrl->getLinkTargetByClass(
'ilConditionHandlerGUI',
'listConditions'),
1433 "ilConditionHandlerGUI"
1436 $this->tabs_gui->addSubTabTarget(
1437 "crs_start_objects",
1438 $this->
ctrl->getLinkTargetByClass(
'ilContainerStartObjectsGUI',
'listStructure'),
1443 $this->tabs_gui->addSubTabTarget(
1445 $this->
ctrl->getLinkTargetByClass(
'ilobjcoursegroupinggui',
'listGroupings'),
1450 if ($lti_settings->hasSettingsAccess()) {
1451 $this->tabs_gui->addSubTabTarget(
1453 $this->
ctrl->getLinkTargetByClass(ilLTIProviderObjectSettingGUI::class)
1459 $this->tabs_gui->addSubTabTarget(
1461 $this->
ctrl->getLinkTarget($this,
'editMapSettings'),
1469 $this->tabs_gui->addSubTabTarget(
1470 'crs_custom_user_fields',
1471 $this->
ctrl->getLinkTargetByClass(
'ilobjectcustomuserfieldsgui'),
1473 'ilobjectcustomuserfieldsgui'
1479 if (
true === $validator->validate()) {
1480 $this->tabs_gui->addSubTabTarget(
1482 $this->
ctrl->getLinkTargetByClass(
"ilcertificategui",
"certificateeditor"),
1488 if ($this->
object->getUseNews()) {
1489 $this->tabs_gui->addSubTab(
1490 'obj_news_settings',
1491 $this->
lng->txt(
"cont_news_settings"),
1492 $this->ctrl->getLinkTargetByClass(
'ilcontainernewssettingsgui')
1495 if ($this->
object->getShowMembersExport()) {
1496 $this->tabs_gui->addSubTab(
1498 $this->
lng->txt(
'crs_show_member_export_settings'),
1499 $this->ctrl->getLinkTargetByClass(
'ilmemberexportsettingsgui',
'')
1502 $this->tabs_gui->addSubTabTarget(
1503 "obj_multilinguality",
1504 $this->
ctrl->getLinkTargetByClass(TranslationGUI::class,
""),
1506 TranslationGUI::class
1519 !$this->isActiveAdministrationPanel()) {
1529 foreach ($disabled_object_types as
$type) {
1530 unset($createble_object_types[
$type]);
1545 $new_object->getMemberObject()->updateNotification(
1546 $this->
user->getId(),
1547 $this->settings->get(
'mail_crs_admin_notification',
'1')
1549 $new_object->getMemberObject()->updateContact($this->
user->getId(), 1);
1556 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"crs_added"),
true);
1557 $this->
ctrl->setParameter($this,
"ref_id", $new_object->
getRefId());
1560 $this->
ctrl->getLinkTarget($this,
"edit",
"")
1564 public function readMemberData(array $ids, ?array $selected_columns =
null,
bool $skip_names =
false): array
1571 if ($show_tracking) {
1573 $show_tracking = $olp->isActive();
1576 if ($show_tracking) {
1583 if ($privacy->enabledCourseAccessTimes()) {
1587 $do_prtf = (is_array($selected_columns) &&
1588 in_array(
'prtf', $selected_columns) &&
1597 foreach ($ids as $usr_id) {
1607 $tmp_data[
'firstname'] = $name[
'firstname'];
1608 $tmp_data[
'lastname'] = $name[
'lastname'];
1609 $tmp_data[
'login'] = $name[
'login'];
1611 $tmp_data[
'passed'] = $this->
object->getMembersObject()->hasPassed($usr_id) ? 1 : 0;
1613 $tmp_data[
'passed_info'] = $this->
object->getMembersObject()->getPassedInfo($usr_id);
1615 $tmp_data[
'notification'] = $this->
object->getMembersObject()->isNotificationEnabled($usr_id) ? 1 : 0;
1616 $tmp_data[
'blocked'] = $this->
object->getMembersObject()->isBlocked($usr_id) ? 1 : 0;
1617 $tmp_data[
'contact'] = $this->
object->getMembersObject()->isContact($usr_id) ? 1 : 0;
1619 $tmp_data[
'usr_id'] = $usr_id;
1621 if ($show_tracking) {
1622 if (in_array($usr_id, $completed)) {
1624 } elseif (in_array($usr_id, $in_progress)) {
1626 } elseif (in_array($usr_id, $failed)) {
1633 if ($privacy->enabledCourseAccessTimes()) {
1634 if (isset($progress[$usr_id][
'ts']) && $progress[$usr_id][
'ts']) {
1635 $tmp_data[
'access_ut'] = $progress[$usr_id][
'ts'];
1637 $progress[$usr_id][
'ts'],
1641 $tmp_data[
'access_ut'] = 0;
1642 $tmp_data[
'access_time'] = $this->
lng->txt(
'no_date');
1647 $tmp_data[
'prtf'] = $all_prtf[$usr_id] ??
null;
1650 $members[$usr_id] = $tmp_data;
1667 if ($marks->getCompleted() !== $a_has_passed) {
1668 $marks->setCompleted($a_has_passed);
1683 $this->
object->isSubscriptionMembershipLimited() &&
1684 $this->object->getSubscriptionMaxMembers() &&
1685 $this->object->getSubscriptionMaxMembers() <= $this->object->getMembersObject()->getCountMembers()
1687 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"crs_max_members_reached"));
1691 if ($number = $this->
object->getMembersObject()->autoFillSubscribers()) {
1692 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"crs_number_users_added") .
" " . $number);
1694 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"crs_no_users_added"));
1704 if ($this->
object->getMembersObject()->isLastAdmin($this->user->getId())) {
1705 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'crs_min_one_admin'));
1710 $this->tabs_gui->setTabActive(
'crs_unsubscribe');
1712 $cgui->setHeaderText($this->
lng->txt(
'crs_unsubscribe_sure'));
1713 $cgui->setFormAction($this->
ctrl->getFormAction($this));
1714 $cgui->setCancel($this->
lng->txt(
"cancel"),
"cancel");
1715 $cgui->setConfirm($this->
lng->txt(
"crs_unsubscribe"),
"performUnsubscribe");
1716 $this->tpl->setContent($cgui->getHTML());
1727 $this->
getObject()->getMembersObject()->delete($this->
user->getId());
1728 $this->
getObject()->getMembersObject()->sendUnsubscribeNotificationToAdmins($this->
user->getId());
1729 $this->
getObject()->getMembersObject()->sendNotification(
1731 $this->
user->getId()
1733 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'crs_unsubscribed_from_crs'),
true);
1735 $this->
ctrl->setParameterByClass(
"ilrepositorygui",
"ref_id", $this->tree->getParentId($this->ref_id));
1736 $this->
ctrl->redirectByClass(
"ilrepositorygui",
"");
1742 if ($this->
access->checkAccess(
'visible',
'', $this->ref_id)) {
1743 $this->
tabs->addTarget(
1745 $this->
ctrl->getLinkTargetByClass(
1746 array(
"ilobjcoursegui",
"ilinfoscreengui"),
1753 $this->
access->checkAccess(
'leave',
'', $this->object->getRefId()) &&
1754 $this->object->getMemberObject()->isMember()
1756 $this->
tabs->addTarget(
1758 $this->
ctrl->getLinkTarget($this,
"unsubscribe"),
1767 $this->tabs_gui->addTab(
1769 $this->
lng->txt(
"content"),
1770 $this->ctrl->getLinkTarget($this,
"view")
1776 $this->
help->setScreenIdComponent(
"crs");
1777 $this->
ctrl->setParameter($this,
"ref_id", $this->ref_id);
1779 if ($this->
access->checkAccess(
'read',
'', $this->ref_id)) {
1781 $this->tabs_gui->activateTab(
'view_content');
1782 if ($this->
object->isNewsTimelineEffective()) {
1783 if (!$this->
object->isNewsTimelineLandingPageEffective()) {
1786 $this->tabs_gui->addTab(
1788 $this->
lng->txt(
"cont_news_timeline_tab"),
1789 $this->ctrl->getLinkTargetByClass(ilNewsTimelineGUI::class,
"show")
1791 if ($this->
object->isNewsTimelineLandingPageEffective()) {
1801 $this->
tabs->addTab(
1803 $this->
lng->txt(
'timings_timings'),
1804 $this->ctrl->getLinkTargetByClass(
'ilcoursecontentgui',
'manageTimings')
1808 $this->
tabs->addTab(
1810 $this->
lng->txt(
'timings_timings'),
1811 $this->ctrl->getLinkTargetByClass(
'ilcoursecontentgui',
'managePersonalTimings')
1816 if ($this->
access->checkAccess(
'write',
'', $this->ref_id)) {
1818 $this->tabs_gui->addTarget(
1820 $this->
ctrl->getLinkTargetByClass(
'illoeditorgui',
''),
1827 $this->
access->checkAccess(
'visible',
'', $this->ref_id) ||
1828 $this->access->checkAccess(
'join',
'', $this->ref_id) ||
1829 $this->access->checkAccess(
'read',
'', $this->ref_id)
1832 strcasecmp($this->
ctrl->getCmdClass(), ilInfoScreenGUI::class) === 0 ||
1833 strcasecmp($this->
ctrl->getCmdClass(), ilNoteGUI::class) === 0;
1834 $this->tabs_gui->addTarget(
1836 $this->
ctrl->getLinkTargetByClass(
1837 array(
"ilobjcoursegui",
"ilinfoscreengui"),
1846 if ($this->
access->checkAccess(
'write',
'', $this->ref_id)) {
1848 strcasecmp($this->
ctrl->getCmdClass(), ilConditionHandlerGUI::class) &&
1849 !$this->
http->wrapper()->query()->has(
'item_id');
1850 $this->tabs_gui->addTarget(
1852 $this->
ctrl->getLinkTarget($this,
"edit"),
1853 array(
"edit",
"editMapSettings",
"editCourseIcons",
"listStructure"),
1864 $membership_gui->addMemberTab($this->tabs_gui, $is_participant);
1867 if ($this->
access->checkAccess(
'write',
'', $this->ref_id)) {
1869 $this->tabs_gui->addTarget(
1870 "obj_tool_setting_badges",
1871 $this->
ctrl->getLinkTargetByClass(
"ilbadgemanagementgui",
""),
1873 "ilbadgemanagementgui"
1880 $this->tabs_gui->addTarget(
1881 "obj_tool_setting_skills",
1882 $this->
ctrl->getLinkTargetByClass(array(
"ilcontainerskillgui",
"ilcontskillpresentationgui"),
""),
1884 array(
"ilcontainerskillgui",
"ilcontskillpresentationgui",
"ilcontskilladmingui")
1890 $this->object->getId(),
1894 $this->tabs_gui->addTarget(
1895 "obj_tool_setting_booking",
1896 $this->
ctrl->getLinkTargetByClass(array(
"ilbookinggatewaygui"),
"")
1902 $this->tabs_gui->addTarget(
1903 'learning_progress',
1904 $this->
ctrl->getLinkTargetByClass(array(
'ilobjcoursegui',
'illearningprogressgui'),
''),
1906 array(
'illplistofobjectsgui',
'illplistofsettingsgui',
'illearningprogressgui',
'illplistofprogressgui')
1911 if ($this->
access->checkAccess(
'write',
'', $this->ref_id)) {
1913 $mdtab = $mdgui->getTab();
1915 $this->tabs_gui->addTarget(
1919 "ilobjectmetadatagui"
1924 if ($this->
access->checkAccess(
'write',
'', $this->object->getRefId())) {
1925 $this->tabs_gui->addTarget(
1927 $this->
ctrl->getLinkTargetByClass(
'ilexportgui',
''),
1933 if ($this->
access->checkAccess(
'edit_permission',
'', $this->ref_id)) {
1934 $this->tabs_gui->addTarget(
1936 $this->
ctrl->getLinkTargetByClass(array(get_class($this),
'ilpermissiongui'),
"perm"),
1937 array(
"perm",
"info",
"owner"),
1943 if ($this->
access->checkAccess(
'join',
'', $this->ref_id) && !$this->object->getMemberObject()->isAssigned()) {
1945 $this->tabs_gui->addTab(
1947 $this->
lng->txt(
'membership_leave'),
1948 $this->ctrl->getLinkTargetByClass(
'ilcourseregistrationgui',
'show',
'')
1951 $this->tabs_gui->addTarget(
1953 $this->
ctrl->getLinkTargetByClass(
'ilcourseregistrationgui',
"show"),
1959 if ($this->
access->checkAccess(
'leave',
'', $this->object->getRefId()) && $this->object->getMemberObject()->isMember()) {
1960 $this->tabs_gui->addTarget(
1962 $this->
ctrl->getLinkTarget($this,
"unsubscribe"),
1971 $next_class = $this->
ctrl->getNextClass($this);
1972 $cmd = $this->
ctrl->getCmd();
1978 $this->
access->checkAccess(
'read',
'', $this->ref_id)) {
1979 $this->navigation_history->addItem(
1981 ilLink::_getLink($this->ref_id,
"crs"),
1985 $header_action =
true;
1986 switch ($next_class) {
1987 case strtolower(ilRepositoryTrashGUI::class):
1988 $ru = new \ilRepositoryTrashGUI($this);
1989 $this->
ctrl->setReturn($this,
'trash');
1990 $this->
ctrl->forwardCommand($ru);
1993 case 'illtiproviderobjectsettinggui':
1996 $this->tabs_gui->activateTab(
'settings');
1997 $this->tabs_gui->activateSubTab(
'lti_provider');
2000 $lti_gui->offerLTIRolesForSelection(
false);
2001 $this->
ctrl->forwardCommand($lti_gui);
2004 case 'ilcoursemembershipgui':
2006 $this->tabs_gui->activateTab(
'members');
2009 $this->
ctrl->forwardCommand($mem_gui);
2012 case "ilinfoscreengui":
2016 case 'ilobjectmetadatagui':
2017 if (!$this->
access->checkAccess(
'write',
'', $this->object->getRefId())) {
2018 $this->
error->raiseError($this->
lng->txt(
'permission_denied'), $this->error->WARNING);
2020 $this->tabs_gui->setTabActive(
'meta_data');
2022 $this->
ctrl->forwardCommand($md_gui);
2025 case 'ilcourseregistrationgui':
2026 $this->
ctrl->setReturn($this,
'');
2027 $this->tabs_gui->setTabActive(
'join');
2029 $this->
ctrl->forwardCommand($registration);
2032 case 'ilobjectcustomuserfieldsgui':
2035 $this->tabs_gui->activateTab(
'settings');
2036 $this->tabs_gui->activateSubTab(
'crs_custom_user_fields');
2037 $this->
ctrl->forwardCommand($cdf_gui);
2040 case "ilcourseobjectivesgui":
2042 $this->
ctrl->setReturn($this,
"");
2044 $this->
ctrl->forwardCommand($reg_gui);
2047 case 'ilobjcoursegroupinggui':
2049 $this->
ctrl->setReturn($this,
'edit');
2051 $this->tabs_gui->activateTab(
'settings');
2052 $this->tabs_gui->activateSubTab(
'groupings');
2055 if ($this->
http->wrapper()->query()->has(
'obj_id')) {
2056 $grouping_id = $this->
http->wrapper()->query()->retrieve(
2062 $this->
ctrl->forwardCommand($crs_grp_gui);
2065 case "ilpropertyformgui":
2072 $this->
ctrl->setReturn($this,
"");
2073 $this->tabs_gui->setTabActive(
'none');
2082 case "ilconditionhandlergui":
2085 $this->tabs_gui->activateTab(
'settings');
2086 $this->tabs_gui->activateSubTab(
'preconditions');
2088 $this->
ctrl->forwardCommand($new_gui);
2091 case "illearningprogressgui":
2094 if ($this->
http->wrapper()->query()->has(
'user_id')) {
2102 $this->
object->getRefId(),
2105 $this->
ctrl->forwardCommand($new_gui);
2106 $this->tabs_gui->setTabActive(
'learning_progress');
2109 case 'ilpermissiongui':
2110 $this->tabs_gui->setTabActive(
'perm_settings');
2112 $this->
ctrl->forwardCommand($perm_gui);
2115 case 'ilcalendarpresentationgui':
2117 $ret = $this->
ctrl->forwardCommand($cal);
2118 $header_action =
false;
2121 case 'ilcoursecontentgui':
2122 $this->
ctrl->setReturn($this,
'members');
2124 $this->
ctrl->forwardCommand($course_content_obj);
2127 case strtolower(PublicProfileGUI::class):
2129 $this->tabs_gui->setTabActive(
'members');
2132 if ($this->
http->wrapper()->query()->has(
'user_id')) {
2139 $profile_gui->setBackUrl($this->
ctrl->getLinkTargetByClass([
"ilCourseMembershipGUI",
2142 $this->tabs_gui->setSubTabActive(
'crs_members_gallery');
2143 $html = $this->
ctrl->forwardCommand($profile_gui);
2144 $this->tpl->setVariable(
"ADM_CONTENT",
$html);
2147 case 'ilmemberagreementgui':
2148 $this->tabs_gui->clearTargets();
2150 $this->
ctrl->setReturn($this,
'');
2152 $this->
ctrl->forwardCommand($agreement);
2156 case "ilcontainerpagegui":
2159 $this->tpl->setContent($ret);
2161 $header_action =
false;
2164 case "ilcontainerstartobjectspagegui":
2167 $ret = $this->
ctrl->forwardCommand($pgui);
2169 $this->tpl->setContent($ret);
2173 case 'ilobjectcopygui':
2175 $cp->setType(
'crs');
2176 $this->
ctrl->forwardCommand($cp);
2179 case "ilobjectcontentstylesettingsgui":
2186 $settings_gui =
$DIC->contentStyle()->gui()
2187 ->objectSettingsGUIForRefId(
2189 $this->
object->getRefId()
2191 $this->
ctrl->forwardCommand($settings_gui);
2195 $this->tabs_gui->setTabActive(
'export');
2197 $exp->addFormat(
'xml');
2198 $this->
ctrl->forwardCommand($exp);
2201 case "ilcommonactiondispatchergui":
2206 case 'ildidactictemplategui':
2207 $this->
ctrl->setReturn($this,
'edit');
2209 $this->
ctrl->forwardCommand($did);
2212 case "ilcertificategui":
2213 $this->tabs_gui->activateTab(
"settings");
2215 $this->tabs_gui->activateSubTab(
'certificate');
2218 $output_gui = $guiFactory->create($this->
object);
2219 $this->
ctrl->forwardCommand($output_gui);
2222 case 'illoeditorgui':
2223 #$this->tabs_gui->clearTargets();
2224 #$this->tabs_gui->setBackTarget($this->lng->txt('back'),$this->ctrl->getLinkTarget($this,''));
2225 $this->tabs_gui->activateTab(
'crs_objectives');
2228 $this->
ctrl->forwardCommand($editor);
2229 if (strtolower($this->
ctrl->getCmdClass()) ===
"illopagegui") {
2230 $header_action =
false;
2234 case 'ilcontainerstartobjectsgui':
2235 $this->
ctrl->setReturn($this,
'edit');
2236 $this->tabs_gui->clearTargets();
2237 $this->tabs_gui->setBackTarget(
2238 $this->
lng->txt(
"back_to_crs_content"),
2239 $this->ctrl->getLinkTarget($this,
"edit")
2241 $this->tabs_gui->addTab(
2243 $this->
lng->txt(
"crs_start_objects"),
2244 $this->ctrl->getLinkTargetByClass(
"ilcontainerstartobjectsgui",
"listStructure")
2246 $this->tabs_gui->activateTab(
"start");
2247 if (strtolower($this->
ctrl->getCmdClass()) ==
2248 "ilcontainerstartobjectspagegui") {
2249 $header_action =
false;
2253 $ilHelp =
$DIC[
'ilHelp'];
2254 $this->
help->setScreenIdComponent(
"crs");
2256 $this->
ctrl->forwardCommand($stgui);
2259 case 'illomembertestresultgui':
2260 $GLOBALS[
'DIC'][
'ilCtrl']->setReturn($this,
'members');
2261 $GLOBALS[
'DIC'][
'ilTabs']->clearTargets();
2262 $GLOBALS[
'DIC'][
'ilTabs']->setBackTarget(
2263 $GLOBALS[
'DIC'][
'lng']->txt(
'back'),
2264 $GLOBALS[
'DIC'][
'ilCtrl']->getLinkTarget($this,
'members')
2268 if ($this->
http->wrapper()->query()->has(
'uid')) {
2269 $uid = $this->
http->wrapper()->query()->retrieve(
2275 $this->
ctrl->forwardCommand($result_view);
2278 case 'ilmailmembersearchgui':
2283 $this->access->checkAccess(
'manage_members',
"", $this->object->getRefId())) &&
2284 $this->rbac_system->checkAccess(
'internal_mail', $mail->getMailObjectReferenceId())) {
2285 $this->
error->raiseError($this->
lng->txt(
"msg_no_perm_read"), $this->error->MESSAGE);
2288 $this->tabs_gui->setTabActive(
'members');
2292 $this->
object->getRefId(),
2295 $mail_search->setObjParticipants(
2298 $this->
ctrl->forwardCommand($mail_search);
2301 case 'ilbadgemanagementgui':
2302 $this->tabs_gui->setTabActive(
'obj_tool_setting_badges');
2304 $this->
ctrl->forwardCommand($bgui);
2307 case "ilcontainernewssettingsgui":
2309 $this->tabs_gui->activateTab(
'settings');
2310 $this->tabs_gui->activateSubTab(
'obj_news_settings');
2312 $news_set_gui->setTimeline(
true);
2313 $news_set_gui->setCronNotifications(
true);
2314 $news_set_gui->setHideByDate(
true);
2315 $this->
ctrl->forwardCommand($news_set_gui);
2318 case strtolower(ilNewsTimelineGUI::class):
2320 $this->
ctrl->redirectByClass(self::class,
"view");
2322 $this->tabs_gui->setTabActive(
'news_timeline');
2324 $this->
object->getRefId(),
2325 $this->object->getNewsTimelineAutoEntries()
2327 $t->setUserEditAll($this->
access->checkAccess(
'write',
'', $this->object->getRefId(),
'grp'));
2329 $this->
ctrl->forwardCommand($t);
2331 $this->
user->getId(),
2332 $this->object->getId(),
2333 $this->object->getRefId(),
2338 case 'ilmemberexportsettingsgui':
2340 $this->tabs_gui->activateTab(
'properties');
2341 $this->tabs_gui->activateSubTab(
'export_members');
2343 $this->
ctrl->forwardCommand($settings_gui);
2346 case "ilcontainerskillgui":
2347 $this->tabs_gui->activateTab(
'obj_tool_setting_skills');
2352 case strtolower(TranslationGUI::class):
2355 $this->tabs_gui->activateTab(
"settings");
2356 $this->tabs_gui->activateSubTab(
"obj_multilinguality");
2370 $this->
ctrl->forwardCommand($transgui);
2373 case "ilbookinggatewaygui":
2374 $this->tabs_gui->activateTab(
'obj_tool_setting_booking');
2381 if ($cmd ==
'infoScreenGoto') {
2386 $cmd =
'infoScreen';
2390 if (!$this->creation_mode) {
2391 if ($cmd ==
"infoScreen") {
2398 if (!$this->creation_mode
2399 && $cmd !=
'infoScreen'
2400 && $cmd !=
'sendfile'
2401 && $cmd !=
'unsubscribe'
2402 && $cmd !=
'deliverCertificate'
2403 && $cmd !=
'performUnsubscribe'
2404 && $cmd !=
'removeFromDesk'
2406 && !$this->
access->checkAccess(
"read",
'', $this->object->getRefId())
2408 || $cmd ==
'subscribe'
2409 || $cmd ===
'leaveWaitList') {
2410 if ($this->rbac_system->checkAccess(
'join', $this->object->getRefId()) &&
2412 $this->
ctrl->redirectByClass(
"ilCourseRegistrationGUI");
2419 if ($cmd ==
'listObjectives') {
2420 $this->
ctrl->setReturn($this,
"");
2422 $this->
ctrl->forwardCommand($obj_gui);
2426 if ($cmd ==
"" && $this->
object->isNewsTimelineLandingPageEffective()) {
2427 $this->
ctrl->redirectByClass(ilNewsTimelineGUI::class);
2438 if ($header_action) {
2445 if ($this->
access->checkAccess(
'write',
'', $this->object->getRefId())) {
2450 if (!$this->
object->getMemberObject()->isAssigned()) {
2467 $this->
logger->warning(
'Missing course confirmation.');
2472 $this->
logger->warning(
'Missing required fields');
2480 return array(
"ilCourseRegisterGUI",
'ilConditionHandlerGUI');
2485 $this->
ctrl->redirectByClass(
'ilcoursemembershipgui');
2488 public static function _goto($a_target,
string $a_add =
""): void
2491 $main_tpl =
$DIC->ui()->mainTemplate();
2492 $ilAccess =
$DIC[
'ilAccess'];
2495 $ilUser =
$DIC[
'ilUser'];
2499 $a_target = (
int) $a_target;
2501 if (substr($a_add, 0, 5) ==
'rcode') {
2512 "login.php?target=" . $target .
"&cmd=force_login&lang=" .
2513 $ilUser->getCurrentLanguage()
2525 if ($a_add ==
"mem" && $ilAccess->checkAccess(
"manage_members",
"", $a_target)) {
2533 if ($ilAccess->checkAccess(
"read",
"", $a_target)) {
2537 if ($ilAccess->checkAccess(
"visible",
"", $a_target)) {
2541 $main_tpl->setOnScreenMessage(
'failure', sprintf(
2542 $lng->
txt(
"msg_no_perm_read_item"),
2555 $this->tabs_gui->activateTab(
'settings');
2556 $this->tabs_gui->activateSubTab(
'crs_map_settings');
2559 !$this->
access->checkAccess(
"write",
"", $this->object->getRefId())) {
2563 $latitude = $this->
object->getLatitude();
2564 $longitude = $this->
object->getLongitude();
2565 $zoom = $this->
object->getLocationZoom();
2568 if ($latitude == 0 && $longitude == 0 && $zoom == 0) {
2570 $latitude = $def[
"latitude"];
2571 $longitude = $def[
"longitude"];
2572 $zoom = $def[
"zoom"];
2581 $this->
lng->txt(
"crs_enable_map"),
2584 $public->setValue(
"1");
2585 $public->setChecked($this->
object->getEnableCourseMap());
2590 $this->
lng->txt(
"crs_map_location"),
2593 $loc_prop->setLatitude((
float) $latitude);
2594 $loc_prop->setLongitude((
float) $longitude);
2595 $loc_prop->setZoom((
int) $zoom);
2600 $this->tpl->setVariable(
"ADM_CONTENT",
$form->
getHTML());
2610 if ($this->
http->wrapper()->post()->has(
'location')) {
2611 $custom_transformer = $this->
refinery->custom()->transformation(
2612 fn($array) => $array
2619 $enable_map =
false;
2620 if ($this->
http->wrapper()->post()->has(
'enable_map')) {
2621 $enable_map = $this->
http->wrapper()->post()->retrieve(
2623 $this->
refinery->kindlyTo()->bool()
2626 $this->
object->setLatitude(
$location[
'latitude']);
2627 $this->
object->setLongitude(
$location[
'longitude']);
2628 $this->
object->setLocationZoom(
$location[
'zoom']);
2629 $this->
object->setEnableCourseMap($enable_map);
2630 $this->
object->update();
2631 $this->
ctrl->redirect($this,
"editMapSettings");
2641 'ilcoursecontentgui',
2643 $this->
object->getAboStatus(),
2644 $this->object->getRefId(),
2645 $this->object->getId()
2651 string $a_cmd_class,
2654 int $a_course_ref_id,
2655 int $a_course_obj_id,
2656 int $a_parent_ref_id = 0
2660 $ilAccess =
$DIC->access();
2663 if ($a_parent_ref_id == 0) {
2664 $a_parent_ref_id = $a_course_ref_id;
2669 $a_item_list_gui->addCommandLinkParameter(array(
'crs_show_result' => $a_course_ref_id));
2674 $is_tutor = ($ilAccess->checkAccess(
2690 $ilAccess =
$DIC[
'ilAccess'];
2692 $ilCtrl =
$DIC[
'ilCtrl'];
2694 if ($this->
object->getType() !=
'crs') {
2697 if (!$this->
access->checkAccess(
2700 $this->object->getRefId(),
2702 $this->object->getId()
2706 if ($this->
object->enabledObjectiveView()) {
2713 if (!$this->isActiveAdministrationPanel()) {
2714 $this->tabs_gui->addSubTab(
2717 $this->ctrl->getLinkTargetByClass(
"ilobjcoursegui",
"view")
2720 $this->tabs_gui->addSubTab(
2723 $this->ctrl->getLinkTargetByClass(
"ilobjcoursegui",
"disableAdministrationPanel")
2728 $this->addStandardContainerSubTabs(
false);
2735 $confirm->setHeaderText($this->
lng->txt(
'crs_objectives_reset_sure'));
2736 $confirm->setFormAction($this->
ctrl->getFormAction($this));
2737 $confirm->setConfirm($this->
lng->txt(
'reset'),
'reset');
2738 $confirm->setCancel($this->
lng->txt(
'cancel'),
'cancel');
2739 $this->tpl->setContent($confirm->getHTML());
2745 $usr_results->delete();
2752 $tmp_obj_res->reset($this->
object->getId());
2754 $this->
user->deletePref(
'crs_objectives_force_details_' . $this->
object->getId());
2755 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'crs_objectives_reseted'));
2756 $this->viewObject();
2761 if ($this->
access->checkAccess(
'write',
'', $this->object->getRefId())) {
2765 $this->
object->getRefId(),
2766 $this->object->getId()
2768 if (count($this->start_obj->getStartObjects()) &&
2769 !$this->start_obj->allFullfilled($this->user->getId())) {
2781 $link = chr(13) . chr(10) . chr(13) . chr(10);
2782 $link .= $this->
lng->txt(
'crs_mail_permanent_link');
2783 $link .= chr(13) . chr(10) . chr(13) . chr(10);
2784 $link .= ilLink::_getLink($this->
object->getRefId());
2785 return rawurlencode(base64_encode($link));
2790 $lg = parent::initHeaderAction($sub_type, $sub_id);
2796 if ($validator->isCertificateDownloadable($this->user->getId(), $this->object->getId())) {
2797 $cert_url = $this->
ctrl->getLinkTarget($this,
"deliverCertificate");
2799 $this->
lng->loadLanguageModule(
"certificate");
2800 $lg->addCustomCommand($cert_url,
"download_certificate");
2805 $this->
lng->txt(
"download_certificate"),
2815 if (!$noti->isCurrentUserActive()) {
2819 $this->
lng->txt(
"crs_notification_deactivated")
2822 $this->
ctrl->setParameter($this,
"crs_ntf", 1);
2823 $caption =
"crs_activate_notification";
2828 $this->
lng->txt(
"crs_notification_activated")
2831 $this->
ctrl->setParameter($this,
"crs_ntf", 0);
2832 $caption =
"crs_deactivate_notification";
2835 if ($noti->canCurrentUserEdit()) {
2836 $lg->addCustomCommand(
2837 $this->
ctrl->getLinkTarget($this,
"saveNotification"),
2842 $this->
ctrl->setParameter($this,
"crs_ntf",
"");
2855 if ($this->
access->checkAccess(
'manage_members',
'', $this->ref_id)) {
2857 if ($this->
http->wrapper()->query()->has(
'member_id')) {
2868 $objId = $this->
object->getId();
2872 if (
false === $validator->isCertificateDownloadable(
$user_id,
$objId)) {
2873 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"permission_denied"),
true);
2874 $this->
ctrl->redirect($this);
2884 $this->
lng->txt(
'error_creating_certificate_pdf')
2891 $this->
ctrl->redirectByClass(array(
'ilrepositorygui',
'ilobjcoursegui',
'illoeditorgui'),
'materials');
2896 $post_position = (array) ($this->
http->request()->getParsedBody()[
'position'] ?? []);
2897 if (isset($post_position[
'lobj'])) {
2898 $lobj = $post_position[
'lobj'];
2899 $objective_order = array();
2900 foreach ($lobj as $objective_id => $materials) {
2901 $objective_order[$objective_id] = $materials[0];
2902 unset($lobj[$objective_id][0]);
2905 asort($objective_order);
2907 foreach (array_keys($objective_order) as $objective_id) {
2909 $obj->writePosition(++$pos);
2913 foreach ($lobj as $objective_id => $materials) {
2918 foreach (array_keys($materials) as
$ass_id) {
2919 $objmat->writePosition(
$ass_id, ++$pos);
2923 parent::saveSortingObject();
2929 if ($this->
http->wrapper()->query()->has(
'tid')) {
2930 $tid = $this->
http->wrapper()->query()->retrieve(
2934 } elseif ($this->
http->wrapper()->post()->has(
'tid')) {
2935 $tid = $this->
http->wrapper()->post()->retrieve(
2946 if ($this->
http->wrapper()->query()->has(
'tid')) {
2947 $tid = $this->
http->wrapper()->query()->retrieve(
2953 if ($this->
http->wrapper()->query()->has(
'objective_id')) {
2954 $objective_id = $this->
http->wrapper()->query()->retrieve(
2962 $this->user->getId()
2964 $passed =
$res->getCompletedObjectiveIds();
2966 $has_completed =
false;
2967 if ($objective_id) {
2968 $objective_ids = array($objective_id);
2969 if (in_array($objective_id, $passed)) {
2970 $has_completed =
true;
2977 if (count($objective_ids) === count($passed)) {
2978 $has_completed =
true;
2983 if ($has_completed) {
2985 $this->redirectLocToTestConfirmation($objective_id, $tid);
2997 $confirm->setFormAction(
$GLOBALS[
'DIC'][
'ilCtrl']->getFormAction($this));
2999 if ($a_objective_id) {
3000 $question = $this->
lng->txt(
'crs_loc_objective_passed_confirmation');
3002 $question = $this->
lng->txt(
'crs_loc_objectives_passed_confirmation');
3005 $confirm->setHeaderText($question);
3006 $confirm->addHiddenItem(
'objective_id', (
string) $a_objective_id);
3007 $confirm->addHiddenItem(
'tid', (
string) $a_test_id);
3008 $confirm->setConfirm($this->
lng->txt(
'crs_loc_tst_start'),
'redirectLocToTestConfirmed');
3009 $confirm->setCancel($this->
lng->txt(
'cancel'),
'view');
3012 $this->tpl->setContent($confirm->getHTML());
3022 $crs_admin = $this->
object->getDefaultAdminRole();
3023 $crs_member = $this->
object->getDefaultMemberRole();
3024 $local_roles = $this->
object->getLocalCourseRoles(
false);
3028 if (in_array($crs_member, $local_roles)) {
3029 #$crs_roles[$crs_member] = ilObjRole::_getTranslation(array_search ($crs_member, $local_roles));
3030 #unset($local_roles[$crs_roles[$crs_member]]);
3033 foreach ($local_roles as $title => $role_id) {
3034 if ($role_id == $crs_admin && !$this->hasAdminPermission()) {
3041 if ($a_exclude !== []) {
3042 foreach ($a_exclude as $excluded_role) {
3043 if (isset($crs_roles[$excluded_role])) {
3044 unset($crs_roles[$excluded_role]);
3055 $this->checkPermissionBool(
'edit_permission');
3060 $this->
ctrl->redirectByClass(ilUsersGalleryGUI::class);
3068 $this->
ctrl->setReturn($this,
"view");
Render add new item selector.
GUI class for object translation handling.
kindlyTo()
Combined validations and transformations for primitive data types that establish a baseline for furth...
GUI class for public user profile presentation.
setInfoObject(ilInfoScreenGUI $info)
get info sections
@ilCtrl_Calls ilBadgeManagementGUI: ilPropertyFormGUI
This class is used for integration of the booking manager as a service into other repository objects,...
Validates if an active certificate is stored in the database and can be downloaded by the user.
Just a wrapper class to create Unit Test for other classes.
static _recordWriteEvent(int $obj_id, int $usr_id, string $action, ?int $parent_obj_id=null)
Records a write event.
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
class ilConditionHandlerGUI
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static isAccessible(int $ref_id)
Class ilContainerGUI This is a base GUI class for all container objects in ILIAS: root folder,...
ILIAS Container InternalGUIService $gui
afterUpdate()
Post (successful) object update hook.
isActiveAdministrationPanel()
initSortingForm(ilPropertyFormGUI $form, array $a_sorting_settings)
Append sorting settings to property form.
getDidacticTemplateIdFromQuery()
saveListPresentation(ilPropertyFormGUI $form)
initListPresentationForm(ilPropertyFormGUI $form)
Add list presentation settings to form.
saveSortingSettings(ilPropertyFormGUI $form)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Skills for container (course/group) (top gui class)
Class ilContainerStartObjectsContentGUI.
Class ilContainerStartObjectsGUI.
Container start objects page GUI class.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _writeContainerSetting(int $a_id, string $a_keyword, string $a_value)
static _lookupContainerSetting(int $a_id, string $a_keyword, ?string $a_default_value=null)
static setBlockedForLP(bool $a_status)
Toggle LP blocking property status.
const IL_CRS_VIEW_OBJECTIVE
const IL_CRS_VIEW_BY_TYPE
const IL_CRS_SUBSCRIPTION_CONFIRMATION
const IL_CRS_SUBSCRIPTION_DEACTIVATED
const IL_CRS_SUBSCRIPTION_PASSWORD
const IL_CRS_SUBSCRIPTION_LIMITED
const IL_CRS_VIEW_TIMING_ABSOLUTE
const IL_CRS_SUBSCRIPTION_UNLIMITED
const IL_CRS_VIEW_TIMING_RELATIVE
const MAIL_ALLOWED_TUTORS
const IL_CRS_SUBSCRIPTION_DIRECT
const IL_CRS_VIEW_SESSIONS
Class ilCourseContentGUI.
static _getFields(int $a_container_id, $a_sort=self::IL_CDF_SORT_NAME)
Get all fields of a container.
static _fieldsToInfoString(int $a_obj_id)
static _hasFields(int $a_container_id)
Check if there are any define fields.
static _readFilesByCourse(int $a_course_id)
const TYPE_UNSUBSCRIBE_MEMBER
class ilCourseObjectiveMaterials
static _getCountObjectives(int $a_obj_id, bool $a_activated_only=false)
static _getObjectiveIds(int $course_id, bool $a_activated_only=false)
class ilobjcourseobjectivesgui
static _getInstanceByObjId(int $a_obj_id, int $a_usr_id)
static _getInstanceByObjId(int $a_obj_id)
GUI class for course registrations.
static _checkRequired(int $a_usr_id, int $a_obj_id)
static formatDate(ilDateTime $date, bool $a_skip_day=false, bool $a_include_wd=false, bool $include_seconds=false, ?ilObjUser $user=null,)
static formatPeriod(ilDateTime $start, ilDateTime $end, bool $a_skip_starting_day=false, ?ilObjUser $user=null)
Format a period of two dates Shows: 14.
@classDescription Date and time handling
isNull()
Check if a date is null (Datetime == '0000-00-00 00:00:00', unixtime == 0,...)
GUI class for didactic template settings inside repository objects.
Class ilECSCourseSettings.
static _getInstanceByType(string $a_type)
Get Singleton Instance.
Export User Interface Class.
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 getValidFilename(string $a_filename)
static deleteRuns(int $a_container_id, int $a_user_id)
const LP_MODE_MANUAL_BY_TUTOR
static _lookupCompletedForObject(int $a_obj_id, ?array $a_user_ids=null)
static _lookupFailedForObject(int $a_obj_id, ?array $a_user_ids=null)
static _lookupInProgressForObject(int $a_obj_id, ?array $a_user_ids=null)
static _updateStatus(int $a_obj_id, int $a_usr_id, ?object $a_obj=null, bool $a_percentage=false, bool $a_force_raise=false)
const LP_STATUS_COMPLETED
const LP_STATUS_NOT_ATTEMPTED
const LP_STATUS_IN_PROGRESS
GUI class for LTI provider object settings.
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...
static checkAccess(int $a_ref_id, bool $a_allow_only_read=true)
check access to learning progress
const LP_CONTEXT_REPOSITORY
Class ilObjUserTrackingGUI.
static _lookupProgressByObjId(int $a_obj_id)
lookup progress for a specific object
static _tracProgress(int $a_user_id, int $a_obj_id, int $a_ref_id, string $a_obj_type='')
Component logger with individual log levels by component id.
static getMailObjectRefId()
Class ilMailMemberCourseRoles.
static isActivated()
Checks whether Map feature is activated.
static getDefaultSettings()
Get default longitude, latitude and zoom.
static _hasAccepted(int $a_usr_id, int $a_obj_id)
Check if user has accepted agreement.
Membership notification settings.
static isActiveForRefId(int $ref_id)
static generateCode()
Generate new registration key.
static handleCode(int $a_ref_id, string $a_type, string $a_code)
Last visited history for repository items.
static getInstance(int $a_ref_id, bool $a_include_auto_entries)
static lookupRegistrationInfo(int $a_obj_id)
readMemberData(array $ids, ?array $selected_columns=null, bool $skip_names=false)
setSubTabs(string $a_tab)
modifyItemGUI(ilObjectListGUI $a_item_list_gui, array $a_item_data)
@inheritDoc
renderAddNewItem(string ... $disabled_object_types)
deliverCertificateObject()
setContentSubTabs()
@inheritDoc
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)
const BREADCRUMB_FULL_PATH
__construct($a_data, int $a_id, bool $a_call_by_reference=true, bool $a_prepare_output=true)
ilContainerStartObjects $start_obj
ilNavigationHistory $navigation_history
afterImport(ilObject $new_object)
Post (successful) object import hook.
static _goto($a_target, string $a_add="")
createMailSignature()
Create a course mail signature.
redirectLocToTestConfirmedObject()
ilDataFactory $data_factory
setSideColumnReturn()
@inheritDoc
redirectLocToTestObject($a_force_new_run=null)
updateLPFromStatus(int $a_member_id, bool $a_has_passed)
sync course status and lp status
infoScreenObject()
this one is called from the info button in the repository not very nice to set cmdClass/Cmd manually,...
ilAdvancedMDRecordGUI $record_gui
getTabs()
@abstract overwrite in derived GUI class of your object type
const BREADCRUMB_CRS_ONLY
updateObject()
updates object entry in object_data
redirectLocToTestConfirmation(int $a_objective_id, int $a_test_id)
Show confirmation whether user wants to start a new run or resume a previous run.
afterSave(ilObject $new_object)
@inheritDoc
editObject(?ilPropertyFormGUI $form=null)
jump2UsersGalleryObject()
initHeaderAction(?string $sub_type=null, ?int $sub_id=null)
Add header action menu.
deleteObject(bool $error=false)
Display deletion confirmation screen.
getLocalRoles(array $a_exclude=array())
showPossibleSubObjects()
@inheritDoc
performUnsubscribeObject()
getEditFormValues()
values are already set in initEditForm Returning an empty array avoid overriding these values.
Class ilObjCourseGroupingGUI.
static _lookupViewMode(int $a_id)
const int STATUS_DETERMINATION_MANUAL
const int STATUS_DETERMINATION_LP
static _registrationEnabled(int $a_obj_id)
Registration enabled? Method is in Access class, since it is needed by Access/ListGUI.
static _isActivated(int $a_obj_id)
Is activated.
static getAvailablePortfolioLinksForUserIds(array $a_owner_ids)
static _getTranslation(string $a_role_title)
static _enabledLearningProgress()
static _enabledUserRelatedData()
static _lookupName(int $a_user_id)
GUI class for the workflow of copying objects.
addAdoptContentLinkToToolbar()
buildAddNewItemElements(array $subtypes, string $create_target_class=ilRepositoryGUI::class, ?int $redirect_target_ref_id=null,)
ilGlobalTemplateInterface $tpl
static _gotoRepositoryRoot(bool $raise_error=false)
Goto repository root.
checkPermission(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
viewObject()
viewObject container presentation for "administration -> repository, trash, permissions"
checkPermissionBool(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
getCreatableObjectTypes()
initDidacticTemplate(ilPropertyFormGUI $form)
addHeaderAction()
Add header action menu.
static _gotoRepositoryNode(int $ref_id, string $cmd="")
prepareOutput(bool $show_sub_objects=true)
getReturnLocation(string $cmd, string $default_location="")
Get return location for command (command is method name without "Object", e.g.
static getInstance(int $obj_id)
enableSubscribe(bool $status)
static updateServiceSettingsForm(int $obj_id, ilPropertyFormGUI $form, array $services)
const AUTO_RATING_NEW_OBJECTS
const CALENDAR_CONFIGURATION
const EXTERNAL_MAIL_PREFIX
const ORGU_POSITION_ACCESS
static initServiceSettingsForm(int $obj_id, ilPropertyFormGUI $form, array $services)
Class ilObject Basic functions for all objects.
static _lookupType(int $id, bool $reference=false)
static _lookupObjId(int $ref_id)
static _lookupTitle(int $obj_id)
static getInstanceByObjId(int $a_obj_id)
Get instance by obj type.
static _isParticipant(int $a_ref_id, int $a_usr_id)
Static function to check if a user is a participant of the container object.
This class represents an option in a radio group.
special template class to simplify handling of ITX/PEAR
This class represents a text area property in a property form.
This class represents a text property in a property form.
static makeClickable(string $a_text, bool $detectGotoLinks=false, ?string $ilias_http_path=null)
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 redirect(string $a_script)
static _isOnList(int $a_usr_id, int $a_obj_id)
Interface GlobalHttpState.
setVariable(string $variable, $value='')
Sets the given variable to the given value.
const MESSAGE_TYPE_SUCCESS
parseCurrentBlock(string $block_name=self::DEFAULT_BLOCK)
Parses the given block.
setCurrentBlock(string $part=self::DEFAULT_BLOCK)
Sets the template to the given block.
get(string $part=self::DEFAULT_BLOCK)
Renders the given block and returns the html string.
if($clientAssertionType !='urn:ietf:params:oauth:client-assertion-type:jwt-bearer'|| $grantType !='client_credentials') $parts
static http()
Fetches the global http state from ILIAS.
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc