19 declare(strict_types=1);
    87         $this->tpl = $DIC[
'tpl'];
    88         $this->
ctrl = $DIC[
'ilCtrl'];
    89         $this->ilLocator = $DIC[
'ilLocator'];
    90         $this->tree = $DIC[
'tree'];
    91         $this->
toolbar = $DIC[
'ilToolbar'];
    92         $this->
ilLog = $DIC[
'ilLog'];
    93         $this->
ilias = $DIC[
'ilias'];
    95         $this->
help = $DIC[
'ilHelp'];
    96         $this->
user = $DIC[
'ilUser'];
    98         $this->request_wrapper = $DIC->http()->wrapper()->query();
   100         $ref_id = $this->request_wrapper->retrieve(
"ref_id", $this->
refinery->kindlyTo()->int());
   107         $this->settings_gui = 
$dic[
'ilObjStudyProgrammeSettingsGUI'];
   108         $this->members_gui = 
$dic[
'ilObjStudyProgrammeMembersGUI'];
   109         $this->memberships_gui = 
$dic[
'ilObjStudyProgrammeAutoMembershipsGUI'];
   110         $this->type_gui = 
$dic[
'ilStudyProgrammeTypeGUI'];
   111         $this->autocategories_gui = 
$dic[
'ilObjStudyProgrammeAutoCategoriesGUI'];
   112         $this->type_repository = 
$dic[
'model.Type.ilStudyProgrammeTypeRepository'];
   113         $this->ui_factory = 
$dic[
'ui.factory'];
   115         $this->internal_domain_service = $DIC->container()->internal()->domain()->content();
   116         $this->container_view_manager = $this->internal_domain_service->view($this->
object);
   121         $cmd = $this->
ctrl->getCmd(self::SUBTAB_VIEW_MANAGE);
   122         $next_class = $this->
