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