ILIAS  trunk Revision v12.0_alpha-377-g3641b37b9db
ilObjCourseGUI Class Reference

Class ilObjCourseGUI. More...

+ Inheritance diagram for ilObjCourseGUI:
+ Collaboration diagram for ilObjCourseGUI:

Public Member Functions

 __construct ($a_data, int $a_id, bool $a_call_by_reference=true, bool $a_prepare_output=true)
 
 gatewayObject ()
 
 renderObject ()
 
 deleteObject (bool $error=false)
 Display deletion confirmation screen. More...
 
 renderContainer ()
 
 infoScreenObject ()
 this one is called from the info button in the repository not very nice to set cmdClass/Cmd manually, if everything works through ilCtrl in the future this may be changed More...
 
 infoScreen ()
 
 saveNotificationObject ()
 
 initInfoEditor ()
 
 updateInfoObject ()
 
 updateObject ()
 updates object entry in object_data More...
 
 editObject (?ilPropertyFormGUI $form=null)
 
 sendFileObject ()
 
 setSubTabs (string $a_tab)
 
 renderAddNewItem (string ... $disabled_object_types)
 
 readMemberData (array $ids, ?array $selected_columns=null, bool $skip_names=false)
 
 updateLPFromStatus (int $a_member_id, bool $a_has_passed)
 sync course status and lp status More...
 
 autoFillObject ()
 
 leaveObject ()
 
 unsubscribeObject ()
 
 performUnsubscribeObject ()
 
 addContentTab ()
 
 executeCommand ()
 
 editMapSettingsObject ()
 
 saveMapSettingsObject ()
 
 modifyItemGUI (ilObjectListGUI $a_item_list_gui, array $a_item_data)
 @inheritDoc More...
 
 setContentSubTabs ()
 @inheritDoc More...
 
 askResetObject ()
 
 resetObject ()
 
 __checkStartObjects ()
 
 createMailSignature ()
 Create a course mail signature. More...
 
 deliverCertificateObject ()
 
 saveSortingObject ()
 
 getLocalRoles (array $a_exclude=array())
 
 setSideColumnReturn ()
 @inheritDoc More...
 
- Public Member Functions inherited from ilContainerGUI
 executeCommand ()
 
 forwardToPageObject ()
 
 addPageTabs ()
 
 getContainerPageHTML ()
 
 getContentGUI ()
 
 renderObject ()
 
 renderBlockAsynchObject ()
 render the object More...
 
 setContentSubTabs ()
 
 showAdministrationPanel ()
 
 showPermanentLink ()
 
 editPageFrameObject ()
 
 cancelPageContentObject ()
 
 showLinkListObject ()
 
 addHeaderRow (ilTemplate $a_tpl, string $a_type, bool $a_show_image=true)
 
 addMessageRow (ilTemplate $a_tpl, string $a_message, string $a_type)
 
 setPageEditorTabs ()
 
 addStandardContainerSubTabs (bool $a_include_view=true)
 Add standard container subtabs for view, manage, oderdering and text/media editor link. More...
 
 enableAdministrationPanelObject ()
 
 disableAdministrationPanelObject ()
 
 editOrderObject ()
 
 isActiveOrdering ()
 
 isActiveItemOrdering ()
 
 enableMultiDownloadObject ()
 
 isMultiDownloadEnabled ()
 
 cutObject ()
 cut object(s) out from a container and write the information to clipboard @access public More...
 
 copyObject ()
 Copy object(s) out from a container and write the information to clipboard It is not possible to copy multiple objects at once. More...
 
 downloadObject ()
 
 getBucketTitle ()
 
 linkObject ()
 create an new reference of an object in tree it's like a hard link of unix More...
 
 clearObject ()
 clear clipboard and go back to last object More...
 
 performPasteIntoMultipleObjectsObject ()
 
 initAndDisplayLinkIntoMultipleObjectsObject ()
 
 showPasteTreeObject ()
 
 cancelMoveLinkObject ()
 Cancel move|link empty clipboard and return to parent. More...
 
 keepObjectsInClipboardObject ()
 
 initAndDisplayCopyIntoMultipleObjectsObject ()
 
 initAndDisplayMoveIntoObjectObject ()
 
 pasteObject ()
 paste object from clipboard to current place Depending on the chosen command the object(s) are linked, copied or moved More...
 
 clipboardObject ()
 
 isActiveAdministrationPanel ()
 
 setColumnSettings (ilColumnGUI $column_gui)
 
 allowBlocksMoving ()
 Standard is to allow blocks moving. More...
 
 allowBlocksConfigure ()
 Standard is to allow blocks configuration. More...
 
 cloneAllObject ()
 Clone all object Overwritten method for copying container objects. More...
 
 saveSortingObject ()
 
 cloneNodes (int $srcRef, int $dstRef, array &$mapping, ?string $newName=null)
 Recursively clones all nodes of the RBAC tree. More...
 
 modifyItemGUI (ilObjectListGUI $a_item_list_gui, array $a_item_data)
 
 editStylePropertiesObject ()
 
 redrawListItemObject ()
 Redraw a list item (ajax) More...
 
 trashObject ()
 Show trash content of object. More...
 
 trashApplyFilterObject ()
 
 trashResetFilterObject ()
 
 removeFromSystemObject ()
 
 undeleteObject ()
 Get objects back from trash. More...
 
 confirmRemoveFromSystemObject ()
 
 setSideColumnReturn ()
 
 getAdminTabs ()
 administration tabs show only permissions and trash folder More...
 
 competencesObject ()
 