ctrl->getNextClass($this);
   124         if (!in_array($cmd, self::ASYNC_CALLS)) {
   126             parent::prepareOutput();
   130         switch ($next_class) {
   131             case "ilinfoscreengui":
   132                 $this->tabs_gui->activateTab(self::TAB_INFO);
   139                 $this->
ctrl->forwardCommand($info);
   157             case 'ilpermissiongui':
   158                 $this->tabs_gui->activateTab(
'perm_settings');
   160                 $this->
ctrl->forwardCommand($ilPermissionGUI);
   162             case "ilcommonactiondispatchergui":
   166             case "ilobjstudyprogrammesettingsgui":
   169                 $this->tabs_gui->activateTab(self::TAB_SETTINGS);
   170                 $this->tabs_gui->activateSubTab(
'settings');
   171                 $this->settings_gui->setRefId($this->ref_id);
   172                 $this->
ctrl->forwardCommand($this->settings_gui);
   174             case "ilobjstudyprogrammeautocategoriesgui":
   177                 $this->tabs_gui->activateTab(self::TAB_SETTINGS);
   178                 $this->tabs_gui->activateSubTab(
'auto_content');
   179                 $this->autocategories_gui->setRefId($this->ref_id);
   181                 $this->
ctrl->forwardCommand($this->autocategories_gui);
   183             case "ilobjstudyprogrammemembersgui":
   186                 $this->tabs_gui->activateTab(self::TAB_MEMBERS);
   187                 $this->tabs_gui->activateSubTab(
'edit_participants');
   188                 $this->members_gui->setParentGUI($this);
   189                 $this->members_gui->setRefId($this->ref_id);
   190                 $this->
ctrl->forwardCommand($this->members_gui);
   192             case 'ilprgmembersexportgui':
   195                 $this->tabs_gui->activateTab(self::TAB_MEMBERS);
   196                 $this->tabs_gui->activateSubTab(
'export_memberships');
   201                     $specific_dic[
'ilStudyProgrammeUserTable'],
   202                     $specific_dic[
'DataFactory']
   204                 $this->
ctrl->forwardCommand($export_gui);
   206             case "ilobjstudyprogrammeautomembershipsgui":
   209                 $this->tabs_gui->activateTab(self::TAB_MEMBERS);
   210                 $this->tabs_gui->activateSubTab(
'auto_memberships');
   211                 $this->memberships_gui->setParentGUI($this);
   212                 $this->memberships_gui->setRefId($this->ref_id);
   213                 $this->
ctrl->forwardCommand($this->memberships_gui);
   215             case 'ilstudyprogrammetypegui':
   216                 $this->tabs_gui->activateTab(
'subtypes');
   217                 $this->type_gui->setParentGUI($this);
   218                 $this->
ctrl->forwardCommand($this->type_gui);
   220             case 'ilobjectcopygui':
   221                 $gui = 
new ilobjectcopygui($this);
   224             case 'ilobjecttranslationgui':
   227                 $this->tabs_gui->activateTab(self::TAB_SETTINGS);
   228                 $this->tabs_gui->activateSubTab(
'settings_trans');
   230                 $this->
ctrl->forwardCommand($transgui);
   232             case "ilcertificategui":
   235                 $this->tabs_gui->activateTab(self::TAB_SETTINGS);
   236                 $this->tabs_gui->activateSubTab(
'certificate');
   238                 $output_gui = $guiFactory->create($this->
object);
   239                 $this->
ctrl->forwardCommand($output_gui);
   241             case "ilprgpageobjectgui":
   243                 if (!$this->
object->hasContentPage()) {
   244                     $this->
object->createContentPage();
   247                 $gui->setItemPresentationManager(
   248                     $this->internal_domain_service
   255                 $this->content_style_gui->addCss($this->tpl, $this->
object->getRefId());
   257                 if (!is_null(
$out)) {
   258                     $this->tpl->setContent(
$out);
   261             case "ilobjstylesheetgui":
   262                 $this->forwardToStyleSheet();
   264             case "ilobjectcontentstylesettingsgui":
   265                 $this->tabs_gui->activateTab(self::TAB_VIEW_CONTENT);
   266                 $settings_gui = $this->content_style_gui
   267                     ->objectSettingsGUIForRefId(null, $this->
object->getRefId());
   268                 $this->
ctrl->forwardCommand($settings_gui);
   270             case strtolower(ilPropertyFormGUI::class):
   282                     $this->
object->getSettings()->getTypeSettings()->getTypeId()
   304                     case self::SUBTAB_VIEW_MANAGE: 
   309                         parent::deleteObject();
   311                     case 'confirmedDelete':
   312                         parent::confirmedDeleteObject();
   314                     case 'editAdvancedSettings':
   315                         $this->tabs_gui->activateTab(
'edit_advanced_settings');
   318                     case 'updateAdvancedSettings':
   319                         $this->tabs_gui->activateTab(
'edit_advanced_settings');
   323                         $this->
ctrl->redirectByClass(
"ilInfoScreenGUI", 
"showSummary");
   325                     case 'editPageFrame':
   328                     case 'editStyleProperties':
   333                     case 'disableAdministrationPanel':
   334                     case 'enableAdministrationPanel':
   339                     case 'confirmRemoveFromSystem':
   340                     case 'removeFromSystem':
   341                     case 'deliverCertificate':
   343                     case 'removeFromDesk':
   346                     case 'performPasteIntoMultipleObjects':
   347                     case 'cancelMoveLink':
   348                     case 'keepObjectsInClipboard':
   356                     case 'editAvailabilityPeriod':
   357                     case 'saveAvailabilityPeriod':
   358                         $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'prg_availability_action_not_allowed'));
   362                         $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'prg_cut_action_not_allowed'));
   365                     case 'routeImportCmd':
   366                         $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'prg_import_action_not_allowed'));
   371                         throw new ilException(
"ilObjStudyProgrammeGUI: Command not supported: $cmd");
   375                 throw new ilException(
"ilObjStudyProgrammeGUI: Can't forward to next class $next_class");
   381         parent::createObject();
   384     protected function save(): void
   386         parent::saveObject();
   402         $this->tpl->setOnScreenMessage(
"success", $this->
lng->txt(
"object_added"), 
true);
   404         $this->