- Public Member Functions inherited from ilObjectGUI
 getRefId ()
 
 setAdminMode (string $mode)
 
 getAdminMode ()
 
 getObject ()
 
 executeCommand ()
 
 withReferences ()
 determines whether objects are referenced or not (got ref ids or not) More...
 
 setCreationMode (bool $mode=true)
 If true, a creation screen is displayed the current [ref_id] does belong to the parent class The mode is determined in ilRepositoryGUI. More...
 
 getCreationMode ()
 
 prepareOutput (bool $show_sub_objects=true)
 
 getAdminTabs ()
 administration tabs show only permissions and trash folder More...
 
 getHTML ()
 
 confirmedDeleteObject ()
 confirmed deletion of object -> objects are moved to trash or deleted immediately, if trash is disabled More...
 
 cancelObject ()
 cancel action and go back to previous page More...
 
 createObject ()
 create new object form More...
 
 editAvailabilityPeriodObject ()
 
 saveAvailabilityPeriodObject ()
 
 cancelCreation ()
 cancel create action and go back to repository parent More...
 
 saveObject ()
 
 getDidacticTemplateVar (string $type)
 Get didactic template setting from creation screen. More...
 
 putObjectInTree (ilObject $obj, ?int $parent_node_id=null)
 Add object to tree at given position. More...
 
 editObject ()
 
 addExternalEditFormCustom (ilPropertyFormGUI $form)
 
 updateObject ()
 updates object entry in object_data More...
 
 getFormAction (string $cmd, string $default_form_action="")
 Get form action for command (command is method name without "Object", e.g. More...
 
 isVisible (int $ref_id, string $type)
 
 viewObject ()
 viewObject container presentation for "administration -> repository, trash, permissions" More...
 
 deleteObject (bool $error=false)
 Display deletion confirmation screen. More...
 
 setColumnSettings (ilColumnGUI $column_gui)
 
 addToDeskObject ()
 
 removeFromDeskObject ()
 
- Public Member Functions inherited from ILIAS\Object\ImplementsCreationCallback
 callCreationCallback (\ilObject $object, \ilObjectDefinition $obj_definition, int $requested_crtcb)
 
- Public Member Functions inherited from ilDesktopItemHandling
 addToDeskObject ()
 
 removeFromDeskObject ()
 

Static Public Member Functions

static _forwards ()
 
static _goto ($a_target, string $a_add="")
 
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 Public Member Functions inherited from ilContainerGUI
static _buildPath (int $a_ref_id, int $a_course_ref_id)
 build path More...
 
- Static Public Member Functions inherited from ilObjectGUI
static _gotoRepositoryRoot (bool $raise_error=false)
 Goto repository root. More...
 
static _gotoRepositoryNode (int $ref_id, string $cmd="")
 
static _gotoSharedWorkspaceNode (int $wsp_id)
 

Data Fields

const BREADCRUMB_DEFAULT = 0
 
const BREADCRUMB_CRS_ONLY = 1
 
const BREADCRUMB_FULL_PATH = 2
 
- Data Fields inherited from ilContainerGUI
int $bl_cnt = 1
 
bool $multi_download_enabled = false
 
- Data Fields inherited from ilObjectGUI
const ADMIN_MODE_NONE = ""
 
const ADMIN_MODE_SETTINGS = "settings"
 
const ADMIN_MODE_REPOSITORY = "repository"
 
const UPLOAD_TYPE_LOCAL = 1
 
const UPLOAD_TYPE_UPLOAD_DIRECTORY = 2
 
const CFORM_NEW = 1
 
const CFORM_IMPORT = 2
 
const CFORM_CLONE = 3
 
const SUPPORTED_IMPORT_MIME_TYPES = [MimeType::APPLICATION__ZIP, MimeType::APPLICATION__X_ZIP_COMPRESSED]
 

Protected Member Functions

 afterImport (ilObject $new_object)
 Post (successful) object import hook. More...
 
 getSubServices ()
 
 confirmLPSync ()
 
 setLPSyncObject ()
 
 getEditFormValues ()
 values are already set in initEditForm Returning an empty array avoid overriding these values. More...
 
 initEditForm ()
 
 showPossibleSubObjects ()
 @inheritDoc More...
 
 afterSave (ilObject $new_object)
 @inheritDoc More...
 
 getAgreementTabs ()
 
 getTabs ()
 @abstract overwrite in derived GUI class of your object type More...
 
 membersObject ()
 
 initHeaderAction (?string $sub_type=null, ?int $sub_id=null)
 Add header action menu. More...
 
 afterSaveCallback ()
 
 redirectLocToTestConfirmedObject ()
 
 redirectLocToTestObject ($a_force_new_run=null)
 
 redirectLocToTestConfirmation (int $a_objective_id, int $a_test_id)
 Show confirmation whether user wants to start a new run or resume a previous run. More...
 
 hasAdminPermission ()
 
 jump2UsersGalleryObject ()
 
- Protected Member Functions inherited from ilContainerGUI
 getModeManager ()
 
 getItemPresentation ( $include_empty_blocks=true, ?string $lang=null)
 
 getEditFormValues ()
 
 afterUpdate ()
 Post (successful) object update hook. More...
 
 getDidacticTemplateIdFromQuery ()
 
 setTitleAndDescription ()
 
 showPossibleSubObjects ()
 show possible sub objects (pull down menu) More...
 
 supportsPageEditor ()
 
 gotItems ()
 
 getTabs ()
 @abstract overwrite in derived GUI class of your object type More...
 
 showContainerPageTabs ()
 
 showPasswordInstructionObject (bool $a_init=true)
 
 initFormPasswordInstruction ()
 Init password form. More...
 
 savePasswordObject ()
 
 initEditForm ()
 
 initSortingForm (ilPropertyFormGUI $form, array $a_sorting_settings)
 Append sorting settings to property form. More...
 
 initListPresentationForm (ilPropertyFormGUI $form)
 Add list presentation settings to form. More...
 
 saveListPresentation (ilPropertyFormGUI $form)
 
 initSortingDirectionForm (ilContainerSortingSettings $sorting_settings, ilRadioOption $element, string $a_prefix)
 Add sorting direction. More...
 
 initManualSortingOptionForm (ilContainerSortingSettings $settings, ilRadioOption $element, string $a_prefix, array $a_sorting_settings)
 Add manual sorting options. More...
 
 saveSortingSettings (ilPropertyFormGUI $form)
 
 trashHandleFilter (bool $action_apply, bool $action_reset)
 
 restoreToNewLocationObject (?ilPropertyFormGUI $form=null)
 
 getTreeSelectorGUI (string $cmd)
 
 initFilter ()
 
 showContainerFilter ()
 
- Protected Member Functions inherited from ilObjectGUI
 getObjectService ()
 
 assignObject ()
 
 setTitleAndDescription ()
 
 createActionDispatcherGUI ()
 
 initHeaderAction (?string $sub_type=null, ?int $sub_id=null)
 Add header action menu. More...
 
 insertHeaderAction (?ilObjectListGUI $list_gui=null)
 Insert header action into main template. More...
 
 addHeaderAction ()
 Add header action menu. More...
 
 redrawHeaderActionObject ()
 Ajax call: redraw action header only. More...
 
 setTabs ()
 set admin tabs More...
 
 setAdminTabs ()
 set admin tabs More...
 
 setLocator ()
 
 addLocatorItems ()
 should be overwritten to add object specific items (repository items are preloaded) More...
 
 omitLocator (bool $omit=true)
 
 addAdminLocatorItems (bool $do_not_add_object=false)
 should be overwritten to add object specific items (repository items are preloaded) More...
 
 getCreationFormsHTML (StandardForm|ilPropertyFormGUI|array $form)
 
 getTitleForCreationFormPage ()
 
 getCreationFormTitle ()
 
 initCreateForm (string $new_type)
 
 didacticTemplatesToForm ()
 
 initDidacticTemplate (ilPropertyFormGUI $form)
 
 retrieveAdditionalDidacticTemplateOptions ()
 
 addAdoptContentLinkToToolbar ()
 
 addImportButtonToToolbar ()
 
 addAvailabilityPeriodButtonToToolbar (ilToolbarGUI $toolbar)
 
 parseDidacticTemplateVar (string $var, string $type)
 
 afterSave (ilObject $new_object)
 Post (successful) object creation hook. More...
 
 initEditForm ()
 
 initEditCustomForm (ilPropertyFormGUI $a_form)
 Add custom fields to update form. More...
 
 getEditFormValues ()
 
 getEditFormCustomValues (array &$a_values)
 Add values to custom edit fields. More...
 
 validateCustom (ilPropertyFormGUI $form)
 Validate custom values (if not possible with checkInput()) More...
 
 updateCustom (ilPropertyFormGUI $form)
 Insert custom update form values into object. More...
 
 afterUpdate ()
 Post (successful) object update hook. More...
 
 routeImportCmdObject ()
 
 importFile (string $file_to_import, string $path_to_uploaded_file_in_temp_dir)
 
 deleteUploadedImportFile (string $path_to_uploaded_file_in_temp_dir)
 
 afterImport (ilObject $new_object)
 Post (successful) object import hook. More...
 
 setFormAction (string $cmd, string $form_action)
 
 getReturnLocation (string $cmd, string $default_location="")
 Get return location for command (command is method name without "Object", e.g. More...
 
 setReturnLocation (string $cmd, string $location)
 set specific return location for command More...
 
 getTargetFrame (string $cmd, string $default_target_frame="")
 get target frame for command (command is method name without "Object", e.g. More...
 
 setTargetFrame (string $cmd, string $target_frame)
 Set specific target frame for command. More...
 
 showPossibleSubObjects ()
 show possible sub objects (pull down menu) More...
 
 getTabs ()
 @abstract overwrite in derived GUI class of your object type More...
 
 redirectToRefId (int $ref_id, string $cmd="")
 redirects to (repository) view per ref id usually to a container and usually used at the end of a save/import method where the object gui type (of the new object) doesn't match with the type of the current ["ref_id"] value of the request More...
 
 getCenterColumnHTML ()
 Get center column. More...
 
 getRightColumnHTML ()
 Display right column. More...
 
 checkPermission (string $perm, string $cmd="", string $type="", ?int $ref_id=null)
 
 checkPermissionBool (string $perm, string $cmd="", string $type="", ?int $ref_id=null)
 
 enableDragDropFileUpload ()
 Enables the file upload into this object by dropping files. More...
 
 getCreatableObjectTypes ()
 
 buildAddNewItemElements (array $subtypes, string $create_target_class=ilRepositoryGUI::class, ?int $redirect_target_ref_id=null,)
 
 buildGroup (string $create_target_class, array $obj_types_in_group, string $title, array $subtypes)
 

Protected Attributes

News $news
 
GlobalHttpState $http
 
Factory $refinery
 
ilHelpGUI $help
 
ilNavigationHistory $navigation_history
 
ilDataFactory $data_factory
 
- Protected Attributes inherited from ilContainerGUI
ILIAS Container InternalGUIService $gui
 
ILIAS Style Content GUIService $content_style_gui
 
ilRbacSystem $rbacsystem
 
ilRbacReview $rbacreview
 
ILIAS Container Content ItemPresentationManager $item_presentation = null
 
ILIAS Container InternalDomainService $domain
 
ilTabsGUI $tabs
 
ilErrorHandling $error
 
ilObjectDefinition $obj_definition
 
ilRbacAdmin $rbacadmin
 
ilPropertyFormGUI $form
 
ilLogger $log
 
ilObjectDataCache $obj_data_cache
 
Services $global_screen
 
ilAppEventHandler $app_event_handler
 
UIServices $ui
 
ilContainerFilterService $container_filter_service
 
ilContainerUserFilter $container_user_filter = null
 
Standard $ui_filter = null
 
bool $edit_order = false
 
bool $adminCommands = false
 
string $requested_redirectSource = ""
 
int $current_position = 0
 
ClipboardManager $clipboard
 
StandardGUIRequest $std_request
 
ModeManager $mode_manager = null
 
ilComponentFactory $component_factory
 
ILIAS Style Content DomainService $content_style_domain
 
- Protected Attributes inherited from ilObjectGUI
ILIAS Notes Service $notes_service
 
GlobalHttpState $http
 
ServerRequestInterface $request
 
ilLocatorGUI $locator
 
ilObjUser $user
 
ilAccessHandler $access
 
ilSetting $settings
 
ilToolbarGUI $toolbar
 
ilRbacAdmin $rbac_admin
 
ilRbacSystem $rbac_system
 
ilRbacReview $rbac_review
 
ilObjectService $object_service
 
ilObjectDefinition $obj_definition
 
ilGlobalTemplateInterface $tpl
 
ilTree $tree
 
ilCtrl $ctrl
 
ilErrorHandling $error
 
ilLanguage $lng
 
ilTabsGUI $tabs_gui
 
ILIAS $ilias
 
ArrayBasedRequestWrapper $post_wrapper
 
RequestWrapper $request_wrapper
 
Refinery $refinery
 
ilFavouritesManager $favourites
 
CustomIconFactory $custom_icon_factory
 
UIFactory $ui_factory
 
UIRenderer $ui_renderer
 
Filesystem $temp_file_system
 
ilObject $object = null
 
bool $creation_mode = false
 
 $data
 
int $id
 
bool $call_by_reference = false
 
bool $prepare_output
 
int $ref_id
 
int $obj_id
 
int $maxcount
 
array $form_action = []
 
array $return_location = []
 
array $target_frame = []
 
string $tmp_import_dir
 
string $sub_objects = ""
 
bool $omit_locator = false
 
string $type = ""
 
string $admin_mode = self::ADMIN_MODE_NONE
 
int $requested_ref_id = 0
 
int $requested_crtptrefid = 0
 
int $requested_crtcb = 0
 
string $requested_new_type = ""
 
string $link_params
 
string $html = ""
 

Private Member Functions

 checkAgreement ()
 

Private Attributes

ilAdvancedMDRecordGUI $record_gui = null
 
ilContainerStartObjects $start_obj = null
 
ilLogger $logger
 

Detailed Description

Class ilObjCourseGUI.

Author
Stefan Meyer smeye.nosp@m.r.il.nosp@m.ias@g.nosp@m.mx.d.nosp@m.e $Id$ @ilCtrl_Calls ilObjCourseGUI: ilCourseRegistrationGUI, ilCourseObjectivesGUI @ilCtrl_Calls ilObjCourseGUI: ilObjCourseGroupingGUI, ilInfoScreenGUI, ilLearningProgressGUI, ilPermissionGUI @ilCtrl_Calls ilObjCourseGUI: ilRepositorySearchGUI, ilConditionHandlerGUI @ilCtrl_Calls ilObjCourseGUI: ilCourseContentGUI, ILIAS\User\Profile\PublicProfileGUI, ilMemberExportGUI @ilCtrl_Calls ilObjCourseGUI: ilObjectCustomUserFieldsGUI, ilMemberAgreementGUI, ilSessionOverviewGUI @ilCtrl_Calls ilObjCourseGUI: ilColumnGUI, ilContainerPageGUI @ilCtrl_Calls ilObjCourseGUI: ilObjectCopyGUI, ilObjectContentStyleSettingsGUI @ilCtrl_Calls ilObjCourseGUI: ilCourseParticipantsGroupsGUI, ilExportGUI, ilCommonActionDispatcherGUI @ilCtrl_Calls ilObjCourseGUI: ilDidacticTemplateGUI, ilCertificateGUI, ilObjectServiceSettingsGUI @ilCtrl_Calls ilObjCourseGUI: ilContainerStartObjectsGUI, ilContainerStartObjectsPageGUI @ilCtrl_Calls ilObjCourseGUI: ilMailMemberSearchGUI, ilBadgeManagementGUI @ilCtrl_Calls ilObjCourseGUI: ilLOPageGUI, ilObjectMetaDataGUI, ilNewsTimelineGUI, ilContainerNewsSettingsGUI @ilCtrl_Calls ilObjCourseGUI: ilCourseMembershipGUI, ilPropertyFormGUI, ilContainerSkillGUI, ilCalendarPresentationGUI @ilCtrl_Calls ilObjCourseGUI: ilMemberExportSettingsGUI @ilCtrl_Calls ilObjCourseGUI: ilLTIProviderObjectSettingGUI, ILIAS\ILIASObject\Properties\Translations\TranslationGUI, ilBookingGatewayGUI, ilRepositoryTrashGUI

Definition at line 49 of file class.ilObjCourseGUI.php.

Constructor & Destructor Documentation

◆ __construct()

ilObjCourseGUI::__construct (   $a_data,
int  $a_id,
bool  $a_call_by_reference = true,
bool  $a_prepare_output = true 
)

Definition at line 66 of file class.ilObjCourseGUI.php.

67 {
68 global $DIC;
69
70 $this->type = "crs";
71 parent::__construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output);
72
73 $this->help = $DIC->help();
74 $this->logger = $DIC->logger()->crs();
75 $this->navigation_history = $DIC['ilNavigationHistory'];
76 $this->ctrl->saveParameter($this, ['ref_id']);
77 $this->lng->loadLanguageModule('crs');
78 $this->lng->loadLanguageModule('cert');
79 $this->lng->loadLanguageModule('obj');
80 $this->data_factory = new ilDataFactory();
81 $this->http = $DIC->http();
82 $this->refinery = $DIC->refinery();
83 $this->news = $DIC->news();
84 }
static http()
Fetches the global http state from ILIAS.
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc
global $DIC
Definition: shib_login.php:26

References $DIC, ILIAS\GlobalScreen\Provider\__construct(), ILIAS\Repository\ctrl(), ILIAS\Repository\help(), ILIAS\FileDelivery\http(), ILIAS\Repository\lng(), ILIAS\Repository\logger(), and ILIAS\Repository\refinery().

+ Here is the call graph for this function:

Member Function Documentation

◆ __checkStartObjects()

ilObjCourseGUI::__checkStartObjects ( )

Definition at line 2759 of file class.ilObjCourseGUI.php.

2759 : bool
2760 {
2761 if ($this->access->checkAccess('write', '', $this->object->getRefId())) {
2762 return true;
2763 }
2764 $this->start_obj = new ilContainerStartObjects(
2765 $this->object->getRefId(),
2766 $this->object->getId()
2767 );
2768 if (count($this->start_obj->getStartObjects()) &&
2769 !$this->start_obj->allFullfilled($this->user->getId())) {
2770 return false;
2771 }
2772 return true;
2773 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...

References ILIAS\Repository\access(), and ILIAS\Repository\object().

Referenced by executeCommand().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _forwards()

static ilObjCourseGUI::_forwards ( )
static

Definition at line 2478 of file class.ilObjCourseGUI.php.

2478 : array
2479 {
2480 return array("ilCourseRegisterGUI", 'ilConditionHandlerGUI');
2481 }

◆ _goto()

static ilObjCourseGUI::_goto (   $a_target,
string  $a_add = "" 
)
static

Definition at line 2488 of file class.ilObjCourseGUI.php.

2488 : void
2489 {
2490 global $DIC;
2491 $main_tpl = $DIC->ui()->mainTemplate();
2492 $ilAccess = $DIC['ilAccess'];
2493 $ilErr = $DIC['ilErr'];
2494 $lng = $DIC['lng'];
2495 $ilUser = $DIC['ilUser'];
2496 $http = $DIC->http();
2497 $refinery = $DIC->refinery();
2498
2499 $a_target = (int) $a_target;
2500
2501 if (substr($a_add, 0, 5) == 'rcode') {
2502 if ($ilUser->getId() == ANONYMOUS_USER_ID) {
2503 $target = '';
2504 if ($http->wrapper()->query()->has('target')) {
2505 $target = $http->wrapper()->query()->retrieve(
2506 'target',
2507 $refinery->kindlyTo()->string()
2508 );
2509 }
2510 // Redirect to login for anonymous
2512 "login.php?target=" . $target . "&cmd=force_login&lang=" .
2513 $ilUser->getCurrentLanguage()
2514 );
2515 }
2516
2517 // Redirects to target location after assigning user to course
2519 $a_target,
2521 substr($a_add, 5)
2522 );
2523 }
2524
2525 if ($a_add == "mem" && $ilAccess->checkAccess("manage_members", "", $a_target)) {
2526 ilObjectGUI::_gotoRepositoryNode($a_target, "members");
2527 }
2528
2529 if ($a_add == "comp" && ilContSkillPresentationGUI::isAccessible($a_target)) {
2530 ilObjectGUI::_gotoRepositoryNode($a_target, "competences");
2531 }
2532
2533 if ($ilAccess->checkAccess("read", "", $a_target)) {
2535 } else {
2536 // to do: force flat view
2537 if ($ilAccess->checkAccess("visible", "", $a_target)) {
2538 ilObjectGUI::_gotoRepositoryNode($a_target, "infoScreenGoto");
2539 } else {
2540 if ($ilAccess->checkAccess("read", "", ROOT_FOLDER_ID)) {
2541 $main_tpl->setOnScreenMessage('failure', sprintf(
2542 $lng->txt("msg_no_perm_read_item"),
2544 ), true);
2546 }
2547 }
2548 }
2549 $ilErr->raiseError($lng->txt("msg_no_perm_read"), $ilErr->FATAL);
2550 }
kindlyTo()
Combined validations and transformations for primitive data types that establish a baseline for furth...
Definition: Factory.php:55
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
static handleCode(int $a_ref_id, string $a_type, string $a_code)
GlobalHttpState $http
static _gotoRepositoryRoot(bool $raise_error=false)
Goto repository root.
static _gotoRepositoryNode(int $ref_id, string $cmd="")
ilLanguage $lng
static _lookupType(int $id, bool $reference=false)
static _lookupObjId(int $ref_id)
static _lookupTitle(int $obj_id)
static redirect(string $a_script)
const ANONYMOUS_USER_ID
Definition: constants.php:27
const ROOT_FOLDER_ID
Definition: constants.php:32
$ilErr
Definition: raiseError.php:33

References $DIC, $http, $ilErr, ilObjectGUI\$lng, $refinery, ilObjectGUI\_gotoRepositoryNode(), ilObjectGUI\_gotoRepositoryRoot(), ilObject\_lookupObjId(), ilObject\_lookupTitle(), ilObject\_lookupType(), ANONYMOUS_USER_ID, ilMembershipRegistrationCodeUtils\handleCode(), ILIAS\Repository\int(), ilContSkillPresentationGUI\isAccessible(), ILIAS\Refinery\Factory\kindlyTo(), ilUtil\redirect(), ROOT_FOLDER_ID, ilLanguage\txt(), and ILIAS\HTTP\GlobalHttpState\wrapper().

Referenced by ILIAS\StaticURL\Handler\LegacyGotoHandler\handle().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ _modifyItemGUI()

static ilObjCourseGUI::_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

Definition at line 2649 of file class.ilObjCourseGUI.php.

2657 : void {
2658 global $DIC;
2659 $lng = $DIC->language();
2660 $ilAccess = $DIC->access();
2661
2662 // this is set for folders within the course
2663 if ($a_parent_ref_id == 0) {
2664 $a_parent_ref_id = $a_course_ref_id;
2665 }
2666
2667 // Special handling for tests in courses with learning objectives
2668 if ($a_item_data['type'] == 'tst' && ilObjCourse::_lookupViewMode($a_course_obj_id) == ilContainer::VIEW_OBJECTIVE) {
2669 $a_item_list_gui->addCommandLinkParameter(array('crs_show_result' => $a_course_ref_id));
2670 }
2671
2672 $a_item_list_gui->enableSubscribe($a_abo_status);
2673
2674 $is_tutor = ($ilAccess->checkAccess(
2675 'write',
2676 '',
2677 $a_course_ref_id,
2678 'crs',
2679 $a_course_obj_id
2680 ));
2681 }
static _lookupViewMode(int $a_id)
enableSubscribe(bool $status)

Referenced by modifyItemGUI(), ilObjFolderGUI\modifyItemGUI(), ilObjGroupGUI\modifyItemGUI(), and ilObjSessionGUI\modifyItemGUI().

+ Here is the caller graph for this function:

◆ addContentTab()

ilObjCourseGUI::addContentTab ( )

Definition at line 1765 of file class.ilObjCourseGUI.php.

1765 : void
1766 {
1767 $this->tabs_gui->addTab(
1768 "view_content",
1769 $this->lng->txt("content"),
1770 $this->ctrl->getLinkTarget($this, "view")
1771 );
1772 }

References ILIAS\Repository\lng().

Referenced by getTabs().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ afterImport()

ilObjCourseGUI::afterImport ( ilObject  $new_object)
protected

Post (successful) object import hook.

Reimplemented from ilObjectGUI.

Definition at line 94 of file class.ilObjCourseGUI.php.

94 : void
95 {
97 $part->add($this->user->getId(), ilCourseConstants::CRS_ADMIN);
98 $part->updateNotification(
99 $this->user->getId(),
100 (bool) $this->settings->get('mail_crs_admin_notification', '1')
101 );
102 parent::afterImport($new_object);
103 }
static _getInstanceByObjId(int $a_obj_id)

References ilCourseParticipants\_getInstanceByObjId(), ilCourseConstants\CRS_ADMIN, ilObject\getId(), and ILIAS\Repository\user().

+ Here is the call graph for this function:

◆ afterSave()

ilObjCourseGUI::afterSave ( ilObject  $new_object)
protected

@inheritDoc

Reimplemented from ilObjectGUI.

Definition at line 1542 of file class.ilObjCourseGUI.php.

1542 : void
1543 {
1544 $new_object->getMemberObject()->add($this->user->getId(), ilParticipants::IL_CRS_ADMIN);
1545 $new_object->getMemberObject()->updateNotification(
1546 $this->user->getId(),
1547 $this->settings->get('mail_crs_admin_notification', '1')
1548 );
1549 $new_object->getMemberObject()->updateContact($this->user->getId(), 1);
1550 $new_object->update();
1551
1552 ilChangeEvent::_recordWriteEvent($new_object->getId(), $this->user->getId(), 'create');
1553 // END ChangeEvent: Record write event.
1554
1555 // always send a message
1556 $this->tpl->setOnScreenMessage('success', $this->lng->txt("crs_added"), true);
1557 $this->ctrl->setParameter($this, "ref_id", $new_object->getRefId());
1559 "save",
1560 $this->ctrl->getLinkTarget($this, "edit", "")
1561 ));
1562 }
static _recordWriteEvent(int $obj_id, int $usr_id, string $action, ?int $parent_obj_id=null)
Records a write event.
getReturnLocation(string $cmd, string $default_location="")
Get return location for command (command is method name without "Object", e.g.

References ilChangeEvent\_recordWriteEvent(), ILIAS\Repository\ctrl(), ilObject\getId(), ilObject\getRefId(), ilObjectGUI\getReturnLocation(), ilParticipants\IL_CRS_ADMIN, ILIAS\Repository\lng(), ilUtil\redirect(), ilObject\update(), and ILIAS\Repository\user().

+ Here is the call graph for this function:

◆ afterSaveCallback()

ilObjCourseGUI::afterSaveCallback ( )
protected

Definition at line 2889 of file class.ilObjCourseGUI.php.

2889 : void
2890 {
2891 $this->ctrl->redirectByClass(array('ilrepositorygui', 'ilobjcoursegui', 'illoeditorgui'), 'materials');
2892 }

References ILIAS\Repository\ctrl().

+ Here is the call graph for this function:

◆ askResetObject()

ilObjCourseGUI::askResetObject ( )

Definition at line 2731 of file class.ilObjCourseGUI.php.

2731 : void
2732 {
2733 //$this->tpl->setOnScreenMessage('question', $this->lng->txt('crs_objectives_reset_sure'));
2734 $confirm = new ilConfirmationGUI();
2735 $confirm->setHeaderText($this->lng->txt('crs_objectives_reset_sure'));
2736 $confirm->setFormAction($this->ctrl->getFormAction($this));
2737 $confirm->setConfirm($this->lng->txt('reset'), 'reset');
2738 $confirm->setCancel($this->lng->txt('cancel'), 'cancel');
2739 $this->tpl->setContent($confirm->getHTML());
2740 }
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...

References ILIAS\Repository\ctrl(), and ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ autoFillObject()

ilObjCourseGUI::autoFillObject ( )

Definition at line 1679 of file class.ilObjCourseGUI.php.

1679 : bool
1680 {
1681 $this->checkPermission('write');
1682 if (
1683 $this->object->isSubscriptionMembershipLimited() &&
1684 $this->object->getSubscriptionMaxMembers() &&
1685 $this->object->getSubscriptionMaxMembers() <= $this->object->getMembersObject()->getCountMembers()
1686 ) {
1687 $this->tpl->setOnScreenMessage('failure', $this->lng->txt("crs_max_members_reached"));
1688 $this->membersObject();
1689 return false;
1690 }
1691 if ($number = $this->object->getMembersObject()->autoFillSubscribers()) {
1692 $this->tpl->setOnScreenMessage('success', $this->lng->txt("crs_number_users_added") . " " . $number);
1693 } else {
1694 $this->tpl->setOnScreenMessage('failure', $this->lng->txt("crs_no_users_added"));
1695 }
1696 $this->membersObject();
1697 return true;
1698 }
checkPermission(string $perm, string $cmd="", string $type="", ?int $ref_id=null)

References ilObjectGUI\checkPermission(), ILIAS\Repository\lng(), membersObject(), and ILIAS\Repository\object().

+ Here is the call graph for this function:

◆ checkAgreement()

ilObjCourseGUI::checkAgreement ( )
private

Definition at line 2443 of file class.ilObjCourseGUI.php.

2443 : bool
2444 {
2445 if ($this->access->checkAccess('write', '', $this->object->getRefId())) {
2446 return true;
2447 }
2448
2449 // Disable aggrement if is not member of course
2450 if (!$this->object->getMemberObject()->isAssigned()) {
2451 return true;
2452 }
2453
2454 if (ilMemberViewSettings::getInstance()->isActive()) {
2455 return true;
2456 }
2457
2458 $privacy = ilPrivacySettings::getInstance();
2459
2460 // Check agreement
2461 if (
2462 (
2463 $privacy->courseConfirmationRequired() || ilCourseDefinedFieldDefinition::_hasFields($this->object->getId())
2464 ) &&
2465 !ilMemberAgreement::_hasAccepted($this->user->getId(), $this->object->getId())
2466 ) {
2467 $this->logger->warning('Missing course confirmation.');
2468 return false;
2469 }
2470 // Check required fields
2471 if (!ilCourseUserData::_checkRequired($this->user->getId(), $this->object->getId())) {
2472 $this->logger->warning('Missing required fields');
2473 return false;
2474 }
2475 return true;
2476 }
static _hasFields(int $a_container_id)
Check if there are any define fields.
static _checkRequired(int $a_usr_id, int $a_obj_id)
static _hasAccepted(int $a_usr_id, int $a_obj_id)
Check if user has accepted agreement.

References ilCourseUserData\_checkRequired(), ilMemberAgreement\_hasAccepted(), ilCourseDefinedFieldDefinition\_hasFields(), ILIAS\Repository\access(), ilMemberViewSettings\getInstance(), ilPrivacySettings\getInstance(), ILIAS\Repository\logger(), ILIAS\Repository\object(), and ILIAS\Repository\user().

+ Here is the call graph for this function:

◆ confirmLPSync()

ilObjCourseGUI::confirmLPSync ( )
protected

Definition at line 904 of file class.ilObjCourseGUI.php.

904 : void
905 {
906 $cgui = new ilConfirmationGUI();
907 $cgui->setFormAction($this->ctrl->getFormAction($this, "setLPSync"));
908 $cgui->setHeaderText($this->lng->txt("crs_status_determination_sync"));
909 $cgui->setCancel($this->lng->txt("cancel"), "edit");
910 $cgui->setConfirm($this->lng->txt("confirm"), "setLPSync");
911 $this->tpl->setContent($cgui->getHTML());
912 }

References ILIAS\Repository\ctrl(), and ILIAS\Repository\lng().

Referenced by updateObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ createMailSignature()

ilObjCourseGUI::createMailSignature ( )

Create a course mail signature.

Returns
string

Definition at line 2779 of file class.ilObjCourseGUI.php.

2779 : string
2780 {
2781 $link = chr(13) . chr(10) . chr(13) . chr(10);
2782 $link .= $this->lng->txt('crs_mail_permanent_link');
2783 $link .= chr(13) . chr(10) . chr(13) . chr(10);
2784 $link .= ilLink::_getLink($this->object->getRefId());
2785 return rawurlencode(base64_encode($link));
2786 }

References ILIAS\Repository\lng(), and ILIAS\Repository\object().

Referenced by infoScreen().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ deleteObject()

ilObjCourseGUI::deleteObject ( bool  $error = false)

Display deletion confirmation screen.

Only for referenced objects. For user,role & rolt overwrite this function in the appropriate Object folders classes (ilObjUserFolderGUI,ilObjRoleFolderGUI)

Reimplemented from ilObjectGUI.

Definition at line 163 of file class.ilObjCourseGUI.php.

163 : void
164 {
165 $this->tabs_gui->activateTab('view_content');
166 parent::deleteObject($error);
167 }
ilErrorHandling $error

References ilContainerGUI\$error.

◆ deliverCertificateObject()

ilObjCourseGUI::deliverCertificateObject ( )
Todo:
get rid of cert logger

Definition at line 2852 of file class.ilObjCourseGUI.php.

2852 : void
2853 {
2854 $user_id = null;
2855 if ($this->access->checkAccess('manage_members', '', $this->ref_id)) {
2856 $user_id = 0;
2857 if ($this->http->wrapper()->query()->has('member_id')) {
2858 $user_id = $this->http->wrapper()->query()->retrieve(
2859 'member_id',
2860 $this->refinery->kindlyTo()->int()
2861 );
2862 }
2863 }
2864 if (!$user_id) {
2865 $user_id = $this->user->getId();
2866 }
2867
2868 $objId = $this->object->getId();
2869
2870 $validator = new ilCertificateDownloadValidator();
2871
2872 if (false === $validator->isCertificateDownloadable($user_id, $objId)) {
2873 $this->tpl->setOnScreenMessage('failure', $this->lng->txt("permission_denied"), true);
2874 $this->ctrl->redirect($this);
2875 }
2876
2877 $repository = new ilUserCertificateRepository();
2878
2879 $pdfGenerator = new ilPdfGenerator($repository);
2880
2881 $pdfAction = new ilCertificatePdfAction(
2882 $pdfGenerator,
2884 $this->lng->txt('error_creating_certificate_pdf')
2885 );
2886 $pdfAction->downloadPdf((int) $user_id, $objId);
2887 }
Validates if an active certificate is stored in the database and can be downloaded by the user.
Just a wrapper class to create Unit Test for other classes.
$objId
Definition: xapitoken.php:55

References $objId, $user_id, ILIAS\Repository\access(), ILIAS\Repository\ctrl(), ILIAS\FileDelivery\http(), ILIAS\Repository\lng(), ILIAS\Repository\refinery(), and ILIAS\Repository\user().

+ Here is the call graph for this function:

◆ editMapSettingsObject()

ilObjCourseGUI::editMapSettingsObject ( )

Definition at line 2552 of file class.ilObjCourseGUI.php.

2552 : void
2553 {
2554 $this->setSubTabs("properties");
2555 $this->tabs_gui->activateTab('settings');
2556 $this->tabs_gui->activateSubTab('crs_map_settings');
2557
2558 if (!ilMapUtil::isActivated() ||
2559 !$this->access->checkAccess("write", "", $this->object->getRefId())) {
2560 return;
2561 }
2562
2563 $latitude = $this->object->getLatitude();
2564 $longitude = $this->object->getLongitude();
2565 $zoom = $this->object->getLocationZoom();
2566
2567 // Get Default settings, when nothing is set
2568 if ($latitude == 0 && $longitude == 0 && $zoom == 0) {
2570 $latitude = $def["latitude"];
2571 $longitude = $def["longitude"];
2572 $zoom = $def["zoom"];
2573 }
2574
2575 $form = new ilPropertyFormGUI();
2576 $form->setFormAction($this->ctrl->getFormAction($this));
2577 $form->setTitle($this->lng->txt("crs_map_settings"));
2578
2579 // enable map
2580 $public = new ilCheckboxInputGUI(
2581 $this->lng->txt("crs_enable_map"),
2582 "enable_map"
2583 );
2584 $public->setValue("1");
2585 $public->setChecked($this->object->getEnableCourseMap());
2586 $form->addItem($public);
2587
2588 // map location
2589 $loc_prop = new ilLocationInputGUI(
2590 $this->lng->txt("crs_map_location"),
2591 "location"
2592 );
2593 $loc_prop->setLatitude((float) $latitude);
2594 $loc_prop->setLongitude((float) $longitude);
2595 $loc_prop->setZoom((int) $zoom);
2596 $form->addItem($loc_prop);
2597
2598 $form->addCommandButton("saveMapSettings", $this->lng->txt("save"));
2599
2600 $this->tpl->setVariable("ADM_CONTENT", $form->getHTML());
2601 //$this->tpl->show();
2602 }
This class represents a checkbox property in a property form.
ilPropertyFormGUI $form
setFormAction(string $a_formaction)
This class represents a location property in a property form.
static isActivated()
Checks whether Map feature is activated.
static getDefaultSettings()
Get default longitude, latitude and zoom.
setSubTabs(string $a_tab)
This class represents a property form user interface.
addCommandButton(string $a_cmd, string $a_text, string $a_id="")

References ilContainerGUI\$form, ILIAS\Repository\access(), ilPropertyFormGUI\addCommandButton(), ilPropertyFormGUI\addItem(), ILIAS\Repository\ctrl(), ilMapUtil\getDefaultSettings(), ilPropertyFormGUI\getHTML(), ilMapUtil\isActivated(), ILIAS\Repository\lng(), ILIAS\Repository\object(), ilFormGUI\setFormAction(), setSubTabs(), and ilPropertyFormGUI\setTitle().

+ Here is the call graph for this function:

◆ editObject()

ilObjCourseGUI::editObject ( ?ilPropertyFormGUI  $form = null)

Definition at line 923 of file class.ilObjCourseGUI.php.

923 : void
924 {
925 $this->setSubTabs('properties');
926 $this->tabs_gui->setSubTabActive('general');
927
928 if ($form instanceof ilPropertyFormGUI) {
929 $GLOBALS['DIC']['tpl']->setContent($form->getHTML());
930 } else {
931 parent::editObject();
932 }
933 }
$GLOBALS["DIC"]
Definition: wac.php:54

References ilContainerGUI\$form, $GLOBALS, ilPropertyFormGUI\getHTML(), and setSubTabs().

+ Here is the call graph for this function:

◆ executeCommand()

ilObjCourseGUI::executeCommand ( )

Reimplemented from ilContainerGUI.

Definition at line 1969 of file class.ilObjCourseGUI.php.

1969 : void
1970 {
1971 $next_class = $this->ctrl->getNextClass($this);
1972 $cmd = $this->ctrl->getCmd();
1973
1974 $this->prepareOutput();
1975
1976 // add entry to navigation history
1977 if (!$this->getCreationMode() &&
1978 $this->access->checkAccess('read', '', $this->ref_id)) {
1979 $this->navigation_history->addItem(
1980 $this->ref_id,
1981 ilLink::_getLink($this->ref_id, "crs"),
1982 "crs"
1983 );
1984 }
1985 $header_action = true;
1986 switch ($next_class) {
1987 case strtolower(ilRepositoryTrashGUI::class):
1988 $ru = new \ilRepositoryTrashGUI($this);
1989 $this->ctrl->setReturn($this, 'trash');
1990 $this->ctrl->forwardCommand($ru);
1991 break;
1992
1993 case 'illtiproviderobjectsettinggui':
1994
1995 $this->setSubTabs('properties');
1996 $this->tabs_gui->activateTab('settings');
1997 $this->tabs_gui->activateSubTab('lti_provider');
1998 $lti_gui = new ilLTIProviderObjectSettingGUI($this->object->getRefId());
1999 $lti_gui->setCustomRolesForSelection($GLOBALS['DIC']->rbac()->review()->getLocalRoles($this->object->getRefId()));
2000 $lti_gui->offerLTIRolesForSelection(false);
2001 $this->ctrl->forwardCommand($lti_gui);
2002 break;
2003
2004 case 'ilcoursemembershipgui':
2005
2006 $this->tabs_gui->activateTab('members');
2007
2008 $mem_gui = new ilCourseMembershipGUI($this, $this->object);
2009 $this->ctrl->forwardCommand($mem_gui);
2010 break;
2011
2012 case "ilinfoscreengui":
2013 $this->infoScreen(); // forwards command
2014 break;
2015
2016 case 'ilobjectmetadatagui':
2017 if (!$this->access->checkAccess('write', '', $this->object->getRefId())) {
2018 $this->error->raiseError($this->lng->txt('permission_denied'), $this->error->WARNING);
2019 }
2020 $this->tabs_gui->setTabActive('meta_data');
2021 $md_gui = new ilObjectMetaDataGUI($this->object);
2022 $this->ctrl->forwardCommand($md_gui);
2023 break;
2024
2025 case 'ilcourseregistrationgui':
2026 $this->ctrl->setReturn($this, '');
2027 $this->tabs_gui->setTabActive('join');
2028 $registration = new ilCourseRegistrationGUI($this->object, $this);
2029 $this->ctrl->forwardCommand($registration);
2030 break;
2031
2032 case 'ilobjectcustomuserfieldsgui':
2033 $cdf_gui = new ilObjectCustomUserFieldsGUI($this->object->getId());
2034 $this->setSubTabs('properties');
2035 $this->tabs_gui->activateTab('settings');
2036 $this->tabs_gui->activateSubTab('crs_custom_user_fields');
2037 $this->ctrl->forwardCommand($cdf_gui);
2038 break;
2039
2040 case "ilcourseobjectivesgui":
2041
2042 $this->ctrl->setReturn($this, "");
2043 $reg_gui = new ilCourseObjectivesGUI($this->object->getRefId());
2044 $this->ctrl->forwardCommand($reg_gui);
2045 break;
2046
2047 case 'ilobjcoursegroupinggui':
2048
2049 $this->ctrl->setReturn($this, 'edit');
2050 $this->setSubTabs('properties');
2051 $this->tabs_gui->activateTab('settings');
2052 $this->tabs_gui->activateSubTab('groupings');
2053
2054 $grouping_id = 0;
2055 if ($this->http->wrapper()->query()->has('obj_id')) {
2056 $grouping_id = $this->http->wrapper()->query()->retrieve(
2057 'obj_id',
2058 $this->refinery->kindlyTo()->int()
2059 );
2060 }
2061 $crs_grp_gui = new ilObjCourseGroupingGUI($this->object, $grouping_id);
2062 $this->ctrl->forwardCommand($crs_grp_gui);
2063 break;
2064
2065 case "ilpropertyformgui":
2066 // only case is currently adv metadata internal link in info settings, see #24497
2067 $form = $this->initInfoEditor();
2068 $this->ctrl->forwardCommand($form);
2069 break;
2070
2071 case "ilcolumngui":
2072 $this->ctrl->setReturn($this, "");
2073 $this->tabs_gui->setTabActive('none');
2074 $this->checkPermission("read");
2075 //$this->prepareOutput();
2076 //$this->tpl->setVariable("LOCATION_CONTENT_STYLESHEET",
2077 // ilObjStyleSheet::getContentStylePath(0));
2078 //$this->renderObject();
2079 $this->viewObject();
2080 break;
2081
2082 case "ilconditionhandlergui":
2083 // preconditions for whole course
2084 $this->setSubTabs("properties");
2085 $this->tabs_gui->activateTab('settings');
2086 $this->tabs_gui->activateSubTab('preconditions');
2087 $new_gui = new ilConditionHandlerGUI($this->object->getRefId());
2088 $this->ctrl->forwardCommand($new_gui);
2089 break;
2090
2091 case "illearningprogressgui":
2092
2093 $user_id = $this->user->getId();
2094 if ($this->http->wrapper()->query()->has('user_id')) {
2095 $user_id = $this->http->wrapper()->query()->retrieve(
2096 'user_id',
2097 $this->refinery->kindlyTo()->int()
2098 );
2099 }
2100 $new_gui = new ilLearningProgressGUI(
2102 $this->object->getRefId(),
2103 $user_id
2104 );
2105 $this->ctrl->forwardCommand($new_gui);
2106 $this->tabs_gui->setTabActive('learning_progress');
2107 break;
2108
2109 case 'ilpermissiongui':
2110 $this->tabs_gui->setTabActive('perm_settings');
2111 $perm_gui = new ilPermissionGUI($this);
2112 $this->ctrl->forwardCommand($perm_gui);
2113 break;
2114
2115 case 'ilcalendarpresentationgui':
2116 $cal = new ilCalendarPresentationGUI($this->object->getRefId());
2117 $ret = $this->ctrl->forwardCommand($cal);
2118 $header_action = false;
2119 break;
2120
2121 case 'ilcoursecontentgui':
2122 $this->ctrl->setReturn($this, 'members');
2123 $course_content_obj = new ilCourseContentGUI($this);
2124 $this->ctrl->forwardCommand($course_content_obj);
2125 break;
2126
2127 case strtolower(PublicProfileGUI::class):
2128 $this->setSubTabs('members');
2129 $this->tabs_gui->setTabActive('members');
2130
2131 $user_id = $this->user->getId();
2132 if ($this->http->wrapper()->query()->has('user_id')) {
2133 $user_id = $this->http->wrapper()->query()->retrieve(
2134 'user_id',
2135 $this->refinery->kindlyTo()->int()
2136 );
2137 }
2138 $profile_gui = new PublicProfileGUI($user_id);
2139 $profile_gui->setBackUrl($this->ctrl->getLinkTargetByClass(["ilCourseMembershipGUI",
2140 "ilUsersGalleryGUI"
2141 ], 'view'));
2142 $this->tabs_gui->setSubTabActive('crs_members_gallery');
2143 $html = $this->ctrl->forwardCommand($profile_gui);
2144 $this->tpl->setVariable("ADM_CONTENT", $html);
2145 break;
2146
2147 case 'ilmemberagreementgui':
2148 $this->tabs_gui->clearTargets();
2149
2150 $this->ctrl->setReturn($this, '');
2151 $agreement = new ilMemberAgreementGUI($this->object->getRefId());
2152 $this->ctrl->forwardCommand($agreement);
2153 break;
2154
2155 // container page editing
2156 case "ilcontainerpagegui":
2157 $ret = $this->forwardToPageObject();
2158 if ($ret != "") {
2159 $this->tpl->setContent($ret);
2160 }
2161 $header_action = false;
2162 break;
2163
2164 case "ilcontainerstartobjectspagegui":
2165 // file downloads, etc. (currently not active)
2166 $pgui = new ilContainerStartObjectsPageGUI($this->object->getId());
2167 $ret = $this->ctrl->forwardCommand($pgui);
2168 if ($ret) {
2169 $this->tpl->setContent($ret);
2170 }
2171 break;
2172
2173 case 'ilobjectcopygui':
2174 $cp = new ilObjectCopyGUI($this);
2175 $cp->setType('crs');
2176 $this->ctrl->forwardCommand($cp);
2177 break;
2178
2179 case "ilobjectcontentstylesettingsgui":
2180
2181 global $DIC;
2182
2183 $this->checkPermission("write");
2184 $this->setTitleAndDescription();
2185 $this->showContainerPageTabs();
2186 $settings_gui = $DIC->contentStyle()->gui()
2187 ->objectSettingsGUIForRefId(
2188 null,
2189 $this->object->getRefId()
2190 );
2191 $this->ctrl->forwardCommand($settings_gui);
2192 break;
2193
2194 case 'ilexportgui':
2195 $this->tabs_gui->setTabActive('export');
2196 $exp = new ilExportGUI($this);
2197 $exp->addFormat('xml');
2198 $this->ctrl->forwardCommand($exp);
2199 break;
2200
2201 case "ilcommonactiondispatchergui":
2203 $this->ctrl->forwardCommand($gui);
2204 break;
2205
2206 case 'ildidactictemplategui':
2207 $this->ctrl->setReturn($this, 'edit');
2208 $did = new ilDidacticTemplateGUI($this, $this->getDidacticTemplateIdFromQuery());
2209 $this->ctrl->forwardCommand($did);
2210 break;
2211
2212 case "ilcertificategui":
2213 $this->tabs_gui->activateTab("settings");
2214 $this->setSubTabs("properties");
2215 $this->tabs_gui->activateSubTab('certificate');
2216
2217 $guiFactory = new ilCertificateGUIFactory();
2218 $output_gui = $guiFactory->create($this->object);
2219 $this->ctrl->forwardCommand($output_gui);
2220 break;
2221
2222 case 'illoeditorgui':
2223 #$this->tabs_gui->clearTargets();
2224 #$this->tabs_gui->setBackTarget($this->lng->txt('back'),$this->ctrl->getLinkTarget($this,''));
2225 $this->tabs_gui->activateTab('crs_objectives');
2226
2227 $editor = new ilLOEditorGUI($this);
2228 $this->ctrl->forwardCommand($editor);
2229 if (strtolower($this->ctrl->getCmdClass()) === "illopagegui") {
2230 $header_action = false;
2231 }
2232 break;
2233
2234 case 'ilcontainerstartobjectsgui':
2235 $this->ctrl->setReturn($this, 'edit');
2236 $this->tabs_gui->clearTargets();
2237 $this->tabs_gui->setBackTarget(
2238 $this->lng->txt("back_to_crs_content"),
2239 $this->ctrl->getLinkTarget($this, "edit")
2240 );
2241 $this->tabs_gui->addTab(
2242 "start",
2243 $this->lng->txt("crs_start_objects"),
2244 $this->ctrl->getLinkTargetByClass("ilcontainerstartobjectsgui", "listStructure")
2245 );
2246 $this->tabs_gui->activateTab("start");
2247 if (strtolower($this->ctrl->getCmdClass()) ==
2248 "ilcontainerstartobjectspagegui") {
2249 $header_action = false;
2250 }
2251 global $DIC;
2252
2253 $ilHelp = $DIC['ilHelp'];
2254 $this->help->setScreenIdComponent("crs");
2255 $stgui = new ilContainerStartObjectsGUI($this->object);
2256 $this->ctrl->forwardCommand($stgui);
2257 break;
2258
2259 case 'illomembertestresultgui':
2260 $GLOBALS['DIC']['ilCtrl']->setReturn($this, 'members');
2261 $GLOBALS['DIC']['ilTabs']->clearTargets();
2262 $GLOBALS['DIC']['ilTabs']->setBackTarget(
2263 $GLOBALS['DIC']['lng']->txt('back'),
2264 $GLOBALS['DIC']['ilCtrl']->getLinkTarget($this, 'members')
2265 );
2266
2267 $uid = 0;
2268 if ($this->http->wrapper()->query()->has('uid')) {
2269 $uid = $this->http->wrapper()->query()->retrieve(
2270 'uid',
2271 $this->refinery->kindlyTo()->int()
2272 );
2273 }
2274 $result_view = new ilLOMemberTestResultGUI($this, $this->object, $uid);
2275 $this->ctrl->forwardCommand($result_view);
2276 break;
2277
2278 case 'ilmailmembersearchgui':
2279 $mail = new ilMail($this->user->getId());
2280
2281 if (
2282 !($this->object->getMailToMembersType() == ilCourseConstants::MAIL_ALLOWED_ALL ||
2283 $this->access->checkAccess('manage_members', "", $this->object->getRefId())) &&
2284 $this->rbac_system->checkAccess('internal_mail', $mail->getMailObjectReferenceId())) {
2285 $this->error->raiseError($this->lng->txt("msg_no_perm_read"), $this->error->MESSAGE);
2286 }
2287
2288 $this->tabs_gui->setTabActive('members');
2289
2290 $mail_search = new ilMailMemberSearchGUI(
2291 $this,
2292 $this->object->getRefId(),
2294 );
2295 $mail_search->setObjParticipants(
2297 );
2298 $this->ctrl->forwardCommand($mail_search);
2299 break;
2300
2301 case 'ilbadgemanagementgui':
2302 $this->tabs_gui->setTabActive('obj_tool_setting_badges');
2303 $bgui = new ilBadgeManagementGUI($this->object->getRefId(), $this->object->getId(), 'crs');
2304 $this->ctrl->forwardCommand($bgui);
2305 break;
2306
2307 case "ilcontainernewssettingsgui":
2308 $this->setSubTabs("properties");
2309 $this->tabs_gui->activateTab('settings');
2310 $this->tabs_gui->activateSubTab('obj_news_settings');
2311 $news_set_gui = new ilContainerNewsSettingsGUI($this);
2312 $news_set_gui->setTimeline(true);
2313 $news_set_gui->setCronNotifications(true);
2314 $news_set_gui->setHideByDate(true);
2315 $this->ctrl->forwardCommand($news_set_gui);
2316 break;
2317
2318 case strtolower(ilNewsTimelineGUI::class):
2319 if (!$this->__checkStartObjects()) { // see #37236
2320 $this->ctrl->redirectByClass(self::class, "view");
2321 }
2322 $this->tabs_gui->setTabActive('news_timeline');
2324 $this->object->getRefId(),
2325 $this->object->getNewsTimelineAutoEntries()
2326 );
2327 $t->setUserEditAll($this->access->checkAccess('write', '', $this->object->getRefId(), 'grp'));
2328 $this->showPermanentLink();
2329 $this->ctrl->forwardCommand($t);
2331 $this->user->getId(),
2332 $this->object->getId(),
2333 $this->object->getRefId(),
2334 'crs'
2335 );
2336 break;
2337
2338 case 'ilmemberexportsettingsgui':
2339 $this->setSubTabs('properties');
2340 $this->tabs_gui->activateTab('properties');
2341 $this->tabs_gui->activateSubTab('export_members');
2342 $settings_gui = new ilMemberExportSettingsGUI($this->object->getType(), $this->object->getId());
2343 $this->ctrl->forwardCommand($settings_gui);
2344 break;
2345
2346 case "ilcontainerskillgui":
2347 $this->tabs_gui->activateTab('obj_tool_setting_skills');
2348 $gui = new ilContainerSkillGUI($this);
2349 $this->ctrl->forwardCommand($gui);
2350 break;
2351
2352 case strtolower(TranslationGUI::class):
2353 $this->checkPermissionBool("write");
2354 $this->setSubTabs("properties");
2355 $this->tabs_gui->activateTab("settings");
2356 $this->tabs_gui->activateSubTab("obj_multilinguality");
2357 $transgui = new TranslationGUI(
2358 $this->getObject(),
2359 $this->lng,
2360 $this->access,
2361 $this->user,
2362 $this->ctrl,
2363 $this->tpl,
2364 $this->ui_factory,
2365 $this->ui_renderer,
2366 $this->http,
2367 $this->refinery,
2368 $this->toolbar
2369 );
2370 $this->ctrl->forwardCommand($transgui);
2371 break;
2372
2373 case "ilbookinggatewaygui":
2374 $this->tabs_gui->activateTab('obj_tool_setting_booking');
2375 $gui = new ilBookingGatewayGUI($this);
2376 $this->ctrl->forwardCommand($gui);
2377 break;
2378
2379 default:
2380 // #9401 - see also ilStartupGUI::_checkGoto()
2381 if ($cmd == 'infoScreenGoto') {
2382 if (ilObjCourse::_isActivated($this->object->getId()) &&
2383 ilObjCourse::_registrationEnabled($this->object->getId())) {
2384 $cmd = 'join';
2385 } else {
2386 $cmd = 'infoScreen';
2387 }
2388 }
2389
2390 if (!$this->creation_mode) {
2391 if ($cmd == "infoScreen") {
2392 $this->checkPermission("visible");
2393 } else {
2394 // $this->checkPermission("read");
2395 }
2396 }
2397
2398 if (!$this->creation_mode
2399 && $cmd != 'infoScreen'
2400 && $cmd != 'sendfile'
2401 && $cmd != 'unsubscribe'
2402 && $cmd != 'deliverCertificate'
2403 && $cmd != 'performUnsubscribe'
2404 && $cmd != 'removeFromDesk'
2405 && $cmd !== 'leave'
2406 && !$this->access->checkAccess("read", '', $this->object->getRefId())
2407 || $cmd == 'join'
2408 || $cmd == 'subscribe'
2409 || $cmd === 'leaveWaitList') {
2410 if ($this->rbac_system->checkAccess('join', $this->object->getRefId()) &&
2411 !ilCourseParticipants::_isParticipant($this->object->getRefId(), $this->user->getId())) {
2412 $this->ctrl->redirectByClass("ilCourseRegistrationGUI");
2413 } else {
2414 $this->infoScreenObject();
2415 break;
2416 }
2417 }
2418
2419 if ($cmd == 'listObjectives') {
2420 $this->ctrl->setReturn($this, "");
2421 $obj_gui = new ilCourseObjectivesGUI($this->object->getRefId());
2422 $this->ctrl->forwardCommand($obj_gui);
2423 break;
2424 }
2425 // if news timeline is landing page, redirect if necessary
2426 if ($cmd == "" && $this->object->isNewsTimelineLandingPageEffective()) {
2427 $this->ctrl->redirectByClass(ilNewsTimelineGUI::class);
2428 }
2429
2430 if (!$cmd) {
2431 $cmd = 'view';
2432 }
2433 $cmd .= 'Object';
2434 $this->$cmd();
2435 break;
2436 }
2437
2438 if ($header_action) {
2439 $this->addHeaderAction();
2440 }
2441 }
GUI class for public user profile presentation.
error(string $a_errmsg)
@ilCtrl_Calls ilBadgeManagementGUI: ilPropertyFormGUI
This class is used for integration of the booking manager as a service into other repository objects,...
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
class ilConditionHandlerGUI
ILIAS Container InternalGUIService $gui
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Skills for container (course/group) (top gui class)
Class ilContainerStartObjectsGUI.
Container start objects page GUI class.
Class ilCourseContentGUI.
class ilobjcourseobjectivesgui
GUI class for course registrations.
GUI class for didactic template settings inside repository objects.
Export User Interface Class.
Class ilLOEditorGUI.
GUI class for LTI provider object settings.
Class ilObjUserTrackingGUI.
static _tracProgress(int $a_user_id, int $a_obj_id, int $a_ref_id, string $a_obj_type='')
Class ilMailMemberCourseRoles.
static getInstance(int $a_ref_id, bool $a_include_auto_entries)
infoScreenObject()
this one is called from the info button in the repository not very nice to set cmdClass/Cmd manually,...
getLocalRoles(array $a_exclude=array())
Class ilObjCourseGroupingGUI.
static _registrationEnabled(int $a_obj_id)
Registration enabled? Method is in Access class, since it is needed by Access/ListGUI.
static _isActivated(int $a_obj_id)
Is activated.
GUI class for the workflow of copying objects.
viewObject()
viewObject container presentation for "administration -> repository, trash, permissions"
checkPermissionBool(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
addHeaderAction()
Add header action menu.
prepareOutput(bool $show_sub_objects=true)
Class ilObjectMetaDataGUI.
static _isParticipant(int $a_ref_id, int $a_usr_id)
Static function to check if a user is a participant of the container object.
Repository GUI Utilities.
if(!file_exists('../ilias.ini.php'))

References $DIC, ilContainerGUI\$form, $GLOBALS, ilContainerGUI\$gui, ilObjectGUI\$html, $user_id, __checkStartObjects(), ilCourseParticipants\_getInstanceByObjId(), ilObjCourse\_isActivated(), ilParticipants\_isParticipant(), ilObjCourse\_registrationEnabled(), ilLearningProgress\_tracProgress(), ILIAS\Repository\access(), ilObjectGUI\addHeaderAction(), ilObjectGUI\checkPermission(), ilObjectGUI\checkPermissionBool(), ILIAS\Repository\ctrl(), error(), ilContainerGUI\forwardToPageObject(), ilObjectGUI\getCreationMode(), ilContainerGUI\getDidacticTemplateIdFromQuery(), ilNewsTimelineGUI\getInstance(), ilCommonActionDispatcherGUI\getInstanceFromAjaxCall(), getLocalRoles(), ilObjectGUI\getObject(), ILIAS\Repository\help(), ILIAS\FileDelivery\http(), infoScreen(), infoScreenObject(), initInfoEditor(), ILIAS\Repository\lng(), ilLearningProgressBaseGUI\LP_CONTEXT_REPOSITORY, ilCourseConstants\MAIL_ALLOWED_ALL, ILIAS\Repository\object(), ilObjectGUI\prepareOutput(), ILIAS\Repository\rbac(), ILIAS\Repository\refinery(), setSubTabs(), ilContainerGUI\setTitleAndDescription(), ilContainerGUI\showContainerPageTabs(), ilContainerGUI\showPermanentLink(), ILIAS\Repository\toolbar(), ILIAS\Repository\user(), and ilObjectGUI\viewObject().

+ Here is the call graph for this function:

◆ gatewayObject()

ilObjCourseGUI::gatewayObject ( )
Todo:
check deletable

Definition at line 89 of file class.ilObjCourseGUI.php.

89 : void
90 {
91 $this->viewObject();
92 }

References ilObjectGUI\viewObject().

+ Here is the call graph for this function:

◆ getAgreementTabs()

ilObjCourseGUI::getAgreementTabs ( )
protected

Definition at line 1740 of file class.ilObjCourseGUI.php.

1740 : void
1741 {
1742 if ($this->access->checkAccess('visible', '', $this->ref_id)) {
1743 $this->tabs->addTarget(
1744 "info_short",
1745 $this->ctrl->getLinkTargetByClass(
1746 array("ilobjcoursegui", "ilinfoscreengui"),
1747 "showSummary"
1748 ),
1749 "infoScreen"
1750 );
1751 }
1752 if (
1753 $this->access->checkAccess('leave', '', $this->object->getRefId()) &&
1754 $this->object->getMemberObject()->isMember()
1755 ) {
1756 $this->tabs->addTarget(
1757 "crs_unsubscribe",
1758 $this->ctrl->getLinkTarget($this, "unsubscribe"),
1759 'leave',
1760 ""
1761 );
1762 }
1763 }

References ILIAS\Repository\access(), ILIAS\Repository\ctrl(), and ILIAS\Repository\tabs().

+ Here is the call graph for this function:

◆ getEditFormValues()

ilObjCourseGUI::getEditFormValues ( )
protected

values are already set in initEditForm Returning an empty array avoid overriding these values.

Reimplemented from ilContainerGUI.

Definition at line 939 of file class.ilObjCourseGUI.php.

939 : array
940 {
941 return [];
942 }

◆ getLocalRoles()

ilObjCourseGUI::getLocalRoles ( array  $a_exclude = array())
Returns
array localroles
Parameters
int[]$a_excludea list of role ids which will not added to the results (optional) returns all local roles [role_id] => title

Definition at line 3020 of file class.ilObjCourseGUI.php.

3020 : array
3021 {
3022 $crs_admin = $this->object->getDefaultAdminRole();
3023 $crs_member = $this->object->getDefaultMemberRole();
3024 $local_roles = $this->object->getLocalCourseRoles(false);
3025 $crs_roles = [];
3026
3027 //put the course member role to the top of the crs_roles array
3028 if (in_array($crs_member, $local_roles)) {
3029 #$crs_roles[$crs_member] = ilObjRole::_getTranslation(array_search ($crs_member, $local_roles));
3030 #unset($local_roles[$crs_roles[$crs_member]]);
3031 }
3032
3033 foreach ($local_roles as $title => $role_id) {
3034 if ($role_id == $crs_admin && !$this->hasAdminPermission()) {
3035 continue;
3036 }
3037
3038 $crs_roles[$role_id] = ilObjRole::_getTranslation($title);
3039 }
3040
3041 if ($a_exclude !== []) {
3042 foreach ($a_exclude as $excluded_role) {
3043 if (isset($crs_roles[$excluded_role])) {
3044 unset($crs_roles[$excluded_role]);
3045 }
3046 }
3047 }
3048 return $crs_roles;
3049 }
static _getTranslation(string $a_role_title)

References ilObjRole\_getTranslation().

Referenced by executeCommand().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getSubServices()

ilObjCourseGUI::getSubServices ( )
protected

Definition at line 884 of file class.ilObjCourseGUI.php.

884 : array
885 {
886 $subs = array(
896 );
897 if ($this->news->isGloballyActivated()) {
899 }
900
901 return $subs;
902 }

References ilObjectServiceSettingsGUI\AUTO_RATING_NEW_OBJECTS, ilObjectServiceSettingsGUI\BADGES, ilObjectServiceSettingsGUI\BOOKING, ilObjectServiceSettingsGUI\CALENDAR_CONFIGURATION, ilObjectServiceSettingsGUI\CUSTOM_METADATA, ilObjectServiceSettingsGUI\EXTERNAL_MAIL_PREFIX, ilObjectServiceSettingsGUI\ORGU_POSITION_ACCESS, ilObjectServiceSettingsGUI\SKILLS, ilObjectServiceSettingsGUI\TAG_CLOUD, and ilObjectServiceSettingsGUI\USE_NEWS.

◆ getTabs()

ilObjCourseGUI::getTabs ( )
protected

@abstract overwrite in derived GUI class of your object type

Reimplemented from ilContainerGUI.

Definition at line 1774 of file class.ilObjCourseGUI.php.

1774 : void
1775 {
1776 $this->help->setScreenIdComponent("crs");
1777 $this->ctrl->setParameter($this, "ref_id", $this->ref_id);
1778
1779 if ($this->access->checkAccess('read', '', $this->ref_id)) {
1780 // default activation
1781 $this->tabs_gui->activateTab('view_content');
1782 if ($this->object->isNewsTimelineEffective()) {
1783 if (!$this->object->isNewsTimelineLandingPageEffective()) {
1784 $this->addContentTab();
1785 }
1786 $this->tabs_gui->addTab(
1787 "news_timeline",
1788 $this->lng->txt("cont_news_timeline_tab"),
1789 $this->ctrl->getLinkTargetByClass(ilNewsTimelineGUI::class, "show")
1790 );
1791 if ($this->object->isNewsTimelineLandingPageEffective()) {
1792 $this->addContentTab();
1793 }
1794 } else {
1795 $this->addContentTab();
1796 }
1797 }
1798
1799 if ($this->object->getViewMode() == ilCourseConstants::IL_CRS_VIEW_TIMING && $this->access->checkAccess('write', '', $this->ref_id)
1800 ) {
1801 $this->tabs->addTab(
1802 'timings_timings',
1803 $this->lng->txt('timings_timings'),
1804 $this->ctrl->getLinkTargetByClass('ilcoursecontentgui', 'manageTimings')
1805 );
1806 } elseif (
1807 $this->object->getViewMode() == ilCourseConstants::IL_CRS_VIEW_TIMING && $this->object->getMemberObject()->isParticipant() && $this->access->checkAccess('read', '', $this->ref_id)) {
1808 $this->tabs->addTab(
1809 'timings_timings',
1810 $this->lng->txt('timings_timings'),
1811 $this->ctrl->getLinkTargetByClass('ilcoursecontentgui', 'managePersonalTimings')
1812 );
1813 }
1814
1815 // learning objectives
1816 if ($this->access->checkAccess('write', '', $this->ref_id)) {
1817 if ($this->object->getViewMode() == ilCourseConstants::IL_CRS_VIEW_OBJECTIVE or ilCourseObjective::_getCountObjectives($this->object->getId())) {
1818 $this->tabs_gui->addTarget(
1819 'crs_objectives',
1820 $this->ctrl->getLinkTargetByClass('illoeditorgui', ''),
1821 'illoeditorgui'
1822 );
1823 }
1824 }
1825
1826 if (
1827 $this->access->checkAccess('visible', '', $this->ref_id) ||
1828 $this->access->checkAccess('join', '', $this->ref_id) ||
1829 $this->access->checkAccess('read', '', $this->ref_id)
1830 ) {
1831 $force_active =
1832 strcasecmp($this->ctrl->getCmdClass(), ilInfoScreenGUI::class) === 0 ||
1833 strcasecmp($this->ctrl->getCmdClass(), ilNoteGUI::class) === 0;
1834 $this->tabs_gui->addTarget(
1835 "info_short",
1836 $this->ctrl->getLinkTargetByClass(
1837 array("ilobjcoursegui", "ilinfoscreengui"),
1838 "showSummary"
1839 ),
1840 "infoScreen",
1841 "",
1842 "",
1843 $force_active
1844 );
1845 }
1846 if ($this->access->checkAccess('write', '', $this->ref_id)) {
1847 $force_active =
1848 strcasecmp($this->ctrl->getCmdClass(), ilConditionHandlerGUI::class) &&
1849 !$this->http->wrapper()->query()->has('item_id');
1850 $this->tabs_gui->addTarget(
1851 "settings",
1852 $this->ctrl->getLinkTarget($this, "edit"),
1853 array("edit", "editMapSettings", "editCourseIcons", "listStructure"),
1854 "",
1855 "",
1856 $force_active
1857 );
1858 }
1859
1860 $is_participant = ilCourseParticipants::_isParticipant($this->ref_id, $this->user->getId());
1861 $mail = new ilMail($this->user->getId());
1862
1863 $membership_gui = new ilCourseMembershipGUI($this, $this->object);
1864 $membership_gui->addMemberTab($this->tabs_gui, $is_participant);
1865
1866 // badges
1867 if ($this->access->checkAccess('write', '', $this->ref_id)) {
1868 if (ilBadgeHandler::getInstance()->isObjectActive($this->object->getId())) {
1869 $this->tabs_gui->addTarget(
1870 "obj_tool_setting_badges",
1871 $this->ctrl->getLinkTargetByClass("ilbadgemanagementgui", ""),
1872 "",
1873 "ilbadgemanagementgui"
1874 );
1875 }
1876 }
1877
1878 // skills
1879 if (ilContSkillPresentationGUI::isAccessible($this->ref_id)) {
1880 $this->tabs_gui->addTarget(
1881 "obj_tool_setting_skills",
1882 $this->ctrl->getLinkTargetByClass(array("ilcontainerskillgui", "ilcontskillpresentationgui"), ""),
1883 "",
1884 array("ilcontainerskillgui", "ilcontskillpresentationgui", "ilcontskilladmingui")
1885 );
1886 }
1887
1888 // booking
1889 if ($this->access->checkAccess('write', '', $this->ref_id) && ilContainer::_lookupContainerSetting(
1890 $this->object->getId(),
1892 '0'
1893 )) {
1894 $this->tabs_gui->addTarget(
1895 "obj_tool_setting_booking",
1896 $this->ctrl->getLinkTargetByClass(array("ilbookinggatewaygui"), "")
1897 );
1898 }
1899
1900 // learning progress
1901 if (ilLearningProgressAccess::checkAccess($this->object->getRefId(), $is_participant)) {
1902 $this->tabs_gui->addTarget(
1903 'learning_progress',
1904 $this->ctrl->getLinkTargetByClass(array('ilobjcoursegui', 'illearningprogressgui'), ''),
1905 '',
1906 array('illplistofobjectsgui', 'illplistofsettingsgui', 'illearningprogressgui', 'illplistofprogressgui')
1907 );
1908 }
1909
1910 // meta data
1911 if ($this->access->checkAccess('write', '', $this->ref_id)) {
1912 $mdgui = new ilObjectMetaDataGUI($this->object);
1913 $mdtab = $mdgui->getTab();
1914 if ($mdtab) {
1915 $this->tabs_gui->addTarget(
1916 "meta_data",
1917 $mdtab,
1918 "",
1919 "ilobjectmetadatagui"
1920 );
1921 }
1922 }
1923
1924 if ($this->access->checkAccess('write', '', $this->object->getRefId())) {
1925 $this->tabs_gui->addTarget(
1926 'export',
1927 $this->ctrl->getLinkTargetByClass('ilexportgui', ''),
1928 'export',
1929 'ilexportgui'
1930 );
1931 }
1932
1933 if ($this->access->checkAccess('edit_permission', '', $this->ref_id)) {
1934 $this->tabs_gui->addTarget(
1935 "perm_settings",
1936 $this->ctrl->getLinkTargetByClass(array(get_class($this), 'ilpermissiongui'), "perm"),
1937 array("perm", "info", "owner"),
1938 'ilpermissiongui'
1939 );
1940 }
1941
1942 // Join/Leave
1943 if ($this->access->checkAccess('join', '', $this->ref_id) && !$this->object->getMemberObject()->isAssigned()) {
1944 if (ilCourseWaitingList::_isOnList($this->user->getId(), $this->object->getId())) {
1945 $this->tabs_gui->addTab(
1946 'leave',
1947 $this->lng->txt('membership_leave'),
1948 $this->ctrl->getLinkTargetByClass('ilcourseregistrationgui', 'show', '')
1949 );
1950 } else {
1951 $this->tabs_gui->addTarget(
1952 "join",
1953 $this->ctrl->getLinkTargetByClass('ilcourseregistrationgui', "show"),
1954 'show',
1955 ""
1956 );
1957 }
1958 }
1959 if ($this->access->checkAccess('leave', '', $this->object->getRefId()) && $this->object->getMemberObject()->isMember()) {
1960 $this->tabs_gui->addTarget(
1961 "crs_unsubscribe",
1962 $this->ctrl->getLinkTarget($this, "unsubscribe"),
1963 'leave',
1964 ""
1965 );
1966 }
1967 }
static _lookupContainerSetting(int $a_id, string $a_keyword, ?string $a_default_value=null)
static _getCountObjectives(int $a_obj_id, bool $a_activated_only=false)
static checkAccess(int $a_ref_id, bool $a_allow_only_read=true)
check access to learning progress
static _isOnList(int $a_usr_id, int $a_obj_id)

References ilCourseObjective\_getCountObjectives(), ilWaitingList\_isOnList(), ilParticipants\_isParticipant(), ilContainer\_lookupContainerSetting(), ILIAS\Repository\access(), addContentTab(), ilObjectServiceSettingsGUI\BOOKING, ilLearningProgressAccess\checkAccess(), ILIAS\Repository\ctrl(), ilBadgeHandler\getInstance(), ILIAS\Repository\help(), ILIAS\FileDelivery\http(), ilCourseConstants\IL_CRS_VIEW_OBJECTIVE, ilCourseConstants\IL_CRS_VIEW_TIMING, ilContSkillPresentationGUI\isAccessible(), ILIAS\Repository\lng(), ILIAS\Repository\object(), ILIAS\Repository\tabs(), and ILIAS\Repository\user().

+ Here is the call graph for this function:

◆ hasAdminPermission()

ilObjCourseGUI::hasAdminPermission ( )
protected

Definition at line 3051 of file class.ilObjCourseGUI.php.

3051 : bool
3052 {
3053 return
3054 ilCourseParticipant::_getInstanceByObjId($this->object->getId(), $this->user->getId())->isAdmin() ||
3055 $this->checkPermissionBool('edit_permission');
3056 }
static _getInstanceByObjId(int $a_obj_id, int $a_usr_id)

References ilCourseParticipant\_getInstanceByObjId(), and ILIAS\Repository\object().

+ Here is the call graph for this function:

◆ infoScreen()

ilObjCourseGUI::infoScreen ( )

Definition at line 188 of file class.ilObjCourseGUI.php.

188 : void
189 {
190 if (!$this->checkPermissionBool('read')) {
191 $this->checkPermission('visible');
192 }
193
194 $this->tabs_gui->setTabActive('info_short');
195 $files = ilCourseFile::_readFilesByCourse($this->object->getId());
196
197 $info = new ilInfoScreenGUI($this);
198 $info->enablePrivateNotes();
199 $info->enableFeedback();
200 $info->enableNews();
201 $info->enableBookingInfo(true);
202 if ($this->access->checkAccess("write", "", $this->ref_id)) {
203 $info->enableNewsEditing();
204 }
205
206 if (
207 strlen($this->object->getImportantInformation()) ||
208 strlen($this->object->getSyllabus()) ||
209 strlen((string) $this->object->getTargetGroup()) ||
210 count($files)) {
211 $info->addSection($this->lng->txt('crs_general_informations'));
212 }
213
214 if (strlen($this->object->getImportantInformation())) {
215 $info->addProperty(
216 $this->lng->txt('crs_important_info'),
217 "<strong>" . nl2br(
218 ilUtil::makeClickable($this->object->getImportantInformation(), true) . "</strong>"
219 )
220 );
221 }
222 if (strlen($this->object->getSyllabus())) {
223 $info->addProperty($this->lng->txt('crs_syllabus'), nl2br(
224 ilUtil::makeClickable($this->object->getSyllabus(), true)
225 ));
226 }
227 if (strlen((string) $this->object->getTargetGroup())) {
228 $info->addProperty(
229 $this->lng->txt('crs_target_group'),
230 nl2br(
231 \ilUtil::makeClickable($this->object->getTargetGroup(), true)
232 )
233 );
234 }
235 // files
236 if ($files !== []) {
237 $tpl = new ilTemplate('tpl.event_info_file.html', true, true, 'components/ILIAS/Course');
238
239 foreach ($files as $file) {
240 $tpl->setCurrentBlock("files");
241 $this->ctrl->setParameter($this, 'file_id', $file->getFileId());
242 $tpl->setVariable("DOWN_LINK", $this->ctrl->getLinkTarget($this, 'sendfile'));
243 $tpl->setVariable("DOWN_NAME", $file->getFileName());
244 $tpl->setVariable("DOWN_INFO_TXT", $this->lng->txt('crs_file_size_info'));
245 $tpl->setVariable("DOWN_SIZE", $file->getFileSize());
246 $tpl->setVariable("TXT_BYTES", $this->lng->txt('bytes'));
248 }
249 $info->addProperty(
250 $this->lng->txt('crs_file_download'),
251 $tpl->get()
252 );
253 }
254
258
259 // meta data
260 $info->addMetaDataSections($this->object->getId(), 0, $this->object->getType());
261
262 // contact
263 if ($this->object->hasContactData()) {
264 $info->addSection($this->lng->txt("crs_contact"));
265 }
266 if (strlen($this->object->getContactName())) {
267 $info->addProperty(
268 $this->lng->txt("crs_contact_name"),
269 $this->object->getContactName()
270 );
271 }
272 if (strlen($this->object->getContactResponsibility())) {
273 $info->addProperty(
274 $this->lng->txt("crs_contact_responsibility"),
275 $this->object->getContactResponsibility()
276 );
277 }
278 if (strlen($this->object->getContactPhone())) {
279 $info->addProperty(
280 $this->lng->txt("crs_contact_phone"),
281 $this->object->getContactPhone()
282 );
283 }
284 if ($this->object->getContactEmail()) {
285 /* needs to be rbacsystem, does not work with ilAccess */
286 $has_mail_access = $this->rbacsystem->checkAccessOfUser(
287 $this->user->getId(),
288 'internal_mail',
290 );
291 $emails = explode(",", $this->object->getContactEmail());
292 $mailString = '';
293 foreach ($emails as $email) {
294 $email = trim($email);
295 if (!$has_mail_access) {
296 $mailString .= $email . "<br />";
297 continue;
298 }
299 $etpl = new ilTemplate("tpl.crs_contact_email.html", true, true, 'components/ILIAS/Course');
300 $etpl->setVariable(
301 "EMAIL_LINK",
303 $info,
304 'showSummary',
305 array(),
306 array(
307 'type' => 'new',
308 'rcp_to' => $email,
309 'sig' => $this->createMailSignature()
310 ),
311 array(
313 'ref_id' => $this->object->getRefId(),
314 'ts' => time()
315 )
316 )
317 );
318 $etpl->setVariable("CONTACT_EMAIL", $email);
319 $mailString .= $etpl->get() . "<br />";
320 }
321 $info->addProperty($this->lng->txt("crs_contact_email"), $mailString);
322 }
323 if (strlen($this->object->getContactConsultation())) {
324 $info->addProperty(
325 $this->lng->txt("crs_contact_consultation"),
326 nl2br($this->object->getContactConsultation())
327 );
328 }
329 // support contacts
331 $conts = $parts->getContacts();
332 if ($conts !== []) {
333 $info->addSection($this->lng->txt("crs_mem_contacts"));
334 foreach ($conts as $c) {
335 $pgui = new PublicProfileGUI($c);
336 $pgui->setBackUrl($this->ctrl->getLinkTargetByClass("ilinfoscreengui"));
337 $pgui->setEmbedded(true);
338 $info->addProperty("", $pgui->getHTML());
339 }
340 }
341
342 // #10360
343 $info->enableAvailability(false);
344 $this->lng->loadLanguageModule("rep");
345 $info->addSection($this->lng->txt("rep_activation_availability"));
346 $info->showLDAPRoleGroupMappingInfo();
347
348 // activation
349 $info->addAccessPeriodProperty();
350
351 $txt = '';
352 switch ($this->object->getSubscriptionLimitationType()) {
354 $txt = $this->lng->txt("crs_info_reg_deactivated");
355 break;
356
357 default:
358 switch ($this->object->getSubscriptionType()) {
360 $txt = $this->lng->txt("crs_info_reg_confirmation");
361 break;
363 $txt = $this->lng->txt("crs_info_reg_direct");
364 break;
366 $txt = $this->lng->txt("crs_info_reg_password");
367 break;
368 }
369 }
370
371 // subscription
372 $info->addProperty($this->lng->txt("crs_info_reg"), $txt);
373 if ($this->object->getSubscriptionLimitationType() != ilCourseConstants::IL_CRS_SUBSCRIPTION_DEACTIVATED) {
374 if ($this->object->getSubscriptionUnlimitedStatus()) {
375 $info->addProperty(
376 $this->lng->txt("crs_reg_until"),
377 $this->lng->txt('crs_unlimited')
378 );
379 } elseif ($this->object->getSubscriptionStart() < time()) {
380 $info->addProperty(
381 $this->lng->txt("crs_reg_until"),
382 $this->lng->txt('crs_to') . ' ' .
383 ilDatePresentation::formatDate(new ilDateTime($this->object->getSubscriptionEnd(), IL_CAL_UNIX))
384 );
385 } elseif ($this->object->getSubscriptionStart() > time()) {
386 $info->addProperty(
387 $this->lng->txt("crs_reg_until"),
388 $this->lng->txt('crs_from') . ' ' .
389 ilDatePresentation::formatDate(new ilDateTime($this->object->getSubscriptionStart(), IL_CAL_UNIX))
390 );
391 }
392 if ($this->object->isSubscriptionMembershipLimited()) {
393 if ($this->object->getSubscriptionMinMembers()) {
394 $info->addProperty(
395 $this->lng->txt("mem_min_users"),
396 $this->object->getSubscriptionMinMembers()
397 );
398 }
399 if ($this->object->getSubscriptionMaxMembers()) {
400 $reg_info = ilObjCourseAccess::lookupRegistrationInfo($this->object->getId());
401 $info->addProperty(
402 $this->lng->txt('mem_free_places'),
403 (string) ($reg_info['reg_info_free_places'] ?? '0')
404 );
405 }
406 }
407 }
408
409 if ($this->object->getCancellationEnd()) {
410 $info->addProperty(
411 $this->lng->txt('crs_cancellation_end'),
412 ilDatePresentation::formatDate($this->object->getCancellationEnd())
413 );
414 }
415
416 if (
417 $this->object->getCourseStart() instanceof ilDateTime &&
418 !$this->object->getCourseStart()->isNull()
419 ) {
420 $info->addProperty(
421 $this->lng->txt('crs_period'),
423 $this->object->getCourseStart(),
424 $this->object->getCourseEnd()
425 )
426 );
427 }
428
429 // Confirmation
431
432 if ($privacy->courseConfirmationRequired() || ilCourseDefinedFieldDefinition::_getFields($this->object->getId()) || $privacy->enabledCourseExport()) {
433 $field_info = ilExportFieldsInfo::_getInstanceByType($this->object->getType());
434
435 $this->lng->loadLanguageModule('ps');
436 $info->addSection($this->lng->txt('crs_user_agreement_info'));
437 $info->addProperty($this->lng->txt('ps_export_data'), $field_info->exportableFieldsToInfoString());
438
439 if ($fields = ilCourseDefinedFieldDefinition::_fieldsToInfoString($this->object->getId())) {
440 $info->addProperty($this->lng->txt('ps_crs_user_fields'), $fields);
441 }
442 }
443 $info->enableLearningProgress(true);
444
445 // forward the command
446 $this->ctrl->forwardCommand($info);
447 }
const IL_CAL_UNIX
setInfoObject(ilInfoScreenGUI $info)
get info sections
static _getFields(int $a_container_id, $a_sort=self::IL_CDF_SORT_NAME)
Get all fields of a container.
static _readFilesByCourse(int $a_course_id)
static formatDate(ilDateTime $date, bool $a_skip_day=false, bool $a_include_wd=false, bool $include_seconds=false, ?ilObjUser $user=null,)
static formatPeriod(ilDateTime $start, ilDateTime $end, bool $a_skip_starting_day=false, ?ilObjUser $user=null)
Format a period of two dates Shows: 14.
@classDescription Date and time handling
isNull()
Check if a date is null (Datetime == '0000-00-00 00:00:00', unixtime == 0,...)
static _getInstanceByType(string $a_type)
Get Singleton Instance.
Class ilInfoScreenGUI.
static getLinkTarget( $gui, string $cmd, array $gui_params=[], array $mail_params=[], array $context_params=[])
final const string CONTEXT_KEY
static lookupRegistrationInfo(int $a_obj_id)
createMailSignature()
Create a course mail signature.
ilAdvancedMDRecordGUI $record_gui
ilGlobalTemplateInterface $tpl
static getInstanceByObjId(int $a_obj_id)
Get instance by obj type.
special template class to simplify handling of ITX/PEAR
static makeClickable(string $a_text, bool $detectGotoLinks=false, ?string $ilias_http_path=null)
$c
Definition: deliver.php:25
$info
Definition: entry_point.php:21
setVariable(string $variable, $value='')
Sets the given variable to the given value.
parseCurrentBlock(string $block_name=self::DEFAULT_BLOCK)
Parses the given block.
setCurrentBlock(string $part=self::DEFAULT_BLOCK)
Sets the template to the given block.
get(string $part=self::DEFAULT_BLOCK)
Renders the given block and returns the html string.
if($clientAssertionType !='urn:ietf:params:oauth:client-assertion-type:jwt-bearer'|| $grantType !='client_credentials') $parts
Definition: ltitoken.php:61

References $c, $info, $parts, $record_gui, ilObjectGUI\$tpl, ilCourseDefinedFieldDefinition\_fieldsToInfoString(), ilCourseDefinedFieldDefinition\_getFields(), ilExportFieldsInfo\_getInstanceByType(), ilCourseFile\_readFilesByCourse(), ILIAS\Repository\access(), ilObjectGUI\checkPermission(), ilObjectGUI\checkPermissionBool(), ilMailFormCall\CONTEXT_KEY, createMailSignature(), ILIAS\Repository\ctrl(), ilDatePresentation\formatDate(), ilDatePresentation\formatPeriod(), ILIAS\UICore\GlobalTemplate\get(), ilPrivacySettings\getInstance(), ilParticipants\getInstanceByObjId(), ilMailFormCall\getLinkTarget(), ilMailGlobalServices\getMailObjectRefId(), ilCourseMailTemplateMemberContext\ID, IL_CAL_UNIX, ilCourseConstants\IL_CRS_SUBSCRIPTION_CONFIRMATION, ilCourseConstants\IL_CRS_SUBSCRIPTION_DEACTIVATED, ilCourseConstants\IL_CRS_SUBSCRIPTION_DIRECT, ilCourseConstants\IL_CRS_SUBSCRIPTION_PASSWORD, ilDateTime\isNull(), ILIAS\Repository\lng(), ilObjCourseAccess\lookupRegistrationInfo(), ilUtil\makeClickable(), ilAdvancedMDRecordGUI\MODE_INFO, ILIAS\Repository\object(), ilAdvancedMDRecordGUI\parse(), ILIAS\UICore\GlobalTemplate\parseCurrentBlock(), ILIAS\UICore\GlobalTemplate\setCurrentBlock(), ilAdvancedMDRecordGUI\setInfoObject(), ILIAS\UICore\GlobalTemplate\setVariable(), and ILIAS\Repository\user().