ctrl->setParameter($this, 
"ref_id", $new_object->
getRefId());
   407             $this->
ctrl->getLinkTarget($this, 
"edit", 
"", 
false, 
false)
   413         if (!$this->permissions) {
   414             if (!$this->
object || !$this->
object->getRefId()) {
   415                 throw new LogicException(
'Cannot ask for permission when not in tree!');
   423     protected function view(): void
   426         $this->tabs_gui->activateTab(self::TAB_VIEW_CONTENT);
   427         parent::renderObject();
   443             $this->tpl->setOnScreenMessage(
"failure", $this->
lng->txt(
"permission_denied"), 
true);
   444             $this->
ctrl->redirect($this);
   452             $this->
object->getSettings()->getTypeSettings()->getTypeId()
   462             $this->tpl->setOnScreenMessage(
"failure", $this->
lng->txt(
"permission_denied"), 
true);
   463             $this->
ctrl->redirect($this);
   471             $this->
object->getSettings()->getTypeSettings()->getTypeId()
   477         if (
$gui->importEditFormPostValues()) {
   478             $gui->writeEditForm();
   479             $this->tpl->setOnScreenMessage(
"success", $this->
lng->txt(
'settings_saved'), 
true);
   480             $this->
ctrl->redirect($this, 
'editAdvancedSettings');
   492         $asyncForm = 
new ilAsyncPropertyFormGUI($this->request_wrapper);
   494         $asyncForm->cloneForm(
   497         $asyncForm->setAsync(
true);
   520                 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"msg_no_perm_write"));
   521                 $this->
ctrl->redirectByClass(
'ilinfoscreengui', 
'');
   523                 $this->
ilias->raiseError($this->
lng->txt(
"msg_no_perm_read"), $this->
ilias->error_obj->WARNING);
   530         $this->
help->setScreenIdComponent(
"prg");
   532             $this->tabs_gui->addTab(self::TAB_VIEW_CONTENT, $this->
lng->txt(
"content"), $this->
getLinkTarget(
"view"));
   536             $this->tabs_gui->addTab(
   538                 $this->
lng->txt(
"info_short"),
   544             $this->tabs_gui->addTab(
   546                 $this->
lng->txt(
"settings"),
   552             $this->tabs_gui->addTab(
   554                 $this->
lng->txt(
"assignments"),
   559         if ($this->
object->hasAdvancedMetadata()
   562             $this->tabs_gui->addTab(
   564                 $this->
lng->txt(
'meta_data'),
   565                 $this->
ctrl->getLinkTarget($this, 
'editAdvancedSettings')
   578         switch ($parent_tab) {
   579             case self::TAB_VIEW_CONTENT:
   580             case self::SUBTAB_VIEW_MANAGE:
   587                 $this->tabs_gui->addSubTab(
   589                     $this->
lng->txt(
'general'),
   593                 if ($this->
object->isAutoContentApplicable()) {
   594                     $this->tabs_gui->addSubTab(
   596                         $this->
lng->txt(
"content_automation"),
   601                 $this->tabs_gui->addSubTab(
   603                     $this->
lng->txt(
"obj_multilinguality"),
   604                     $this->
ctrl->getLinkTargetByClass(
"ilobjecttranslationgui", 
"")
   608                 if (
true === $validator->validate()) {
   609                     $this->tabs_gui->addSubTabTarget(
   611                         $this->
ctrl->getLinkTargetByClass(
"ilcertificategui", 
"certificateeditor"),
   617                 if ($this->permissions->isOrguAccessEnabledGlobally()) {
   618                     $this->tabs_gui->addSubTab(
   620                         $this->
lng->txt(
"obj_features"),
   628                 $this->tabs_gui->addSubTab(
   630                     $this->
lng->txt(
'edit_participants'),
   635                     $this->tabs_gui->addSubTab(
   637                         $this->
lng->txt(
'auto_memberships'),
   643                     $this->tabs_gui->addSubTab(
   644                         'export_memberships',
   645                         $this->
lng->txt(
'export_memberships'),
   665         if ($cmd === 
"info_short") {
   666             return $this->
ctrl->getLinkTargetByClass(
"ilinfoscreengui", 
"showSummary");
   668         if ($cmd === 
"settings") {
   669             return $this->
ctrl->getLinkTargetByClass(
"ilobjstudyprogrammesettingsgui", 
"view");
   671         if ($cmd === 
"auto_content") {
   672             return $this->
ctrl->getLinkTargetByClass(
"ilObjStudyProgrammeAutoCategoriesGUI", 
"view");
   674         if ($cmd === self::SUBTAB_VIEW_MANAGE) {
   675             return $this->
ctrl->getLinkTarget($this, self::SUBTAB_VIEW_MANAGE);
   678         if ($cmd === 
"members") {
   679             return $this->
ctrl->getLinkTargetByClass(
"ilobjstudyprogrammemembersgui", 
"view");
   681         if ($cmd === 
"memberships") {
   682             return $this->
ctrl->getLinkTargetByClass(
"ilobjstudyprogrammeautomembershipsgui", 
"view");
   684         if ($cmd == 
"export_memberships") {
   685             return $this->
ctrl->getLinkTargetByClass(
'ilprgmembersexportgui', 
'show');
   687         if ($cmd === 
"subtypes") {
   688             return $this->
ctrl->getLinkTargetByClass(
"ilstudyprogrammetypegui", 
"listTypes");
   690         if ($cmd === 
"commonSettings") {
   691             return $this->
ctrl->getLinkTargetByClass(
   693                     "ilobjstudyprogrammesettingsgui",
   694                     "ilStudyProgrammeCommonSettingsGUI"   699         if ($cmd == 
"edit_page") {
   700             return $this->
ctrl->getLinkTargetByClass(
   701                 [
"ilObjStudyProgrammeGUI", 
"ilPRGPageObjectGUI"],
   706         return $this->
ctrl->getLinkTarget($this, $cmd);
   714         if (!$this->
object->getSettings()->getTypeSettings()->getTypeId() ||
   716                 ->getType($this->
object->getSettings()->getTypeSettings()->getTypeId())
   726             $this->
object->getSettings()->getTypeSettings()->getTypeId()
   729         $record_gui->parse();
   732     protected function edit(): void
   735         $link = $this->
ctrl->getLinkTargetByClass(ilObjStudyProgrammeSettingsGUI::class, 
'view');
   736         $this->
ctrl->redirectToURL($link);
   739     public static function _goto(
string $target): void
   742         $ilCtrl = $DIC[
'ilCtrl'];
   743         $ilCtrl->setTargetScript(
'ilias.php');
   744         $ilCtrl->setParameterByClass(
"ilobjstudyprogrammegui", 
"ref_id", $target);
   745         $ilCtrl->redirectByClass(array(
"ilRepositoryGUI", 
"ilobjstudyprogrammegui"), 
"view");
   751         $ilNavigationHistory = $DIC[
'ilNavigationHistory'];
   754             $ref_id = $this->request_wrapper->retrieve(
"ref_id", $this->
refinery->kindlyTo()->int());
   755             $link = ilLink::_getLink(
$ref_id, 
"prg");
   756             $ilNavigationHistory->addItem(
$ref_id, $link, 
'prg');
   762         $lg = parent::initHeaderAction($sub_type, $sub_id);
   764         if ($lg && 
true === $validator->isCertificateDownloadable($this->user->getId(), $this->
object->getId())) {
   765             $cert_url = $this->
ctrl->getLinkTarget($this, 
"deliverCertificate");
   766             $this->
lng->loadLanguageModule(
"certificate");
   767             $lg->addCustomCommand($cert_url, 
"download_certificate");
   771                 $this->
lng->txt(
"download_certificate"),
   782         $this->
lng->loadLanguageModule(
'cert');
   785         $obj_id = $this->
object->getId();
   788         if (
false === $validator->isCertificateDownloadable(
$user_id, 
$obj_id)) {
   789             $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
"permission_denied"), 
true);
   790             $this->
ctrl->redirect($this);
   796             $this->
lng->txt(
'error_creating_certificate_pdf')
 
ilObjStudyProgrammeMembersGUI $members_gui
 
ilStudyProgrammeTypeGUI $type_gui
 
Class ilObjStudyProgrammeGUI class  ilObjStudyProgrammeGUI: ilPermissionGUI  ilObjStudyProgrammeGUI: ...
 
PageObjectGUI for StudyProgrammes. 
 
denyAccessIfNotAnyOf(array $permissions)
 
ilObjStudyProgrammeAutoMembershipsGUI $memberships_gui
 
afterSave(ilObject $new_object)
Sets the sorting of the container correctly. 
 
ilStudyProgrammeTypeRepository $type_repository
 
Class ilObjStudyProgrammeAutoCategoriesGUI. 
 
static _goto(string $target)
 
ILIAS Container Content DomainService $internal_domain_service
 
getSubTabs(string $parent_tab)
Adds subtabs based on the parent tab. 
 
const CMD_GET_ASYNC_MODAL
 
Component logger with individual log levels by component id. 
 
fillInfoScreen($info_screen)
Adding meta-data to the info-screen. 
 
loadLanguageModule(string $a_module)
Load language module. 
 
ilObjStudyProgrammeSettingsGUI $settings_gui
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
ILIAS UI Factory $ui_factory
 
checkAccess(string $permission)
 
deliverCertificateObject()
 
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...
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
editStylePropertiesObject()
 
const SORT_NEW_ITEMS_POSITION_BOTTOM
 
denyAccessIfNot(string $permission)
 
initHeaderAction(?string $sub_type=null, ?int $sub_id=null)
 
addStandardContainerSubTabs(bool $a_include_view=true)
Add standard container subtabs for view, manage, oderdering and text/media editor link...
 
getAsyncCreationForm()
Method for implementing async windows-output Should be moved into core to enable async requests on cr...
 
const SORT_NEW_ITEMS_ORDER_CREATION
 
const CMD_GET_ASYNC_MODAL_OUTPUT
 
Validates if an active certificate is stored in the database and can be downloaded by the user...
 
static getImagePath(string $image_name, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory) 
 
Class ilObjForumAdministration. 
 
static specificDicFor(ilObjStudyProgramme $prg)
 
ilObjStudyProgrammeMembersGUI: ilStudyProgrammeRepositorySearchGUI  ilObjStudyProgrammeMembersGUI: il...
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
getLinkTarget(string $cmd)
Generates a link based on a cmd. 
 
setContentSubTabs()
Disable default content subtabs. 
 
ViewManager $container_view_manager
 
ilPRGPermissionsHelper $permissions
 
ilObjStudyProgrammeAutoCategoriesGUI $autocategories_gui
 
__construct(Container $dic, ilPlugin $plugin)
 
getReturnLocation(string $cmd, string $default_location="")
Get return location for command (command is method name without "Object", e.g. 
 
initCreateForm(string $new_type)
 
Class ilObjStudyProgrammeAutoMembershipsGUI. 
 
RequestWrapper $request_wrapper
 
setInfoObject(ilInfoScreenGUI $info)
get info sections 
 
ILIAS Container InternalGUIService $gui
 
Class ilContainerGUI This is a base GUI class for all container objects in ILIAS: root folder...
 
const ROLEPERM_MANAGE_MEMBERS
 
static init(ilGlobalTemplateInterface $a_main_tpl=null)
 
export assignments of PRG 
 
initAdvancedSettingsForm()
 
addHeaderAction()
Add header action menu. 
 
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call 
 
GUI class for object translation handling. 
 
ilObjStudyProgrammeSettingsGUI: ilStudyProgrammeCommonSettingsGUI 
 
Refinery Factory $refinery
 
downloadPdf(int $userId, int $objectId)