Referenced by executeCommand().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ infoScreenObject()

ilObjCourseGUI::infoScreenObject ( )

this one is called from the info button in the repository not very nice to set cmdClass/Cmd manually, if everything works through ilCtrl in the future this may be changed

Todo:

Definition at line 180 of file class.ilObjCourseGUI.php.

180 : void
181 {
182 $this->ctrl->redirectByClass([
183 static::class,
184 ilInfoScreenGUI::class
185 ]);
186 }

References ILIAS\Repository\ctrl().

Referenced by executeCommand().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initEditForm()

ilObjCourseGUI::initEditForm ( )
protected

Reimplemented from ilContainerGUI.

Definition at line 944 of file class.ilObjCourseGUI.php.

945 {
946 $obj_service = $this->getObjectService();
947 $setting = $this->settings;
948
949 $form = new ilPropertyFormGUI();
950 $form->setTitle($this->lng->txt('crs_edit'));
951
952 $form->addCommandButton('update', $this->lng->txt('save'));
953 $form->addCommandButton('cancel', $this->lng->txt('cancel'));
954
955 $form->setFormAction($this->ctrl->getFormAction($this, 'update'));
956
957 // title and description
958 $this->initFormTitleDescription($form);
959
960 // Show didactic template type
962
963 // period
964 $cdur = new ilDateDurationInputGUI($this->lng->txt('crs_period'), 'period');
965 $this->lng->loadLanguageModule('mem');
966 $cdur->enableToggleFullTime(
967 $this->lng->txt('mem_period_without_time'),
968 !$this->object->getCourseStartTimeIndication()
969 );
970 $cdur->setShowTime(true);
971 $cdur->setInfo($this->lng->txt('crs_period_info'));
972 $cdur->setStart($this->object->getCourseStart());
973 $cdur->setEnd($this->object->getCourseEnd());
974 $form->addItem($cdur);
975
976 // activation/availability
977
978 $this->lng->loadLanguageModule('rep');
979
980 $section = new ilFormSectionHeaderGUI();
981 $section->setTitle($this->lng->txt('rep_activation_availability'));
982 $form->addItem($section);
983
984 $online = new ilCheckboxInputGUI($this->lng->txt('rep_activation_online'), 'activation_online');
985 $online->setChecked(!$this->object->getOfflineStatus());
986 $online->setInfo($this->lng->txt('crs_activation_online_info'));
987 $form->addItem($online);
988
989 $dur = new ilDateDurationInputGUI($this->lng->txt('rep_time_period'), "access_period");
990 $dur->setShowTime(true);
991 $dur->setStart(new ilDateTime($this->object->getActivationStart(), IL_CAL_UNIX));
992 $dur->setEnd(new ilDateTime($this->object->getActivationEnd(), IL_CAL_UNIX));
993 $form->addItem($dur);
994
995 $visible = new ilCheckboxInputGUI(
996 $this->lng->txt('rep_activation_limited_visibility'),
997 'activation_visibility'
998 );
999 $visible->setInfo($this->lng->txt('crs_activation_limited_visibility_info'));
1000 $visible->setChecked((bool) $this->object->getActivationVisibility());
1001 $dur->addSubItem($visible);
1002
1003 $section = new ilFormSectionHeaderGUI();
1004 $section->setTitle($this->lng->txt('crs_reg'));
1005 $form->addItem($section);
1006
1007 // time limit
1008 $sdur = new ilDateDurationInputGUI($this->lng->txt('crs_registration_limited'), "subscription_period");
1009 $sdur->setShowTime(true);
1010 if ($this->object->getSubscriptionStart()) {
1011 $sdur->setStart(new ilDateTime($this->object->getSubscriptionStart(), IL_CAL_UNIX));
1012 }
1013 if ($this->object->getSubscriptionEnd()) {
1014 $sdur->setEnd(new ilDateTime($this->object->getSubscriptionEnd(), IL_CAL_UNIX));
1015 }
1016
1017 $reg_proc = new ilRadioGroupInputGUI('', 'subscription_type');
1018 $reg_proc->setValue(
1019 ($this->object->getSubscriptionLimitationType() != ilCourseConstants::IL_CRS_SUBSCRIPTION_DEACTIVATED)
1020 ? (string) $this->object->getSubscriptionType()
1022 );
1023
1024 $opt = new ilRadioOption(
1025 $this->lng->txt('crs_subscription_options_direct'),
1026 (string) ilCourseConstants::IL_CRS_SUBSCRIPTION_DIRECT
1027 );
1028 $reg_proc->addOption($opt);
1029
1030 $opt = new ilRadioOption(
1031 $this->lng->txt('crs_subscription_options_password'),
1033 );
1034
1035 $pass = new ilTextInputGUI($this->lng->txt("password"), 'subscription_password');
1036 $pass->setRequired(true);
1037 $pass->setInfo($this->lng->txt('crs_reg_password_info'));
1038 $pass->setSubmitFormOnEnter(true);
1039 $pass->setSize(32);
1040 $pass->setMaxLength(32);
1041 $pass->setValue($this->object->getSubscriptionPassword());
1042
1043 $opt->addSubItem($pass);
1044 $reg_proc->addOption($opt);
1045
1046 $opt = new ilRadioOption(
1047 $this->lng->txt('crs_subscription_options_confirmation'),
1049 );
1050 $opt->setInfo($this->lng->txt('crs_registration_confirmation_info'));
1051 $reg_proc->addOption($opt);
1052
1053 $opt_self_enrollment_enabled = new ilRadioOption(
1054 $this->lng->txt('crs_reg_selfreg'),
1056 );
1057 $opt_self_enrollment_enabled->addSubItem($reg_proc);
1058 $opt_self_enrollment_enabled->addSubItem($sdur);
1059 $opt_self_enrollment_disabled = new ilRadioOption(
1060 $this->lng->txt('crs_reg_no_selfreg'),
1062 );
1063 $opt_self_enrollment_disabled->setInfo($this->lng->txt('crs_registration_deactivated'));
1064 $reg_proc_subscription_reg_type = new ilRadioGroupInputGUI(
1065 $this->lng->txt('crs_registration_type'),
1066 'subscription_limitation_type'
1067 );
1068 $reg_proc_subscription_reg_type->setValue(
1069 $this->object->getSubscriptionLimitationType() !== ilCourseConstants::IL_CRS_SUBSCRIPTION_DEACTIVATED
1072 );
1073 $reg_proc_subscription_reg_type->addOption($opt_self_enrollment_enabled);
1074 $reg_proc_subscription_reg_type->addOption($opt_self_enrollment_disabled);
1075 $form->addItem($reg_proc_subscription_reg_type);
1076
1077 // Registration codes
1078 $reg_code = new ilCheckboxInputGUI($this->lng->txt('crs_reg_code'), 'reg_code_enabled');
1079 $reg_code->setChecked($this->object->isRegistrationAccessCodeEnabled());
1080 $reg_code->setValue('1');
1081 $reg_code->setInfo($this->lng->txt('crs_reg_code_enabled_info'));
1082
1083 // Create default access code
1084 if (!$this->object->getRegistrationAccessCode()) {
1085 $this->object->setRegistrationAccessCode(ilMembershipRegistrationCodeUtils::generateCode());
1086 }
1087 $reg_link = new ilHiddenInputGUI('reg_code');
1088 $reg_link->setValue($this->object->getRegistrationAccessCode());
1089 $form->addItem($reg_link);
1090
1091 $link = new ilCustomInputGUI($this->lng->txt('crs_reg_code_link'));
1092 $val = ilLink::_getLink(
1093 $this->object->getRefId(),
1094 $this->object->getType(),
1095 array(),
1096 'rcode' . $this->object->getRegistrationAccessCode()
1097 );
1098 $link->setHtml('<span class="small">' . $val . '</span>');
1099 $reg_code->addSubItem($link);
1100
1101 $form->addItem($reg_code);
1102
1103 // cancellation limit
1104 $cancel = new ilDateTimeInputGUI($this->lng->txt('crs_cancellation_end'), 'cancel_end');
1105 $cancel->setInfo($this->lng->txt('crs_cancellation_end_info'));
1106 $cancel_end = $this->object->getCancellationEnd();
1107 if ($cancel_end) {
1108 $cancel->setDate($cancel_end);
1109 }
1110 $form->addItem($cancel);
1111
1112 // Max members
1113 $lim = new ilCheckboxInputGUI(
1114 $this->lng->txt('crs_subscription_max_members_short'),
1115 'subscription_membership_limitation'
1116 );
1117 $lim->setInfo($this->lng->txt('crs_subscription_max_members_short_info'));
1118 $lim->setValue((string) 1);
1119 $lim->setChecked($this->object->isSubscriptionMembershipLimited());
1120
1121 $min = new ilTextInputGUI('', 'subscription_min');
1122 $min->setSubmitFormOnEnter(true);
1123 $min->setSize(4);
1124 $min->setMaxLength(4);
1125 $min->setValue($this->object->getSubscriptionMinMembers() ?: '');
1126 $min->setTitle($this->lng->txt('crs_subscription_min_members'));
1127 $min->setInfo($this->lng->txt('crs_subscription_min_members_info'));
1128 $lim->addSubItem($min);
1129
1130 $max = new ilTextInputGUI('', 'subscription_max');
1131 $max->setSubmitFormOnEnter(true);
1132 $max->setSize(4);
1133 $max->setMaxLength(4);
1134 $max->setValue($this->object->getSubscriptionMaxMembers() ?: '');
1135 $max->setTitle($this->lng->txt('crs_subscription_max_members'));
1136 $max->setInfo($this->lng->txt('crs_reg_max_info'));
1137
1138 $lim->addSubItem($max);
1139
1140 $wait = new ilRadioGroupInputGUI($this->lng->txt('crs_waiting_list'), 'waiting_list');
1141 $option = new ilRadioOption($this->lng->txt('none'), '0');
1142 $wait->addOption($option);
1143
1144 $option = new ilRadioOption($this->lng->txt('crs_waiting_list_no_autofill'), '1');
1145 $option->setInfo($this->lng->txt('crs_wait_info'));
1146 $wait->addOption($option);
1147
1148 $option = new ilRadioOption($this->lng->txt('crs_waiting_list_autofill'), '2');
1149 $option->setInfo($this->lng->txt('crs_waiting_list_autofill_info'));
1150 $wait->addOption($option);
1151
1152 if ($this->object->hasWaitingListAutoFill()) {
1153 $wait->setValue('2');
1154 } elseif ($this->object->enabledWaitingList()) {
1155 $wait->setValue('1');
1156 } else {
1157 $wait->setValue('0');
1158 }
1159 $lim->addSubItem($wait);
1160 $form->addItem($lim);
1161 $pres = new ilFormSectionHeaderGUI();
1162 $pres->setTitle($this->lng->txt('crs_view_mode'));
1163
1164 $form->addItem($pres);
1165
1166 // title and icon visibility
1167 $form = $obj_service->commonSettings()->legacyForm($form, $this->object)->addTitleIconVisibility();
1168
1169 // top actions visibility
1170 $form = $obj_service->commonSettings()->legacyForm($form, $this->object)->addTopActionsVisibility();
1171
1172 // breadcrumbs
1173 if ($setting->get("rep_breadcr_crs") && $setting->get("rep_breadcr_crs_overwrite")) {
1174 $add = $setting->get("rep_breadcr_crs_default")
1175 ? " (" . $this->lng->txt("crs_breadcrumb_crs_only") . ")"
1176 : " (" . $this->lng->txt("crs_breadcrumb_full_path") . ")";
1177 $options = array(
1178 self::BREADCRUMB_DEFAULT => $this->lng->txt("crs_sys_default") . $add,
1179 self::BREADCRUMB_CRS_ONLY => $this->lng->txt("crs_breadcrumb_crs_only"),
1180 self::BREADCRUMB_FULL_PATH => $this->lng->txt("crs_breadcrumb_full_path")
1181 );
1182 $si = new ilSelectInputGUI($this->lng->txt("crs_shorten_breadcrumb"), "rep_breacrumb");
1183 $si->setValue((int) ilContainer::_lookupContainerSetting($this->object->getId(), "rep_breacrumb"));
1184 $si->setOptions($options);
1185 $form->addItem($si);
1186 }
1187
1188 // custom icon
1189 $form = $obj_service->commonSettings()->legacyForm($form, $this->object)->addIcon();
1190
1191 // tile image
1192 $form = $obj_service->commonSettings()->legacyForm($form, $this->object)->addTileImage();
1193
1194 // list presentation
1196
1197 // presentation type
1198 $view_type = new ilRadioGroupInputGUI($this->lng->txt('crs_presentation_type'), 'view_mode');
1199 $view_type->setValue($this->object->getViewMode());
1200
1201 $opts = new ilRadioOption(
1202 $this->lng->txt('cntr_view_sessions'),
1204 );
1205 $opts->setInfo($this->lng->txt('cntr_view_info_sessions'));
1206 $view_type->addOption($opts);
1207
1208 // Limited sessions
1209 $sess = new ilCheckboxInputGUI($this->lng->txt('sess_limit'), 'sl');
1210 $sess->setValue('1');
1211 $sess->setChecked($this->object->isSessionLimitEnabled());
1212 $sess->setInfo($this->lng->txt('sess_limit_info'));
1213
1214 $prev = new ilNumberInputGUI($this->lng->txt('sess_num_prev'), 'sp');
1215 #$prev->setSubmitFormOnEnter(true);
1216 $prev->setMinValue(0);
1217 $prev->setValue(
1218 $this->object->getNumberOfPreviousSessions() == -1 ?
1219 '' :
1220 $this->object->getNumberOfPreviousSessions()
1221 );
1222 $prev->setSize(2);
1223 $prev->setMaxLength(3);
1224 $sess->addSubItem($prev);
1225
1226 $next = new ilNumberInputGUI($this->lng->txt('sess_num_next'), 'sn');
1227 #$next->setSubmitFormOnEnter(true);
1228 $next->setMinValue(0);
1229 $next->setValue(
1230 $this->object->getNumberOfNextSessions() == -1 ?
1231 '' :
1232 $this->object->getNumberOfnextSessions()
1233 );
1234 $next->setSize(2);
1235 $next->setMaxLength(3);
1236 $sess->addSubItem($next);
1237
1238 $opts->addSubItem($sess);
1239
1240 $optsi = new ilRadioOption($this->lng->txt('cntr_view_simple'), (string) ilCourseConstants::IL_CRS_VIEW_SIMPLE);
1241 $optsi->setInfo($this->lng->txt('cntr_view_info_simple'));
1242 $view_type->addOption($optsi);
1243
1244 $optbt = new ilRadioOption(
1245 $this->lng->txt('cntr_view_by_type'),
1247 );
1248 $optbt->setInfo($this->lng->txt('cntr_view_info_by_type'));
1249 $view_type->addOption($optbt);
1250
1251 $opto = new ilRadioOption(
1252 $this->lng->txt('crs_view_objective'),
1254 );
1255 $opto->setInfo($this->lng->txt('crs_view_info_objective'));
1256 $view_type->addOption($opto);
1257
1258 $optt = new ilRadioOption($this->lng->txt('crs_view_timing'), (string) ilCourseConstants::IL_CRS_VIEW_TIMING);
1259 $optt->setInfo($this->lng->txt('crs_view_info_timing'));
1260
1261 // cognos-blu-patch: begin
1262 $timing = new ilRadioGroupInputGUI($this->lng->txt('crs_view_timings'), "timing_mode");
1263 $timing->setValue($this->object->getTimingMode());
1264
1265 $absolute = new ilRadioOption(
1266 $this->lng->txt('crs_view_timing_absolute'),
1268 );
1269 $absolute->setInfo($this->lng->txt('crs_view_info_timing_absolute'));
1270 $timing->addOption($absolute);
1271
1272 $relative = new ilRadioOption(
1273 $this->lng->txt('crs_view_timing_relative'),
1275 );
1276 $relative->setInfo($this->lng->txt('crs_view_info_timing_relative'));
1277 $timing->addOption($relative);
1278
1279 $optt->addSubItem($timing);
1280 // cognos-blu-patch: end
1281
1282 $view_type->addOption($optt);
1283
1284 $form->addItem($view_type);
1285
1286 $this->initSortingForm(
1287 $form,
1288 array(
1293 )
1294 );
1295
1296 $tutorial_support_panel_checkbox = new ilCheckboxInputGUI(
1297 $this->lng->txt('tutorial_support_block_setting_title'),
1298 'tutorial_support_block_checkbox'
1299 );
1300 //$tutorial_support_panel_checkbox->setValue($this->object->getTutorialSupportBlockSettingValue());
1301 $tutorial_support_panel_checkbox->setChecked((bool) $this->object->getTutorialSupportBlockSettingValue());
1302 $tutorial_support_panel_checkbox->setInfo($this->lng->txt('tutorial_support_block_byline'));
1303 $form->addItem($tutorial_support_panel_checkbox);
1304
1305 // lp vs. course status
1307 $olp = ilObjectLP::getInstance($this->object->getId());
1308 if ($olp->getCurrentMode()) {
1309 $lp_status = new ilFormSectionHeaderGUI();
1310 $lp_status->setTitle($this->lng->txt('crs_course_status_of_users'));
1311 $form->addItem($lp_status);
1312
1313 $lp_status_options = new ilRadioGroupInputGUI($this->lng->txt('crs_status_determination'), "status_dt");
1314 // $lp_status_options->setRequired(true);
1315 $lp_status_options->setValue($this->object->getStatusDetermination());
1316
1317 $lp_option = new ilRadioOption(
1318 $this->lng->txt('crs_status_determination_lp'),
1320 $this->lng->txt('crs_status_determination_lp_info')
1321 );
1322 $lp_status_options->addOption($lp_option);
1323 $lp_status_options->addOption(new ilRadioOption(
1324 $this->lng->txt('crs_status_determination_manual'),
1326 ));
1327
1328 $form->addItem($lp_status_options);
1329 }
1330 }
1331
1332 // additional features
1333 $feat = new ilFormSectionHeaderGUI();
1334 $feat->setTitle($this->lng->txt('obj_features'));
1335 $form->addItem($feat);
1336
1338 $this->object->getId(),
1339 $form,
1340 $this->getSubServices()
1341 );
1342
1343 $mem = new ilCheckboxInputGUI($this->lng->txt('crs_show_members'), 'show_members');
1344 $mem->setChecked($this->object->getShowMembers());
1345 $mem->setInfo($this->lng->txt('crs_show_members_info'));
1346 $form->addItem($mem);
1347
1348 // check privacy
1349 if (\ilPrivacySettings::getInstance()->participantsListInCoursesEnabled()) {
1350 $part_list = new ilCheckboxInputGUI($this->lng->txt('crs_show_member_export'), 'show_members_export');
1351 $part_list->setChecked($this->object->getShowMembersExport());
1352 $part_list->setInfo($this->lng->txt('crs_show_member_export_info'));
1353 $mem->addSubItem($part_list);
1354 }
1355
1356 // Show members type
1357 $mail_type = new ilRadioGroupInputGUI($this->lng->txt('crs_mail_type'), 'mail_type');
1358 $mail_type->setValue($this->object->getMailToMembersType());
1359
1360 $mail_tutors = new ilRadioOption(
1361 $this->lng->txt('crs_mail_tutors_only'),
1363 $this->lng->txt('crs_mail_tutors_only_info')
1364 );
1365 $mail_type->addOption($mail_tutors);
1366
1367 $mail_all = new ilRadioOption(
1368 $this->lng->txt('crs_mail_all'),
1370 $this->lng->txt('crs_mail_all_info')
1371 );
1372 $mail_type->addOption($mail_all);
1373 $form->addItem($mail_type);
1374
1375 // Notification Settings
1376 /*$notification = new ilFormSectionHeaderGUI();
1377 $notification->setTitle($this->lng->txt('crs_notification'));
1378 $form->addItem($notification);*/
1379
1380 // Self notification
1381 $not = new ilCheckboxInputGUI($this->lng->txt('crs_auto_notification'), 'auto_notification');
1382 $not->setValue('1');
1383 $not->setInfo($this->lng->txt('crs_auto_notification_info'));
1384 $not->setChecked($this->object->getAutoNotification());
1385 $form->addItem($not);
1386
1387 $desk = new ilCheckboxInputGUI($this->lng->txt('crs_add_remove_from_desktop'), 'abo');
1388 $desk->setChecked($this->object->getAboStatus());
1389 $desk->setInfo($this->lng->txt('crs_add_remove_from_desktop_info'));
1390 $form->addItem($desk);
1391
1392 // Edit ecs export settings
1393 $ecs = new ilECSCourseSettings($this->object);
1394 $ecs->addSettingsToForm($form, 'crs');
1395 return $form;
1396 }
initSortingForm(ilPropertyFormGUI $form, array $a_sorting_settings)
Append sorting settings to property form.
initListPresentationForm(ilPropertyFormGUI $form)
Add list presentation settings to form.
This class represents a custom property in a property form.
input GUI for a time span (start and end date)
This class represents a date/time property in a property form.
Class ilECSCourseSettings.
This class represents a section header in a property form.
This class represents a hidden form property in a property form.
static generateCode()
Generate new registration key.
This class represents a number property in a property form.
const int STATUS_DETERMINATION_MANUAL
const int STATUS_DETERMINATION_LP
initDidacticTemplate(ilPropertyFormGUI $form)
ilSetting $settings
static getInstance(int $obj_id)
static initServiceSettingsForm(int $obj_id, ilPropertyFormGUI $form, array $services)
This class represents a property in a property form.
This class represents an option in a radio group.
This class represents a selection list property in a property form.
This class represents a text property in a property form.

References ilContainerGUI\$form, ILIAS\UI\Implementation\Component\Input\Field\$options, ilObjectGUI\$settings, ilObjUserTracking\_enabledLearningProgress(), ilContainer\_lookupContainerSetting(), ilPropertyFormGUI\addCommandButton(), ilPropertyFormGUI\addItem(), ILIAS\Repository\ctrl(), ilMembershipRegistrationCodeUtils\generateCode(), ilPrivacySettings\getInstance(), ilObjectLP\getInstance(), ilObjectGUI\getObjectService(), IL_CAL_UNIX, ilCourseConstants\IL_CRS_SUBSCRIPTION_CONFIRMATION, ilCourseConstants\IL_CRS_SUBSCRIPTION_DEACTIVATED, ilCourseConstants\IL_CRS_SUBSCRIPTION_DIRECT, ilCourseConstants\IL_CRS_SUBSCRIPTION_PASSWORD, ilCourseConstants\IL_CRS_SUBSCRIPTION_UNLIMITED, ilCourseConstants\IL_CRS_VIEW_BY_TYPE, ilCourseConstants\IL_CRS_VIEW_OBJECTIVE, ilCourseConstants\IL_CRS_VIEW_SESSIONS, ilCourseConstants\IL_CRS_VIEW_SIMPLE, ilCourseConstants\IL_CRS_VIEW_TIMING, ilCourseConstants\IL_CRS_VIEW_TIMING_ABSOLUTE, ilCourseConstants\IL_CRS_VIEW_TIMING_RELATIVE, ilObjectGUI\initDidacticTemplate(), ilContainerGUI\initListPresentationForm(), ilObjectServiceSettingsGUI\initServiceSettingsForm(), ilContainerGUI\initSortingForm(), ILIAS\Repository\lng(), ilCourseConstants\MAIL_ALLOWED_ALL, ilCourseConstants\MAIL_ALLOWED_TUTORS, ILIAS\Repository\object(), ilFormGUI\setFormAction(), ilPropertyFormGUI\setTitle(), ilContainer\SORT_ACTIVATION, ilContainer\SORT_CREATION, ilContainer\SORT_MANUAL, ilContainer\SORT_TITLE, ilObjCourse\STATUS_DETERMINATION_LP, and ilObjCourse\STATUS_DETERMINATION_MANUAL.

Referenced by updateObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ initHeaderAction()

ilObjCourseGUI::initHeaderAction ( ?string  $sub_type = null,
?int  $sub_id = null 
)
protected

Add header action menu.

Reimplemented from ilObjectGUI.

Definition at line 2788 of file class.ilObjCourseGUI.php.

2789 {
2790 $lg = parent::initHeaderAction($sub_type, $sub_id);
2791
2792 if ($lg && $this->ref_id && ilCourseParticipants::_isParticipant($this->ref_id, $this->user->getId())) {
2793 // certificate
2794
2795 $validator = new ilCertificateDownloadValidator();
2796 if ($validator->isCertificateDownloadable($this->user->getId(), $this->object->getId())) {
2797 $cert_url = $this->ctrl->getLinkTarget($this, "deliverCertificate");
2798
2799 $this->lng->loadLanguageModule("certificate");
2800 $lg->addCustomCommand($cert_url, "download_certificate");
2801
2802 $lg->addHeaderIcon(
2803 "cert_icon",
2804 ilUtil::getImagePath("standard/icon_cert.svg"),
2805 $this->lng->txt("download_certificate"),
2806 null,
2807 null,
2808 $cert_url
2809 );
2810 }
2811
2812 // notification
2814 $noti = new ilMembershipNotifications($this->ref_id);
2815 if (!$noti->isCurrentUserActive()) {
2816 $lg->addHeaderIcon(
2817 "not_icon",
2818 ilUtil::getImagePath("object/notification_off.svg"),
2819 $this->lng->txt("crs_notification_deactivated")
2820 );
2821
2822 $this->ctrl->setParameter($this, "crs_ntf", 1);
2823 $caption = "crs_activate_notification";
2824 } else {
2825 $lg->addHeaderIcon(
2826 "not_icon",
2827 ilUtil::getImagePath("object/notification_on.svg"),
2828 $this->lng->txt("crs_notification_activated")
2829 );
2830
2831 $this->ctrl->setParameter($this, "crs_ntf", 0);
2832 $caption = "crs_deactivate_notification";
2833 }
2834
2835 if ($noti->canCurrentUserEdit()) {
2836 $lg->addCustomCommand(
2837 $this->ctrl->getLinkTarget($this, "saveNotification"),
2838 $caption
2839 );
2840 }
2841
2842 $this->ctrl->setParameter($this, "crs_ntf", "");
2843 }
2844 }
2845
2846 return $lg;
2847 }
Membership notification settings.
static getImagePath(string $image_name, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)

References ilParticipants\_isParticipant(), ILIAS\Repository\ctrl(), ilUtil\getImagePath(), ilMembershipNotifications\isActiveForRefId(), ILIAS\Repository\lng(), and ILIAS\Repository\user().

+ Here is the call graph for this function:

◆ initInfoEditor()

ilObjCourseGUI::initInfoEditor ( )

Definition at line 500 of file class.ilObjCourseGUI.php.

501 {
502 $form = new ilPropertyFormGUI();
503 $form->setFormAction($this->ctrl->getFormAction($this, 'updateInfo'));
504 $form->setMultipart(true);
505 $form->setTitle($this->lng->txt('crs_general_info'));
506 $form->addCommandButton('updateInfo', $this->lng->txt('save'));
507 $form->addCommandButton('cancel', $this->lng->txt('cancel'));
508
509 $area = new ilTextAreaInputGUI($this->lng->txt('crs_important_info'), 'important');
510 $area->setValue($this->object->getImportantInformation());
511 $area->setRows(6);
512 $area->setCols(80);
513 $form->addItem($area);
514
515 $area = new ilTextAreaInputGUI($this->lng->txt('crs_syllabus'), 'syllabus');
516 $area->setValue($this->object->getSyllabus());
517 $area->setRows(6);
518 $area->setCols(80);
519 $form->addItem($area);
520
521 $tg = new \ilTextAreaInputGUI($this->lng->txt('crs_target_group'), 'target_group');
522 $tg->setValue($this->object->getTargetGroup() ?? "");
523 $tg->setRows(6);
524 $form->addItem($tg);
525
526 $section = new ilFormSectionHeaderGUI();
527 $section->setTitle($this->lng->txt('crs_info_download'));
528 $form->addItem($section);
529
530 $file = new ilFileInputGUI($this->lng->txt('crs_file'), 'file');
531 $file->enableFileNameSelection('file_name');
532 $form->addItem($file);
533
534 $section = new ilFormSectionHeaderGUI();
535 $section->setTitle($this->lng->txt('crs_contact'));
536 $form->addItem($section);
537
538 $text = new ilTextInputGUI($this->lng->txt('crs_contact_name'), 'contact_name');
539 $text->setValue($this->object->getContactName());
540 $text->setSize(40);
541 $text->setMaxLength(70);
543
544 $text = new ilTextInputGUI($this->lng->txt('crs_contact_responsibility'), 'contact_responsibility');
545 $text->setValue($this->object->getContactResponsibility());
546 $text->setSize(40);
547 $text->setMaxLength(70);
549
550 $text = new ilTextInputGUI($this->lng->txt('crs_contact_phone'), 'contact_phone');
551 $text->setValue($this->object->getContactPhone());
552 $text->setSize(40);
553 $text->setMaxLength(40);
555
556 $text = new ilTextInputGUI($this->lng->txt('crs_contact_email'), 'contact_email');
557 $text->setValue($this->object->getContactEmail());
558 $text->setInfo($this->lng->txt('crs_contact_email_info'));
559 $text->setSize(40);
560 $text->setMaxLength(255);
562
563 $area = new ilTextAreaInputGUI($this->lng->txt('crs_contact_consultation'), 'contact_consultation');
564 $area->setValue($this->object->getContactConsultation());
565 $area->setRows(6);
566 $area->setCols(80);
567 $form->addItem($area);
568
569 $this->record_gui = new ilAdvancedMDRecordGUI(
571 'crs',
572 $this->object->getId()
573 );
574 $this->record_gui->setPropertyForm($form);
575 $this->record_gui->parse();
576 return $form;
577 }
This class represents a file property in a property form.
setMultipart(bool $a_multipart)
This class represents a text area property in a property form.
$text
Definition: xapiexit.php:21

References ilContainerGUI\$form, $text, ilPropertyFormGUI\addCommandButton(), ilPropertyFormGUI\addItem(), ILIAS\Repository\ctrl(), ILIAS\Repository\lng(), ilAdvancedMDRecordGUI\MODE_EDITOR, ILIAS\Repository\object(), ilFormGUI\setFormAction(), ilFormGUI\setMultipart(), and ilPropertyFormGUI\setTitle().

Referenced by executeCommand(), and updateInfoObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ jump2UsersGalleryObject()

ilObjCourseGUI::jump2UsersGalleryObject ( )
protected

Definition at line 3058 of file class.ilObjCourseGUI.php.

3058 : void
3059 {
3060 $this->ctrl->redirectByClass(ilUsersGalleryGUI::class);
3061 }

References ILIAS\Repository\ctrl().

+ Here is the call graph for this function:

◆ leaveObject()

ilObjCourseGUI::leaveObject ( )

Definition at line 1700 of file class.ilObjCourseGUI.php.

1700 : void
1701 {
1702 $this->checkPermission('leave');
1703
1704 if ($this->object->getMembersObject()->isLastAdmin($this->user->getId())) {
1705 $this->tpl->setOnScreenMessage('failure', $this->lng->txt('crs_min_one_admin'));
1706 $this->viewObject();
1707 return;
1708 }
1709
1710 $this->tabs_gui->setTabActive('crs_unsubscribe');
1711 $cgui = new ilConfirmationGUI();
1712 $cgui->setHeaderText($this->lng->txt('crs_unsubscribe_sure'));
1713 $cgui->setFormAction($this->ctrl->getFormAction($this));
1714 $cgui->setCancel($this->lng->txt("cancel"), "cancel");
1715 $cgui->setConfirm($this->lng->txt("crs_unsubscribe"), "performUnsubscribe");
1716 $this->tpl->setContent($cgui->getHTML());
1717 }

References ilObjectGUI\checkPermission(), ILIAS\Repository\ctrl(), ILIAS\Repository\lng(), ILIAS\Repository\object(), and ilObjectGUI\viewObject().

Referenced by unsubscribeObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ membersObject()

ilObjCourseGUI::membersObject ( )
protected

Definition at line 2483 of file class.ilObjCourseGUI.php.

2483 : void
2484 {
2485 $this->ctrl->redirectByClass('ilcoursemembershipgui');
2486 }

References ILIAS\Repository\ctrl().

Referenced by autoFillObject().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ modifyItemGUI()

ilObjCourseGUI::modifyItemGUI ( ilObjectListGUI  $a_item_list_gui,
array  $a_item_data 
)

@inheritDoc

Reimplemented from ilContainerGUI.

Definition at line 2637 of file class.ilObjCourseGUI.php.

2637 : void
2638 {
2640 $a_item_list_gui,
2641 'ilcoursecontentgui',
2642 $a_item_data,
2643 $this->object->getAboStatus(),
2644 $this->object->getRefId(),
2645 $this->object->getId()
2646 );
2647 }
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)

References _modifyItemGUI(), and ILIAS\Repository\object().

+ Here is the call graph for this function:

◆ performUnsubscribeObject()

ilObjCourseGUI::performUnsubscribeObject ( )

Definition at line 1724 of file class.ilObjCourseGUI.php.

1725 {
1726 $this->checkPermission('leave');
1727 $this->getObject()->getMembersObject()->delete($this->user->getId());
1728 $this->getObject()->getMembersObject()->sendUnsubscribeNotificationToAdmins($this->user->getId());
1729 $this->getObject()->getMembersObject()->sendNotification(
1731 $this->user->getId()
1732 );
1733 $this->tpl->setOnScreenMessage('success', $this->lng->txt('crs_unsubscribed_from_crs'), true);
1734
1735 $this->ctrl->setParameterByClass("ilrepositorygui", "ref_id", $this->tree->getParentId($this->ref_id));
1736 $this->ctrl->redirectByClass("ilrepositorygui", "");
1737 }

References ilObjectGUI\checkPermission(), ILIAS\Repository\ctrl(), ilObjectGUI\getObject(), ILIAS\Repository\lng(), ilCourseMembershipMailNotification\TYPE_UNSUBSCRIBE_MEMBER, and ILIAS\Repository\user().

+ Here is the call graph for this function:

◆ readMemberData()

ilObjCourseGUI::readMemberData ( array  $ids,
?array  $selected_columns = null,
bool  $skip_names = false 
)

When building the members table in a course, user names are already read out via ilUserQuery::getUserListData (#31394). Adding skip_name as a parameter here is not super elegant, but seems like the only practical way avoid unnecessarily reading out the names again.

Definition at line 1564 of file class.ilObjCourseGUI.php.

1564 : array
1565 {
1566 $show_tracking =
1567 (
1570 );
1571 if ($show_tracking) {
1572 $olp = ilObjectLP::getInstance($this->object->getId());
1573 $show_tracking = $olp->isActive();
1574 }
1575
1576 if ($show_tracking) {
1577 $completed = ilLPStatusWrapper::_lookupCompletedForObject($this->object->getId());
1578 $in_progress = ilLPStatusWrapper::_lookupInProgressForObject($this->object->getId());
1579 $failed = ilLPStatusWrapper::_lookupFailedForObject($this->object->getId());
1580 }
1581 $privacy = ilPrivacySettings::getInstance();
1582
1583 if ($privacy->enabledCourseAccessTimes()) {
1584 $progress = ilLearningProgress::_lookupProgressByObjId($this->object->getId());
1585 }
1586
1587 $do_prtf = (is_array($selected_columns) &&
1588 in_array('prtf', $selected_columns) &&
1589 is_array($ids));
1590 if ($do_prtf) {
1592 $ids
1593 );
1594 }
1595
1596 $members = [];
1597 foreach ($ids as $usr_id) {
1605 if (!$skip_names) {
1606 $name = ilObjUser::_lookupName($usr_id);
1607 $tmp_data['firstname'] = $name['firstname'];
1608 $tmp_data['lastname'] = $name['lastname'];
1609 $tmp_data['login'] = $name['login'];
1610 }
1611 $tmp_data['passed'] = $this->object->getMembersObject()->hasPassed($usr_id) ? 1 : 0;
1612 if ($this->object->getStatusDetermination() == ilObjCourse::STATUS_DETERMINATION_LP) {
1613 $tmp_data['passed_info'] = $this->object->getMembersObject()->getPassedInfo($usr_id);
1614 }
1615 $tmp_data['notification'] = $this->object->getMembersObject()->isNotificationEnabled($usr_id) ? 1 : 0;
1616 $tmp_data['blocked'] = $this->object->getMembersObject()->isBlocked($usr_id) ? 1 : 0;
1617 $tmp_data['contact'] = $this->object->getMembersObject()->isContact($usr_id) ? 1 : 0;
1618
1619 $tmp_data['usr_id'] = $usr_id;
1620
1621 if ($show_tracking) {
1622 if (in_array($usr_id, $completed)) {
1623 $tmp_data['progress'] = ilLPStatus::LP_STATUS_COMPLETED;
1624 } elseif (in_array($usr_id, $in_progress)) {
1625 $tmp_data['progress'] = ilLPStatus::LP_STATUS_IN_PROGRESS;
1626 } elseif (in_array($usr_id, $failed)) {
1627 $tmp_data['progress'] = ilLPStatus::LP_STATUS_FAILED;
1628 } else {
1629 $tmp_data['progress'] = ilLPStatus::LP_STATUS_NOT_ATTEMPTED;
1630 }
1631 }
1632
1633 if ($privacy->enabledCourseAccessTimes()) {
1634 if (isset($progress[$usr_id]['ts']) && $progress[$usr_id]['ts']) {
1635 $tmp_data['access_ut'] = $progress[$usr_id]['ts'];
1636 $tmp_data['access_time'] = ilDatePresentation::formatDate(new ilDateTime(
1637 $progress[$usr_id]['ts'],
1639 ));
1640 } else {
1641 $tmp_data['access_ut'] = 0;
1642 $tmp_data['access_time'] = $this->lng->txt('no_date');
1643 }
1644 }
1645
1646 if ($do_prtf) {
1647 $tmp_data['prtf'] = $all_prtf[$usr_id] ?? null;
1648 }
1649
1650 $members[$usr_id] = $tmp_data;
1651 }
1652 return $members;
1653 }
static _lookupCompletedForObject(int $a_obj_id, ?array $a_user_ids=null)
static _lookupFailedForObject(int $a_obj_id, ?array $a_user_ids=null)
static _lookupInProgressForObject(int $a_obj_id, ?array $a_user_ids=null)
const LP_STATUS_COMPLETED
const LP_STATUS_FAILED
const LP_STATUS_NOT_ATTEMPTED
const LP_STATUS_IN_PROGRESS
static _lookupProgressByObjId(int $a_obj_id)
lookup progress for a specific object
static getAvailablePortfolioLinksForUserIds(array $a_owner_ids)
static _lookupName(int $a_user_id)

References ilObjUserTracking\_enabledLearningProgress(), ilObjUserTracking\_enabledUserRelatedData(), ilLPStatusWrapper\_lookupCompletedForObject(), ilLPStatusWrapper\_lookupFailedForObject(), ilLPStatusWrapper\_lookupInProgressForObject(), ilObjUser\_lookupName(), ilLearningProgress\_lookupProgressByObjId(), ilDatePresentation\formatDate(), ilObjPortfolio\getAvailablePortfolioLinksForUserIds(), ilPrivacySettings\getInstance(), ilObjectLP\getInstance(), IL_CAL_UNIX, ILIAS\Repository\lng(), ilLPStatus\LP_STATUS_COMPLETED, ilLPStatus\LP_STATUS_FAILED, ilLPStatus\LP_STATUS_IN_PROGRESS, ilLPStatus\LP_STATUS_NOT_ATTEMPTED, ILIAS\Repository\object(), and ilObjCourse\STATUS_DETERMINATION_LP.

+ Here is the call graph for this function:

◆ redirectLocToTestConfirmation()

ilObjCourseGUI::redirectLocToTestConfirmation ( int  $a_objective_id,
int  $a_test_id 
)
protected

Show confirmation whether user wants to start a new run or resume a previous run.

Definition at line 2994 of file class.ilObjCourseGUI.php.

2994 : void
2995 {
2996 $confirm = new ilConfirmationGUI();
2997 $confirm->setFormAction($GLOBALS['DIC']['ilCtrl']->getFormAction($this));
2998
2999 if ($a_objective_id) {
3000 $question = $this->lng->txt('crs_loc_objective_passed_confirmation');
3001 } else {
3002 $question = $this->lng->txt('crs_loc_objectives_passed_confirmation');
3003 }
3004
3005 $confirm->setHeaderText($question);
3006 $confirm->addHiddenItem('objective_id', (string) $a_objective_id);
3007 $confirm->addHiddenItem('tid', (string) $a_test_id);
3008 $confirm->setConfirm($this->lng->txt('crs_loc_tst_start'), 'redirectLocToTestConfirmed');
3009 $confirm->setCancel($this->lng->txt('cancel'), 'view');
3010
3011 //$this->tpl->setOnScreenMessage('question', $question);
3012 $this->tpl->setContent($confirm->getHTML());
3013 }
getFormAction(string $cmd, string $default_form_action="")
Get form action for command (command is method name without "Object", e.g.

References $GLOBALS, and ILIAS\Repository\lng().

+ Here is the call graph for this function:

◆ redirectLocToTestConfirmedObject()

ilObjCourseGUI::redirectLocToTestConfirmedObject ( )
protected

Definition at line 2926 of file class.ilObjCourseGUI.php.

2926 : void
2927 {
2928 $tid = 0;
2929 if ($this->http->wrapper()->query()->has('tid')) {
2930 $tid = $this->http->wrapper()->query()->retrieve(
2931 'tid',
2932 $this->refinery->kindlyTo()->int()
2933 );
2934 } elseif ($this->http->wrapper()->post()->has('tid')) {
2935 $tid = $this->http->wrapper()->post()->retrieve(
2936 'tid',
2937 $this->refinery->kindlyTo()->int()
2938 );
2939 }
2940 ilUtil::redirect(ilLink::_getLink($tid));
2941 }

References ILIAS\FileDelivery\http(), ilUtil\redirect(), and ILIAS\Repository\refinery().

+ Here is the call graph for this function:

◆ redirectLocToTestObject()

ilObjCourseGUI::redirectLocToTestObject (   $a_force_new_run = null)
protected

Definition at line 2943 of file class.ilObjCourseGUI.php.

2943 : void
2944 {
2945 $tid = 0;
2946 if ($this->http->wrapper()->query()->has('tid')) {
2947 $tid = $this->http->wrapper()->query()->retrieve(
2948 'tid',
2949 $this->refinery->kindlyTo()->int()
2950 );
2951 }
2952 $objective_id = 0;
2953 if ($this->http->wrapper()->query()->has('objective_id')) {
2954 $objective_id = $this->http->wrapper()->query()->retrieve(
2955 'objective_id',
2956 $this->refinery->kindlyTo()->int()
2957 );
2958 }
2959
2960 $res = new ilLOUserResults(
2961 $this->object->getId(),
2962 $this->user->getId()
2963 );
2964 $passed = $res->getCompletedObjectiveIds();
2965
2966 $has_completed = false;
2967 if ($objective_id) {
2968 $objective_ids = array($objective_id);
2969 if (in_array($objective_id, $passed)) {
2970 $has_completed = true;
2971 $passed = array();
2972 }
2973 } else {
2974 $objective_ids = ilCourseObjective::_getObjectiveIds($this->object->getId(), true);
2975
2976 // do not disable objective question if all are passed
2977 if (count($objective_ids) === count($passed)) {
2978 $has_completed = true;
2979 $passed = array();
2980 }
2981 }
2982
2983 if ($has_completed) {
2984 // show confirmation
2985 $this->redirectLocToTestConfirmation($objective_id, $tid);
2986 return;
2987 }
2988 ilUtil::redirect(ilLink::_getLink($tid));
2989 }
static _getObjectiveIds(int $course_id, bool $a_activated_only=false)
redirectLocToTestConfirmation(int $a_objective_id, int $a_test_id)
Show confirmation whether user wants to start a new run or resume a previous run.
$res
Definition: ltiservices.php:69

References $res, ilCourseObjective\_getObjectiveIds(), ILIAS\FileDelivery\http(), ILIAS\Repository\object(), ilUtil\redirect(), and ILIAS\Repository\refinery().

+ Here is the call graph for this function:

◆ renderAddNewItem()

ilObjCourseGUI::renderAddNewItem ( string ...  $disabled_object_types)

Definition at line 1525 of file class.ilObjCourseGUI.php.

1525 : void
1526 {
1527 $createble_object_types = $this->getCreatableObjectTypes();
1528
1529 foreach ($disabled_object_types as $type) {
1530 unset($createble_object_types[$type]);
1531 }
1532
1534 $this->buildAddNewItemElements($createble_object_types)
1535 );
1536 $gui->render();
1537 }
Render add new item selector.
buildAddNewItemElements(array $subtypes, string $create_target_class=ilRepositoryGUI::class, ?int $redirect_target_ref_id=null,)

References ilContainerGUI\$gui, ilObjectGUI\$type, ilObjectGUI\buildAddNewItemElements(), and ilObjectGUI\getCreatableObjectTypes().

Referenced by showPossibleSubObjects().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ renderContainer()

ilObjCourseGUI::renderContainer ( )

Definition at line 169 of file class.ilObjCourseGUI.php.

169 : void
170 {
171 parent::renderObject();
172 }

◆ renderObject()

ilObjCourseGUI::renderObject ( )

Reimplemented from ilContainerGUI.

Definition at line 105 of file class.ilObjCourseGUI.php.

105 : void
106 {
107 $this->viewObject();
108 }

References ilObjectGUI\viewObject().

+ Here is the call graph for this function:

◆ resetObject()

ilObjCourseGUI::resetObject ( )

Definition at line 2742 of file class.ilObjCourseGUI.php.

2742 : void
2743 {
2744 $usr_results = new ilLOUserResults($this->object->getId(), $GLOBALS['DIC']['ilUser']->getId());
2745 $usr_results->delete();
2747 $this->object->getId(),
2748 $GLOBALS['DIC']['ilUser']->getId()
2749 );
2750
2751 $tmp_obj_res = new ilCourseObjectiveResult($this->user->getId());
2752 $tmp_obj_res->reset($this->object->getId());
2753
2754 $this->user->deletePref('crs_objectives_force_details_' . $this->object->getId());
2755 $this->tpl->setOnScreenMessage('success', $this->lng->txt('crs_objectives_reseted'));
2756 $this->viewObject();
2757 }
static deleteRuns(int $a_container_id, int $a_user_id)

References $GLOBALS, ilLOTestRun\deleteRuns(), ILIAS\Repository\lng(), ILIAS\Repository\object(), and ILIAS\Repository\user().

+ Here is the call graph for this function:

◆ saveMapSettingsObject()

ilObjCourseGUI::saveMapSettingsObject ( )
Todo:
centralize for course, group, others

Definition at line 2607 of file class.ilObjCourseGUI.php.

2607 : void
2608 {
2609 $location = [];
2610 if ($this->http->wrapper()->post()->has('location')) {
2611 $custom_transformer = $this->refinery->custom()->transformation(
2612 fn($array) => $array
2613 );
2614 $location = $this->http->wrapper()->post()->retrieve(
2615 'location',
2616 $custom_transformer
2617 );
2618 }
2619 $enable_map = false;
2620 if ($this->http->wrapper()->post()->has('enable_map')) {
2621 $enable_map = $this->http->wrapper()->post()->retrieve(
2622 'enable_map',
2623 $this->refinery->kindlyTo()->bool()
2624 );
2625 }
2626 $this->object->setLatitude($location['latitude']);
2627 $this->object->setLongitude($location['longitude']);
2628 $this->object->setLocationZoom($location['zoom']);
2629 $this->object->setEnableCourseMap($enable_map);
2630 $this->object->update();
2631 $this->ctrl->redirect($this, "editMapSettings");
2632 }
$location
Definition: buildRTE.php:22

References $location, ILIAS\Repository\ctrl(), ILIAS\FileDelivery\http(), and ILIAS\Repository\refinery().

+ Here is the call graph for this function:

◆ saveNotificationObject()

ilObjCourseGUI::saveNotificationObject ( )

Definition at line 449 of file class.ilObjCourseGUI.php.

449 : void
450 {
451 $noti = new ilMembershipNotifications($this->ref_id);
452 if ($noti->canCurrentUserEdit()) {
453 $crs_ntf = false;
454 if ($this->http->wrapper()->query()->has('crs_ntf')) {
455 $crs_ntf = $this->http->wrapper()->query()->retrieve(
456 'crs_ntf',
457 $this->refinery->kindlyTo()->bool()
458 );
459 }
460 if ($crs_ntf) {
461 $noti->activateUser();
462 } else {
463 $noti->deactivateUser();
464 }
465 }
466 $this->tpl->setOnScreenMessage('success', $this->lng->txt("settings_saved"), true);
467 $this->ctrl->redirect($this, "");
468 }

References ILIAS\Repository\ctrl(), ILIAS\FileDelivery\http(), ILIAS\Repository\lng(), and ILIAS\Repository\refinery().

+ Here is the call graph for this function:

◆ saveSortingObject()

ilObjCourseGUI::saveSortingObject ( )

Reimplemented from ilContainerGUI.

Definition at line 2894 of file class.ilObjCourseGUI.php.

2894 : void
2895 {
2896 $post_position = (array) ($this->http->request()->getParsedBody()['position'] ?? []);
2897 if (isset($post_position['lobj'])) {
2898 $lobj = $post_position['lobj'];
2899 $objective_order = array();
2900 foreach ($lobj as $objective_id => $materials) {
2901 $objective_order[$objective_id] = $materials[0];
2902 unset($lobj[$objective_id][0]);
2903 }
2904 // objective order
2905 asort($objective_order);
2906 $pos = 0;
2907 foreach (array_keys($objective_order) as $objective_id) {
2908 $obj = new ilCourseObjective($this->object, $objective_id);
2909 $obj->writePosition(++$pos);
2910 }
2911
2912 // material order
2913 foreach ($lobj as $objective_id => $materials) {
2914 $objmat = new ilCourseObjectiveMaterials($objective_id);
2915
2916 asort($materials);
2917 $pos = 0;
2918 foreach (array_keys($materials) as $ass_id) {
2919 $objmat->writePosition($ass_id, ++$pos);
2920 }
2921 }
2922 }
2923 parent::saveSortingObject();
2924 }
class ilCourseObjectiveMaterials
class ilcourseobjective

References $ass_id, and ILIAS\FileDelivery\http().

+ Here is the call graph for this function:

◆ sendFileObject()

ilObjCourseGUI::sendFileObject ( )

Definition at line 1398 of file class.ilObjCourseGUI.php.

1398 : void
1399 {
1400 $file_id = 0;
1401 if ($this->http->wrapper()->query()->has('file_id')) {
1402 $file_id = $this->http->wrapper()->query()->retrieve(
1403 'file_id',
1404 $this->refinery->kindlyTo()->int()
1405 );
1406 }
1407 $file = new ilCourseFile($file_id);
1408 ilFileDelivery::deliverFileLegacy($file->getAbsolutePath(), $file->getFileName(), $file->getFileType());
1409 }
static deliverFileLegacy(string $a_file, ?string $a_filename=null, ?string $a_mime=null, ?bool $isInline=false, ?bool $removeAfterDelivery=false, ?bool $a_exit_after=true)

References ilFileDelivery\deliverFileLegacy(), ILIAS\FileDelivery\http(), and ILIAS\Repository\refinery().

+ Here is the call graph for this function:

◆ setContentSubTabs()

ilObjCourseGUI::setContentSubTabs ( )

@inheritDoc

Reimplemented from ilContainerGUI.

Definition at line 2686 of file class.ilObjCourseGUI.php.

2686 : void
2687 {
2688 global $DIC;
2689
2690 $ilAccess = $DIC['ilAccess'];
2691 $lng = $DIC['lng'];
2692 $ilCtrl = $DIC['ilCtrl'];
2693
2694 if ($this->object->getType() != 'crs') {
2695 return;
2696 }
2697 if (!$this->access->checkAccess(
2698 'write',
2699 '',
2700 $this->object->getRefId(),
2701 'crs',
2702 $this->object->getId()
2703 )) {
2704 $is_tutor = false;
2705 // No further tabs if objective view or archives
2706 if ($this->object->enabledObjectiveView()) {
2707 return;
2708 }
2709 } else {
2710 $is_tutor = true;
2711 }
2712
2713 if (!$this->isActiveAdministrationPanel()) {
2714 $this->tabs_gui->addSubTab(
2715 "view_content",
2716 $lng->txt("view"),
2717 $this->ctrl->getLinkTargetByClass("ilobjcoursegui", "view")
2718 );
2719 } else {
2720 $this->tabs_gui->addSubTab(
2721 "view_content",
2722 $lng->txt("view"),
2723 $this->ctrl->getLinkTargetByClass("ilobjcoursegui", "disableAdministrationPanel")
2724 );
2725 }
2726 //}
2727
2728 $this->addStandardContainerSubTabs(false);
2729 }
addStandardContainerSubTabs(bool $a_include_view=true)
Add standard container subtabs for view, manage, oderdering and text/media editor link.

References $DIC, $lng, ILIAS\Repository\access(), and ILIAS\Repository\object().

+ Here is the call graph for this function:

◆ setLPSyncObject()

ilObjCourseGUI::setLPSyncObject ( )
protected

Definition at line 914 of file class.ilObjCourseGUI.php.

914 : void
915 {
916 $this->object->setStatusDetermination(ilObjCourse::STATUS_DETERMINATION_LP);
917 $this->object->update();
918 $this->object->syncMembersStatusWithLP();
919 $this->tpl->setOnScreenMessage('success', $this->lng->txt("settings_saved"), true);
920 $this->ctrl->redirect($this, "edit");
921 }

References ILIAS\Repository\ctrl(), ILIAS\Repository\lng(), and ilObjCourse\STATUS_DETERMINATION_LP.

+ Here is the call graph for this function:

◆ setSideColumnReturn()

ilObjCourseGUI::setSideColumnReturn ( )

@inheritDoc

Reimplemented from ilContainerGUI.

Definition at line 3066 of file class.ilObjCourseGUI.php.

3066 : void
3067 {
3068 $this->ctrl->setReturn($this, "view");
3069 }

References ILIAS\Repository\ctrl().

+ Here is the call graph for this function:

◆ setSubTabs()

ilObjCourseGUI::setSubTabs ( string  $a_tab)

Definition at line 1411 of file class.ilObjCourseGUI.php.

1411 : void
1412 {
1413 switch ($a_tab) {
1414 case "properties":
1415 $this->tabs_gui->addSubTabTarget(
1416 "crs_settings",
1417 $this->ctrl->getLinkTarget($this, 'edit'),
1418 "edit",
1419 get_class($this)
1420 );
1421
1422 $this->tabs_gui->addSubTabTarget(
1423 "crs_info_settings",
1424 $this->ctrl->getLinkTarget($this, 'editInfo'),
1425 "editInfo",
1426 get_class($this)
1427 );
1428
1429 $this->tabs_gui->addSubTabTarget(
1430 "preconditions",
1431 $this->ctrl->getLinkTargetByClass('ilConditionHandlerGUI', 'listConditions'),
1432 "",
1433 "ilConditionHandlerGUI"
1434 );
1435
1436 $this->tabs_gui->addSubTabTarget(
1437 "crs_start_objects",
1438 $this->ctrl->getLinkTargetByClass('ilContainerStartObjectsGUI', 'listStructure'),
1439 "listStructure",
1440 get_class($this)
1441 );
1442
1443 $this->tabs_gui->addSubTabTarget(
1444 'groupings',
1445 $this->ctrl->getLinkTargetByClass('ilobjcoursegroupinggui', 'listGroupings'),
1446 'listGroupings',
1447 get_class($this)
1448 );
1449 $lti_settings = new ilLTIProviderObjectSettingGUI($this->object->getRefId());
1450 if ($lti_settings->hasSettingsAccess()) {
1451 $this->tabs_gui->addSubTabTarget(
1452 'lti_provider',
1453 $this->ctrl->getLinkTargetByClass(ilLTIProviderObjectSettingGUI::class)
1454 );
1455 }
1456
1457 // map settings
1458 if (ilMapUtil::isActivated()) {
1459 $this->tabs_gui->addSubTabTarget(
1460 "crs_map_settings",
1461 $this->ctrl->getLinkTarget($this, 'editMapSettings'),
1462 "editMapSettings",
1463 get_class($this)
1464 );
1465 }
1466
1467 // only show if export permission is granted
1468 if (ilPrivacySettings::getInstance()->checkExportAccess($this->object->getRefId()) || ilCourseDefinedFieldDefinition::_hasFields($this->object->getId())) {
1469 $this->tabs_gui->addSubTabTarget(
1470 'crs_custom_user_fields',
1471 $this->ctrl->getLinkTargetByClass('ilobjectcustomuserfieldsgui'),
1472 '',
1473 'ilobjectcustomuserfieldsgui'
1474 );
1475 }
1476
1477 // certificates
1478 $validator = new ilCertificateActiveValidator();
1479 if (true === $validator->validate()) {
1480 $this->tabs_gui->addSubTabTarget(
1481 "certificate",
1482 $this->ctrl->getLinkTargetByClass("ilcertificategui", "certificateeditor"),
1483 "",
1484 "ilcertificategui"
1485 );
1486 }
1487 // news settings
1488 if ($this->object->getUseNews()) {
1489 $this->tabs_gui->addSubTab(
1490 'obj_news_settings',
1491 $this->lng->txt("cont_news_settings"),
1492 $this->ctrl->getLinkTargetByClass('ilcontainernewssettingsgui')
1493 );
1494 }
1495 if ($this->object->getShowMembersExport()) {
1496 $this->tabs_gui->addSubTab(
1497 'export_members',
1498 $this->lng->txt('crs_show_member_export_settings'),
1499 $this->ctrl->getLinkTargetByClass('ilmemberexportsettingsgui', '')
1500 );
1501 }
1502 $this->tabs_gui->addSubTabTarget(
1503 "obj_multilinguality",
1504 $this->ctrl->getLinkTargetByClass(TranslationGUI::class, ""),
1505 "",
1506 TranslationGUI::class
1507 );
1508 break;
1509 }
1510 }

References ilCourseDefinedFieldDefinition\_hasFields(), ILIAS\Repository\ctrl(), ilPrivacySettings\getInstance(), ilMapUtil\isActivated(), ILIAS\Repository\lng(), and ILIAS\Repository\object().

Referenced by editMapSettingsObject(), editObject(), and executeCommand().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ showPossibleSubObjects()

ilObjCourseGUI::showPossibleSubObjects ( )
protected

@inheritDoc

Reimplemented from ilContainerGUI.

Definition at line 1515 of file class.ilObjCourseGUI.php.

1515 : void
1516 {
1517 if (
1518 $this->object->getViewMode() == ilContainer::VIEW_OBJECTIVE &&
1519 !$this->isActiveAdministrationPanel()) {
1520 return;
1521 }
1522 $this->renderAddNewItem();
1523 }
renderAddNewItem(string ... $disabled_object_types)

References ILIAS\Repository\object(), renderAddNewItem(), and ilContainer\VIEW_OBJECTIVE.

+ Here is the call graph for this function:

◆ unsubscribeObject()

ilObjCourseGUI::unsubscribeObject ( )

Definition at line 1719 of file class.ilObjCourseGUI.php.

1719 : void
1720 {
1721 $this->leaveObject();
1722 }

References leaveObject().

+ Here is the call graph for this function:

◆ updateInfoObject()

ilObjCourseGUI::updateInfoObject ( )
Todo:
switch to form

Definition at line 582 of file class.ilObjCourseGUI.php.

582 : void
583 {
584 $this->checkPermission('write');
585
586 $form = $this->initInfoEditor();
587 if ($form->checkInput()) {
588 $this->object->setImportantInformation((string) $form->getInput('important'));
589 $this->object->setSyllabus((string) $form->getInput('syllabus'));
590 $this->object->setTargetGroup((string) $form->getInput('target_group'));
591 $this->object->setContactName((string) $form->getInput('contact_name'));
592 $this->object->setContactResponsibility((string) $form->getInput('contact_responsibility'));
593 $this->object->setContactPhone((string) $form->getInput('contact_phone'));
594 $this->object->setContactEmail((string) $form->getInput('contact_email'));
595 $this->object->setContactConsultation((string) $form->getInput('contact_consultation'));
596
597 $file_info = $form->getInput('file');
598 $file_name = $form->getItemByPostVar('file')->getFilename();
599 $file_name = ilFileUtils::getValidFilename($file_name);
600
601 $file_obj = new ilCourseFile();
602 $file_obj->setCourseId($this->object->getId());
603 $file_obj->setFileName((string) $file_name);
604 $file_obj->setFileSize((int) $file_info['size']);
605 $file_obj->setFileType((string) $file_info['type']);
606 $file_obj->setTemporaryName((string) $file_info['tmp_name']);
607 $file_obj->setErrorCode((int) $file_info['error']);
608
609 $error = false;
610 $this->error->setMessage('');
611 $file_obj->validate();
612 $this->object->validateInfoSettings();
613 if (strlen($this->error->getMessage())) {
614 $error = $this->error->getMessage();
615 }
616 if (!$this->record_gui->importEditFormPostValues()) {
617 $error = true;
618 }
619 if ($error) {
620 if ($error !== true) {
621 $this->tpl->setOnScreenMessage('failure', $this->error->getMessage());
622 }
624 $this->editInfoObject($form);
625 return;
626 }
627 $this->object->update();
628 $file_obj->create();
629 $this->record_gui->writeEditForm();
630
631 // Update ecs content
632 $ecs = new ilECSCourseSettings($this->object);
633 $ecs->handleContentUpdate();
634
635 $this->tpl->setOnScreenMessage('success', $this->lng->txt("crs_settings_saved"));
636 $this->editInfoObject();
637 } else {
638 $this->tpl->setOnScreenMessage(
640 $this->lng->txt('settings_saved')
641 );
642 }
643 }
static getValidFilename(string $a_filename)
getInput(string $a_post_var, bool $ensureValidation=true)
Returns the input of an item, if item provides getInput method and as fallback the value of the HTTP-...
getItemByPostVar(string $a_post_var)

References ilContainerGUI\$error, ilContainerGUI\$form, ilPropertyFormGUI\checkInput(), ilObjectGUI\checkPermission(), error(), ilPropertyFormGUI\getInput(), ilPropertyFormGUI\getItemByPostVar(), ilFileUtils\getValidFilename(), initInfoEditor(), ILIAS\Repository\lng(), ILIAS\UICore\GlobalTemplate\MESSAGE_TYPE_SUCCESS, ILIAS\Repository\object(), and ilPropertyFormGUI\setValuesByPost().

+ Here is the call graph for this function:

◆ updateLPFromStatus()

ilObjCourseGUI::updateLPFromStatus ( int  $a_member_id,
bool  $a_has_passed 
)

sync course status and lp status

Definition at line 1658 of file class.ilObjCourseGUI.php.

1658 : void
1659 {
1661 $this->object->getStatusDetermination() == ilObjCourse::STATUS_DETERMINATION_LP) {
1662 $olp = ilObjectLP::getInstance($this->object->getId());
1663 if ($olp->getCurrentMode() == ilLPObjSettings::LP_MODE_MANUAL_BY_TUTOR) {
1664 $marks = new ilLPMarks($this->object->getId(), $a_member_id);
1665
1666 // only if status has changed
1667 if ($marks->getCompleted() !== $a_has_passed) {
1668 $marks->setCompleted($a_has_passed);
1669 $marks->update();
1670
1671 // as course is origin of LP status change, block syncing
1673 ilLPStatusWrapper::_updateStatus($this->object->getId(), $a_member_id);
1674 }
1675 }
1676 }
1677 }
static setBlockedForLP(bool $a_status)
Toggle LP blocking property status.
static _updateStatus(int $a_obj_id, int $a_usr_id, ?object $a_obj=null, bool $a_percentage=false, bool $a_force_raise=false)

References ilObjUserTracking\_enabledLearningProgress(), ilLPStatusWrapper\_updateStatus(), ilObjectLP\getInstance(), ilLPObjSettings\LP_MODE_MANUAL_BY_TUTOR, ILIAS\Repository\object(), ilCourseAppEventListener\setBlockedForLP(), and ilObjCourse\STATUS_DETERMINATION_LP.

+ Here is the call graph for this function:

◆ updateObject()

ilObjCourseGUI::updateObject ( )

updates object entry in object_data

Reimplemented from ilObjectGUI.

Definition at line 645 of file class.ilObjCourseGUI.php.

645 : void
646 {
647 $obj_service = $this->getObjectService();
648 $setting = $this->settings;
649
650 $form = $this->initEditForm();
651
652 if (!$form->checkInput()) {
654 $this->tpl->setOnScreenMessage('failure', $GLOBALS['DIC']->language()->txt('err_check_input'));
655 $this->editObject($form);
656 return;
657 }
658
659 // Additional checks: subsription min/max
660 if (
661 $form->getInput('subscription_max') &&
662 $form->getInput('subscription_min') &&
663 ($form->getInput('subscription_max') < $form->getInput('subscription_min'))
664 ) {
665 $min = $form->getItemByPostVar('subscription_min');
666 $min->setAlert($this->lng->txt('crs_subscription_min_members_err'));
667 $this->tpl->setOnScreenMessage('failure', $GLOBALS['DIC']->language()->txt('err_check_input'));
668 $this->editObject($form);
669 return;
670 }
671
672 // Additional checks: both tile and objective view activated (not supported)
673 if (
674 $form->getInput('list_presentation') == "tile" &&
676 $this->tpl->setOnScreenMessage(
677 'failure',
678 $GLOBALS['DIC']->language()->txt('crs_tile_and_objective_view_not_supported')
679 );
680 $this->editObject($form);
681 return;
682 }
683
684 // Additional checks: both tile and session limitation activated (not supported)
685 if ($form->getInput('sl') == "1" &&
686 $form->getInput('list_presentation') == "tile") {
687 $this->tpl->setOnScreenMessage(
688 'failure',
689 $GLOBALS['DIC']->language()->txt('crs_tile_and_session_limit_not_supported')
690 );
691 $this->editObject($form);
692 return;
693 }
694
695 // check successful
696 // title/desc
697 $this->object->setTitle($form->getInput('title'));
698 $this->object->setDescription($form->getInput('desc'));
699
700 // period
701 $crs_period = $form->getItemByPostVar("period");
702
703 $this->object->setCoursePeriod(
704 $crs_period->getStart(),
705 $crs_period->getEnd()
706 );
707
708 // activation period
709 $period = $form->getItemByPostVar("access_period");
710 if ($period->getStart() && $period->getEnd()) {
711 $this->object->setActivationStart($period->getStart()->get(IL_CAL_UNIX));
712 $this->object->setActivationEnd($period->getEnd()->get(IL_CAL_UNIX));
713 $this->object->setActivationVisibility((int) $form->getInput('activation_visibility'));
714 } else {
715 $this->object->setActivationStart(0);
716 $this->object->setActivationEnd(0);
717 }
718
719 // subscription settings
720 $this->object->setSubscriptionPassword($form->getInput('subscription_password'));
721 $this->object->setSubscriptionStart(0);
722 $this->object->setSubscriptionEnd(0);
723
724 $sub_type = (int) $form->getInput('subscription_type');
725 $sub_reg_type = (int) $form->getInput('subscription_limitation_type');
726 $sub_period = $form->getItemByPostVar('subscription_period');
727
728 $this->object->setSubscriptionType(
730 ? $sub_type
732 );
734 if ($sub_period->getStart() && $sub_period->getEnd()) {
735 $this->object->setSubscriptionLimitationType(ilCourseConstants::IL_CRS_SUBSCRIPTION_LIMITED);
736 $this->object->setSubscriptionStart($sub_period->getStart()->get(IL_CAL_UNIX));
737 $this->object->setSubscriptionEnd($sub_period->getEnd()->get(IL_CAL_UNIX));
738 } else {
739 $this->object->setSubscriptionLimitationType(ilCourseConstants::IL_CRS_SUBSCRIPTION_UNLIMITED);
740 }
741 } else {
742 $this->object->setSubscriptionType(ilCourseConstants::IL_CRS_SUBSCRIPTION_DIRECT);
743 $this->object->setSubscriptionLimitationType(ilCourseConstants::IL_CRS_SUBSCRIPTION_DEACTIVATED);
744 }
745
746 // registration code
747 $this->object->enableRegistrationAccessCode((bool) $form->getInput('reg_code_enabled'));
748 $this->object->setRegistrationAccessCode($form->getInput('reg_code'));
749
750 // cancellation end
751 $this->object->setCancellationEnd($form->getItemByPostVar("cancel_end")->getDate());
752
753 // waiting list
754 $this->object->enableSubscriptionMembershipLimitation((bool) $form->getInput('subscription_membership_limitation'));
755 $this->object->setSubscriptionMaxMembers((int) $form->getInput('subscription_max'));
756 $this->object->setSubscriptionMinMembers((int) $form->getInput('subscription_min'));
757 switch ((int) $form->getInput('waiting_list')) {
758 case 2:
759 $this->object->enableWaitingList(true);
760 $this->object->setWaitingListAutoFill(true);
761 break;
762
763 case 1:
764 $this->object->enableWaitingList(true);
765 $this->object->setWaitingListAutoFill(false);
766 break;
767
768 default:
769 $this->object->enableWaitingList(false);
770 $this->object->setWaitingListAutoFill(false);
771 break;
772 }
773 $this->object->handleAutoFill();
774
775 $property_online = $this->object->getObjectProperties()->getPropertyIsOnline();
776 $online = $form->getInput('activation_online') ? $property_online->withOnline() : $property_online->withOffline();
777 $this->object->getObjectProperties()->storePropertyIsOnline($online);
778
779 $obj_service->commonSettings()->legacyForm($form, $this->object)->saveTitleIconVisibility();
780 $obj_service->commonSettings()->legacyForm($form, $this->object)->saveTopActionsVisibility();
781 ilContainer::_writeContainerSetting($this->object->getId(), "rep_breacrumb", $form->getInput('rep_breacrumb'));
782 $obj_service->commonSettings()->legacyForm($form, $this->object)->saveIcon();
783 $obj_service->commonSettings()->legacyForm($form, $this->object)->saveTileImage();
785
786 $this->object->setViewMode((int) $form->getInput('view_mode'));
787 if ($this->object->getViewMode() == ilCourseConstants::IL_CRS_VIEW_TIMING) {
788 $this->object->setOrderType(ilContainer::SORT_ACTIVATION);
789 $this->object->setTimingMode((int) $form->getInput('timing_mode'));
790 }
791 $this->object->setTimingMode((int) $form->getInput('timing_mode'));
792 $this->object->setOrderType((int) $form->getInput('sorting'));
794
795 $this->log->debug(
796 "\n\n\nValue: " . (int) $form->getInput('tutorial_support_block_checkbox') . "\n\n\n"
797 );
798 $this->object->setTutorialSupportBlockSettingValue(
799 (int) $form->getInput('tutorial_support_block_checkbox')
800 );
801
802 $this->object->setAboStatus((bool) $form->getInput('abo'));
803 $this->object->setShowMembers((bool) $form->getInput('show_members'));
804
805 if (\ilPrivacySettings::getInstance()->participantsListInCoursesEnabled()) {
806 $this->object->setShowMembersExport((bool) $form->getInput('show_members_export'));
807 }
808 $this->object->setMailToMembersType((int) $form->getInput('mail_type'));
809
810 $this->object->enableSessionLimit((int) $form->getInput('sl'));
811
812 $session_sp = $form->getInput('sp');
813 $this->object->setNumberOfPreviousSessions(is_numeric($session_sp) ? (int) $session_sp : -1);
814 $session_sn = $form->getInput('sn');
815 $this->object->setNumberOfnextSessions(is_numeric($session_sn) ? (int) $session_sn : -1);
816 $this->object->setAutoNotification($form->getInput('auto_notification') == 1 ? true : false);
817
818 // lp sync
819 $show_lp_sync_confirmation = false;
820
821 // could be hidden in form
822 if ($this->http->wrapper()->post()->has('status_dt')) {
823 $status_dt = $this->http->wrapper()->post()->retrieve(
824 'status_dt',
825 $this->refinery->kindlyTo()->int()
826 );
827 if (
828 $this->object->getStatusDetermination() != ilObjCourse::STATUS_DETERMINATION_LP &&
830 ) {
831 $show_lp_sync_confirmation = true;
832 } else {
833 $this->object->setStatusDetermination($status_dt);
834 }
835 }
836
837 $this->object->update();
838
840 $this->object->getId(),
841 $form,
842 $this->getSubServices()
843 );
844
845 ilChangeEvent::_recordWriteEvent($this->object->getId(), $this->user->getId(), 'update');
846
847 // lp sync confirmation required
848 if ($show_lp_sync_confirmation) {
849 $this->confirmLPSync();
850 return;
851 }
852
853 // Update ecs export settings
854 $ecs = new ilECSCourseSettings($this->object);
855 if (!$ecs->handleSettingsUpdate($form)) {
857 $this->tpl->setOnScreenMessage('failure', $GLOBALS['DIC']->language()->txt('err_check_input'));
858 $this->editObject($form);
859 return;
860 }
861
862 // 29589
863 if (
865 (
866 !is_null($sub_period->getStart()) ||
867 !is_null($sub_period->getEnd())
868 )
869 ) {
870 $this->tpl->setOnScreenMessage(
871 'failure',
872 $this->lng->txt('crs_msg_no_self_registration_period_if_self_enrolment_disabled'),
873 true
874 );
876 $this->tpl->setOnScreenMessage('failure', $GLOBALS['DIC']->language()->txt('err_check_input'));
877 $this->editObject($form);
878 return;
879 }
880
881 $this->afterUpdate();
882 }
afterUpdate()
Post (successful) object update hook.
saveListPresentation(ilPropertyFormGUI $form)
saveSortingSettings(ilPropertyFormGUI $form)
static _writeContainerSetting(int $a_id, string $a_keyword, string $a_value)
static updateServiceSettingsForm(int $obj_id, ilPropertyFormGUI $form, array $services)

References ilContainerGUI\$form, $GLOBALS, ilObjectGUI\$settings, ilChangeEvent\_recordWriteEvent(), ilContainer\_writeContainerSetting(), ilContainerGUI\afterUpdate(), ilPropertyFormGUI\checkInput(), confirmLPSync(), ilObjectGUI\editObject(), ilPropertyFormGUI\getInput(), ilPrivacySettings\getInstance(), ilPropertyFormGUI\getItemByPostVar(), ilObjectGUI\getObjectService(), ILIAS\FileDelivery\http(), IL_CAL_UNIX, ilCourseConstants\IL_CRS_SUBSCRIPTION_DEACTIVATED, ilCourseConstants\IL_CRS_SUBSCRIPTION_DIRECT, ilCourseConstants\IL_CRS_SUBSCRIPTION_LIMITED, ilCourseConstants\IL_CRS_SUBSCRIPTION_UNLIMITED, ilCourseConstants\IL_CRS_VIEW_OBJECTIVE, ilCourseConstants\IL_CRS_VIEW_TIMING, initEditForm(), ILIAS\Repository\int(), ILIAS\UI\examples\Symbol\Glyph\Language\language(), ILIAS\Repository\lng(), ILIAS\Repository\object(), ILIAS\Repository\refinery(), ilContainerGUI\saveListPresentation(), ilContainerGUI\saveSortingSettings(), ilPropertyFormGUI\setValuesByPost(), ilContainer\SORT_ACTIVATION, ilObjCourse\STATUS_DETERMINATION_LP, and ilObjectServiceSettingsGUI\updateServiceSettingsForm().

+ Here is the call graph for this function:

Field Documentation

◆ $data_factory

ilDataFactory ilObjCourseGUI::$data_factory
protected

Definition at line 64 of file class.ilObjCourseGUI.php.

◆ $help

ilHelpGUI ilObjCourseGUI::$help
protected

Definition at line 62 of file class.ilObjCourseGUI.php.

◆ $http

GlobalHttpState ilObjCourseGUI::$http
protected

Definition at line 60 of file class.ilObjCourseGUI.php.

Referenced by _goto().

◆ $logger

ilLogger ilObjCourseGUI::$logger
private

Definition at line 59 of file class.ilObjCourseGUI.php.

◆ $navigation_history

ilNavigationHistory ilObjCourseGUI::$navigation_history
protected

Definition at line 63 of file class.ilObjCourseGUI.php.

◆ $news

News ilObjCourseGUI::$news
protected

Definition at line 54 of file class.ilObjCourseGUI.php.

◆ $record_gui

ilAdvancedMDRecordGUI ilObjCourseGUI::$record_gui = null
private

Definition at line 56 of file class.ilObjCourseGUI.php.

Referenced by infoScreen().

◆ $refinery

Factory ilObjCourseGUI::$refinery
protected

Definition at line 61 of file class.ilObjCourseGUI.php.

Referenced by _goto().

◆ $start_obj

ilContainerStartObjects ilObjCourseGUI::$start_obj = null
private

Definition at line 57 of file class.ilObjCourseGUI.php.

◆ BREADCRUMB_CRS_ONLY

const ilObjCourseGUI::BREADCRUMB_CRS_ONLY = 1

Definition at line 52 of file class.ilObjCourseGUI.php.

◆ BREADCRUMB_DEFAULT

const ilObjCourseGUI::BREADCRUMB_DEFAULT = 0

Definition at line 51 of file class.ilObjCourseGUI.php.

Referenced by ilLocatorGUI\addRepositoryItems().

◆ BREADCRUMB_FULL_PATH

const ilObjCourseGUI::BREADCRUMB_FULL_PATH = 2

Definition at line 53 of file class.ilObjCourseGUI.php.

Referenced by ilLocatorGUI\addRepositoryItems().


The documentation for this class was generated from the following file: