19declare(strict_types=1);
60 public function __construct($a_data,
int $a_id,
bool $a_call_by_reference,
bool $a_prepare_output =
false)
67 $this->
lng->loadLanguageModule(
'grp');
68 $this->
lng->loadLanguageModule(
'obj');
70 $this->rbacsystem =
$DIC->rbac()->system();
71 $this->news =
$DIC->news();
72 $this->
profile = $DIC[
'user']->getProfile();
77 if ($this->
http->wrapper()->query()->has(
'ref_id')) {
78 return $this->
http->wrapper()->query()->retrieve(
93 $ilNavigationHistory =
$DIC[
'ilNavigationHistory'];
97 $next_class = $this->
ctrl->getNextClass($this);
98 $cmd = $this->
ctrl->getCmd();
103 $ilNavigationHistory->addItem(
105 ilLink::_getLink(
$ref_id,
"grp"),
111 if ($next_class ==
"" && $cmd ==
"" && $this->
object->isNewsTimelineLandingPageEffective()
112 && $this->access->checkAccess(
"read",
"",
$ref_id)) {
113 $this->
ctrl->redirectByClass(
"ilnewstimelinegui");
116 $header_action =
true;
117 switch ($next_class) {
118 case strtolower(ilRepositoryTrashGUI::class):
119 $ru = new \ilRepositoryTrashGUI($this);
120 $this->
ctrl->setReturn($this,
'trash');
121 $this->
ctrl->forwardCommand($ru);
124 case 'illtiproviderobjectsettinggui':
126 $this->tabs_gui->activateTab(
'settings');
127 $this->tabs_gui->activateSubTab(
'lti_provider');
130 $lti_gui->offerLTIRolesForSelection(
false);
131 $this->
ctrl->forwardCommand($lti_gui);
135 case 'ilgroupmembershipgui':
137 $this->tabs_gui->activateTab(
'members');
140 $this->
ctrl->forwardCommand($mem_gui);
144 case 'ilgroupregistrationgui':
145 $this->
ctrl->setReturn($this,
'');
146 $this->tabs_gui->setTabActive(
'join');
148 $this->
ctrl->forwardCommand($registration);
151 case 'ilpermissiongui':
152 $this->tabs_gui->activateTab(
'perm_settings');
154 $this->
ctrl->forwardCommand($perm_gui);
157 case "ilinfoscreengui":
161 case "illearningprogressgui":
163 if ($this->
http->wrapper()->query()->has(
'user_id')) {
171 $this->
object->getRefId(),
174 $this->
ctrl->forwardCommand($new_gui);
175 $this->tabs_gui->setTabActive(
'learning_progress');
178 case 'ilobjcoursegroupinggui':
180 $this->
ctrl->setReturn($this,
'edit');
182 if ($this->
http->wrapper()->query()->has(
'obj_id')) {
183 $obj_id = $this->
http->wrapper()->query()->retrieve(
189 $this->
ctrl->forwardCommand($crs_grp_gui);
190 $this->tabs_gui->setTabActive(
'settings');
191 $this->tabs_gui->setSubTabActive(
'groupings');
194 case 'ilcoursecontentgui':
196 $this->
ctrl->forwardCommand($course_content_obj);
199 case strtolower(PublicProfileGUI::class):
201 $this->tabs_gui->setTabActive(
'group_members');
202 $this->tabs_gui->setSubTabActive(
'grp_members_gallery');
204 if ($this->
http->wrapper()->query()->has(
'user')) {
205 $usr_id = $this->
http->wrapper()->query()->retrieve(
212 if ($this->
http->wrapper()->query()->has(
'back_url')) {
213 $back_url = $this->
http->wrapper()->query()->retrieve(
215 $this->
refinery->kindlyTo()->string()
218 if ($back_url ==
'') {
219 $profile_gui->setBackUrl($this->
ctrl->getLinkTargetByClass([
"ilGroupMembershipGUI",
"ilUsersGalleryGUI"],
'view'));
221 $html = $this->
ctrl->forwardCommand($profile_gui);
222 $this->tpl->setVariable(
"ADM_CONTENT",
$html);
226 $this->tabs_gui->setTabActive(
'none');
228 $this->tpl->setVariable(
229 "LOCATION_CONTENT_STYLESHEET",
236 case "ilcontainerpagegui":
239 $this->tpl->setContent($ret);
241 $header_action =
false;
244 case 'ilobjectcopygui':
247 $this->
ctrl->forwardCommand($cp);
250 case "ilobjectcontentstylesettingsgui":
256 $settings_gui =
$DIC->contentStyle()->gui()
257 ->objectSettingsGUIForRefId(
261 $this->
ctrl->forwardCommand($settings_gui);
264 case 'ilobjectcustomuserfieldsgui':
267 $this->tabs_gui->setTabActive(
'settings');
268 $this->tabs_gui->activateSubTab(
'grp_custom_user_fields');
269 $this->
ctrl->forwardCommand($cdf_gui);
272 case 'ilmemberagreementgui':
273 $this->
ctrl->setReturn($this,
'');
274 $this->tabs_gui->setTabActive(
'view_content');
276 $this->
ctrl->forwardCommand($agreement);
280 $this->tabs_gui->setTabActive(
'export');
282 $exp->addFormat(
'xml');
283 $this->
ctrl->forwardCommand($exp);
286 case "ilcommonactiondispatchergui":
291 case 'ilobjectservicesettingsgui':
292 $this->
ctrl->setReturn($this,
'edit');
294 $this->tabs_gui->activateTab(
'settings');
295 $this->tabs_gui->activateSubTab(
'tool_settings');
307 case 'ilmailmembersearchgui':
310 if (!($this->
access->checkAccess(
'manage_members',
'', $this->object->getRefId()) ||
312 $this->rbacsystem->checkAccess(
'internal_mail', $mail->getMailObjectReferenceId())) {
313 $this->
error->raiseError($this->
lng->txt(
"msg_no_perm_read"), $this->error->MESSAGE);
316 $this->tabs_gui->setTabActive(
'members');
321 $this->
ctrl->forwardCommand($mail_search);
324 case 'ilbadgemanagementgui':
325 $this->tabs_gui->setTabActive(
'obj_tool_setting_badges');
327 $this->
ctrl->forwardCommand($bgui);
330 case "ilcontainernewssettingsgui":
332 $this->tabs_gui->setTabActive(
'settings');
333 $this->tabs_gui->activateSubTab(
'obj_news_settings');
335 $news_set_gui->setTimeline(
true);
336 $news_set_gui->setCronNotifications(
true);
337 $news_set_gui->setHideByDate(
true);
338 $this->
ctrl->forwardCommand($news_set_gui);
341 case "ilnewstimelinegui":
343 $this->tabs_gui->setTabActive(
'news_timeline');
345 $t->setUserEditAll($this->
access->checkAccess(
'write',
'', $this->object->getRefId(),
'grp'));
347 $this->
ctrl->forwardCommand($t);
349 $this->
user->getId(),
350 $this->object->getId(),
351 $this->object->getRefId(),
356 case "ilcontainerskillgui":
357 $this->tabs_gui->activateTab(
'obj_tool_setting_skills');
362 case 'ilcalendarpresentationgui':
364 $this->
ctrl->forwardCommand($cal);
367 case 'ilobjectmetadatagui':
368 if (!$this->
access->checkAccess(
'write',
'', $this->object->getRefId())) {
369 $this->
error->raiseError($this->
lng->txt(
'permission_denied'), $this->error->WARNING);
371 $this->tabs_gui->activateTab(
'meta_data');
376 case strtolower(TranslationGUI::class):
379 $this->
tabs->activateTab(
"settings");
393 $this->
ctrl->forwardCommand($transgui);
400 !$this->
access->checkAccess(
'visible',
'', $this->object->getRefId(),
'grp') and
401 !$this->access->checkAccess(
'read',
'', $this->object->getRefId(),
'grp')) {
402 $this->
error->raiseError($this->
lng->txt(
"msg_no_perm_read"), $this->error->MESSAGE);
406 if ($cmd ==
'infoScreenGoto') {
407 if ($this->
object->isRegistrationEnabled()) {
416 && !$this->rbacsystem->checkAccess(
'read', $this->object->getRefId()) && $cmd !=
'infoScreen')
418 || $cmd ===
'leaveWaitList') {
420 if (!$this->rbacsystem->checkAccess(
'join', $this->object->getRefId())) {
421 $this->
ctrl->redirect($this,
"infoScreen");
423 $this->
ctrl->redirectByClass(
"ilGroupRegistrationGUI",
"show");
434 if ($header_action) {
442 $this->
ctrl->redirect($this,
"");
448 $this->
ctrl->redirect($this,
"");
457 $this->
user->getId(),
458 $this->object->getId(),
459 $this->object->getRefId(),
464 parent::renderObject();
470 $this->
ctrl->redirectByClass(ilMemberAgreementGUI::class);
473 $this->tabs_gui->setTabActive(
'view_content');
479 $this->
tabs->activateTab(
"view_content");
480 parent::renderObject();
489 if ($course_ref_id = $this->tree->checkForParentType($this->object->getRefId(),
'crs')) {
493 'ilcoursecontentgui',
510 $new_object->setRegistrationType(
518 $this->tree->checkForParentType($new_object->
getRefId(),
'crs',
true) ||
519 $this->tree->checkForParentType($new_object->
getRefId(),
'grp',
true)
526 $sort->setSortMode($sort_mode);
533 $members_obj->updateNotification($this->
user->getId(), (
bool) $this->settings->get(
'mail_grp_admin_notification',
'1'));
534 $members_obj->updateContact($this->
user->getId(),
true);
536 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"object_added"),
true);
538 $this->
ctrl->setParameter($this,
"ref_id", $new_object->
getRefId());
539 $this->
ctrl->redirect($this,
'edit');
551 $this->tabs_gui->setTabActive(
'settings');
552 $this->tabs_gui->setSubTabActive(
'general');
557 $this->tpl->setVariable(
'ADM_CONTENT', $a_form->getHTML());
563 $this->
object->getRefId(),
564 (
int) $_REQUEST[
'grp_type']
567 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'settings_saved'),
true);
568 $this->
ctrl->redirect($this,
'edit');
585 if ($new_type_info) {
587 $new_type = (
int) $new_type[1];
589 $modified = ($new_type !== $old_type);
598 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'crs_tile_and_session_limit_not_supported'));
605 $this->
object->setGroupType((
int)
$form->
getInput(
'grp_type'));
606 $this->
object->setRegistrationType((
int)
$form->
getInput(
'registration_type'));
608 $this->
object->enableUnlimitedRegistration(!
$form->
getInput(
'reg_limit_time'));
609 $this->
object->enableMembershipLimitation((
bool)
$form->
getInput(
'registration_membership_limited'));
610 $this->
object->setMinMembers((
int)
$form->
getInput(
'registration_min_members'));
611 $this->
object->setMaxMembers((
int)
$form->
getInput(
'registration_max_members'));
612 $this->
object->enableRegistrationAccessCode((
bool)
$form->
getInput(
'reg_code_enabled'));
613 $this->
object->setRegistrationAccessCode(
$form->
getInput(
'reg_code'));
614 $this->
object->setViewMode((
int)
$form->
getInput(
'view_mode'));
615 $this->
object->setMailToMembersType((
int)
$form->
getInput(
'mail_type'));
616 $this->
object->setShowMembers((
bool)
$form->
getInput(
'show_members'));
617 $this->
object->setAutoNotification((
bool)
$form->
getInput(
'auto_notification'));
620 $this->
object->enableSessionLimit((
bool)
$form->
getInput(
'sl'));
622 $this->
object->setNumberOfPreviousSessions(is_numeric($session_sp) ? (
int) $session_sp : -1);
624 $this->
object->setNumberOfnextSessions(is_numeric($session_sn) ? (
int) $session_sn : -1);
628 $this->
object->setPeriod(
629 $grp_period->getStart(),
630 $grp_period->getEnd()
635 $this->
object->enableUnlimitedRegistration(
false);
637 $this->
object->enableUnlimitedRegistration(
true);
640 $this->
object->setRegistrationStart($reg->getStart());
641 $this->
object->setRegistrationEnd($reg->getEnd());
644 $this->
object->setCancellationEnd($cancel_end->getDate());
647 if ($this->
http->wrapper()->post()->has(
'waiting_list')) {
648 $waiting_list = $this->
http->wrapper()->post()->retrieve(
653 switch ($waiting_list) {
655 $this->
object->enableWaitingList(
true);
656 $this->
object->setWaitingListAutoFill(
true);
660 $this->
object->enableWaitingList(
true);
661 $this->
object->setWaitingListAutoFill(
false);
665 $this->
object->enableWaitingList(
false);
666 $this->
object->setWaitingListAutoFill(
false);
669 $this->
object->handleAutoFill();
672 $property_online = $this->
object->getObjectProperties()->getPropertyIsOnline();
674 $property_online->withOnline() :
675 $property_online->withOffline();
676 $this->
object->getObjectProperties()->storePropertyIsOnline($online);
679 $this->
object->update();
682 $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->saveTitleIconVisibility();
685 $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->saveTopActionsVisibility();
688 $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->saveIcon();
691 $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->saveTileImage();
699 $this->getSubServices()
708 $this->user->getId(),
715 $ecs->handleSettingsUpdate(
$form);
717 $this->tpl->setOnScreenMessage(
'failure',
$GLOBALS[
'DIC']->
language()->txt(
'err_check_input'));
726 if ($new_type == 0) {
727 $new_type_txt =
$GLOBALS[
'DIC'][
'lng']->txt(
'il_grp_status_open');
730 $new_type_txt = $dtpl->getPresentationTitle(
$GLOBALS[
'DIC'][
'lng']->getLangKey());
735 $confirm->setHeaderText($this->
lng->txt(
'grp_warn_grp_type_changed'));
736 $confirm->setFormAction($this->
ctrl->getFormAction($this));
740 $this->
lng->txt(
'grp_info_new_grp_type') .
': ' . $new_type_txt
742 $confirm->setConfirm($this->
lng->txt(
'grp_change_type'),
'updateGroupType');
743 $confirm->setCancel($this->
lng->txt(
'cancel'),
'edit');
745 $this->tpl->setContent($confirm->getHTML());
747 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"msg_obj_modified"),
true);
748 $this->
ctrl->redirect($this,
'edit');
764 if ($this->news->isGloballyActivated()) {
777 $this->tabs_gui->setTabActive(
'settings');
778 $this->tabs_gui->setSubTabActive(
'grp_map_settings');
781 !$this->
access->checkAccess(
"write",
"", $this->object->getRefId())) {
785 $latitude = $this->
object->getLatitude();
786 $longitude = $this->
object->getLongitude();
787 $zoom = $this->
object->getLocationZoom();
790 if ($latitude == 0 && $longitude == 0 && $zoom == 0) {
792 $latitude = $def[
"latitude"];
793 $longitude = $def[
"longitude"];
794 $zoom = $def[
"zoom"];
805 $this->
lng->txt(
"grp_enable_map"),
808 $public->setValue(
"1");
809 $public->setChecked($this->
object->getEnableGroupMap());
814 $this->
lng->txt(
"grp_map_location"),
817 $loc_prop->setLatitude((
float) $latitude);
818 $loc_prop->setLongitude((
float) $longitude);
819 $loc_prop->setZoom((
int) $zoom);
824 $this->tpl->setVariable(
"ADM_CONTENT",
$form->
getHTML());
833 if ($this->
http->wrapper()->post()->has(
'location')) {
834 $custom_transformer = $this->
refinery->custom()->transformation(
845 if ($this->
http->wrapper()->post()->has(
'enable_map')) {
846 $enable_map = $this->
http->wrapper()->post()->retrieve(
852 $this->
object->setLatitude((
string)
$location[
'latitude']);
853 $this->
object->setLongitude((
string) $location[
'longitude']);
854 $this->
object->setLocationZoom((
int) $location[
'zoom']);
855 $this->
object->setEnableGroupMap($enable_map);
856 $this->
object->update();
857 $this->
ctrl->redirect($this,
"editMapSettings");
867 $this->tabs_gui->setTabActive(
'settings');
868 $this->tabs_gui->setSubTabActive(
'grp_info_settings');
883 $area->setInfo($this->
lng->txt(
'grp_information_info'));
884 $area->setValue($this->
object->getInformation());
897 if ($this->
http->wrapper()->post()->has(
'important')) {
898 $important = $this->
http->wrapper()->post()->retrieve(
900 $this->
refinery->kindlyTo()->string()
903 $this->
object->setInformation($important);
904 $this->
object->update();
905 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"settings_saved"));
909 public function readMemberData(array $ids, ?array $selected_columns =
null): array
913 $this->show_tracking =
918 $completed = $in_progress = $failed = [];
919 if ($this->show_tracking) {
921 $this->show_tracking = $olp->isActive();
924 if ($this->show_tracking) {
930 if ($privacy->enabledGroupAccessTimes()) {
934 $do_prtf = (is_array($selected_columns) &&
935 in_array(
'prtf', $selected_columns) &&
940 $this->
ctrl->getLinkTarget($this,
"members")
951 foreach ($ids as $usr_id) {
952 $tmp_data[
'notification'] = (bool) $this->
object->members_obj->isNotificationEnabled((
int) $usr_id) ? 1 : 0;
953 $tmp_data[
'contact'] = (bool) $this->
object->members_obj->isContact((
int) $usr_id) ? 1 : 0;
955 foreach ((array) ($profile_data[$usr_id] ?? []) as $field => $value) {
956 $tmp_data[$field] = $value;
959 if ($this->show_tracking) {
960 $tmp_data[
'progress'] =
'';
961 if (in_array($usr_id, $completed)) {
963 } elseif (in_array($usr_id, $in_progress)) {
965 } elseif (in_array($usr_id, $failed)) {
972 if ($privacy->enabledGroupAccessTimes()) {
973 if (isset($progress[$usr_id][
'ts']) && ($progress[$usr_id][
'ts'] ??
false)) {
977 $tmp_data[
'access_time_unix'] = $tmp_date->get(
IL_CAL_UNIX);
979 $tmp_data[
'access_time'] = $this->
lng->txt(
'no_date');
980 $tmp_data[
'access_time_unix'] = 0;
983 $tmp_data[
'prtf'] = [];
985 $tmp_data[
'prtf'] = ($all_prtf[$usr_id] ?? []);
987 $members[$usr_id] = $tmp_data;
997 if ($part->isLastAdmin($this->user->getId())) {
998 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'grp_err_administrator_required'));
1003 $this->tabs_gui->setTabActive(
'grp_btn_unsubscribe');
1006 $cgui->setHeaderText($this->
lng->txt(
'grp_dismiss_myself'));
1007 $cgui->setFormAction($this->
ctrl->getFormAction($this));
1008 $cgui->setCancel($this->
lng->txt(
"cancel"),
"cancel");
1009 $cgui->setConfirm($this->
lng->txt(
"grp_btn_unsubscribe"),
"unsubscribe");
1010 $this->tpl->setContent($cgui->getHTML());
1016 $this->
object->members_obj->delete($this->
user->getId());
1017 $this->
object->members_obj->sendNotification(
1019 $this->
user->getId()
1021 $this->
object->members_obj->sendNotification(
1023 $this->
user->getId()
1026 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'grp_msg_membership_annulled'),
true);
1027 $this->
ctrl->setParameterByClass(
1030 $this->tree->getParentId($this->object->getRefId())
1032 $this->
ctrl->redirectByClass(
"ilrepositorygui",
"");
1037 $this->tabs_gui->addTab(
1039 $this->
lng->txt(
"content"),
1040 $this->ctrl->getLinkTarget($this,
"view")
1051 $ilHelp =
$DIC[
'ilHelp'];
1052 $ilHelp->setScreenIdComponent(
"grp");
1054 if ($this->
access->checkAccess(
'read',
'', $this->ref_id)) {
1055 if ($this->
object->isNewsTimelineEffective()) {
1056 if (!$this->
object->isNewsTimelineLandingPageEffective()) {
1059 $this->tabs_gui->addTab(
1061 $this->
lng->txt(
"cont_news_timeline_tab"),
1062 $this->ctrl->getLinkTargetByClass(
"ilnewstimelinegui",
"show")
1064 if ($this->
object->isNewsTimelineLandingPageEffective()) {
1072 $this->
access->checkAccess(
'visible',
'', $this->ref_id) ||
1073 $this->access->checkAccess(
'join',
'', $this->ref_id) ||
1074 $this->access->checkAccess(
'read',
'', $this->ref_id)
1076 $this->tabs_gui->addTarget(
1078 $this->
ctrl->getLinkTargetByClass(
1079 array(
"ilobjgroupgui",
"ilinfoscreengui"),
1090 if ($this->
access->checkAccess(
'write',
'', $this->object->getRefId())) {
1091 $this->tabs_gui->addTarget(
1093 $this->
ctrl->getLinkTarget($this,
"edit"),
1094 array(
"edit",
"editMapSettings"),
1104 $membership_gui->addMemberTab($this->tabs_gui, $is_participant);
1108 if ($this->
access->checkAccess(
'write',
'', $this->ref_id)) {
1110 $this->tabs_gui->addTarget(
1111 "obj_tool_setting_badges",
1112 $this->
ctrl->getLinkTargetByClass(
"ilbadgemanagementgui",
""),
1114 "ilbadgemanagementgui"
1121 $this->object->getId(),
1125 $this->tabs_gui->addTarget(
1126 "obj_tool_setting_skills",
1127 $this->
ctrl->getLinkTargetByClass(array(
"ilcontainerskillgui",
"ilcontskillpresentationgui"),
""),
1129 array(
"ilcontainerskillgui",
"ilcontskillpresentationgui",
"ilcontskilladmingui")
1135 $this->tabs_gui->addTarget(
1136 'learning_progress',
1137 $this->
ctrl->getLinkTargetByClass(array(
'ilobjgroupgui',
'illearningprogressgui'),
''),
1139 array(
'illplistofobjectsgui',
'illplistofsettingsgui',
'illearningprogressgui',
'illplistofprogressgui')
1144 if ($this->
access->checkAccess(
'write',
'', $this->ref_id)) {
1146 $tab_link = $md_gui->getTab();
1147 if ($tab_link !==
null) {
1148 $this->tabs_gui->addTab(
1150 $this->
lng->txt(
'meta_data'),
1158 if ($this->
access->checkAccess(
'write',
'', $this->object->getRefId())) {
1159 $this->tabs_gui->addTarget(
1161 $this->
ctrl->getLinkTargetByClass(
'ilexportgui',
''),
1170 if ($this->
access->checkAccess(
'join',
'', $this->object->getRefId()) and
1171 !$this->object->members_obj->isAssigned($this->user->getId())) {
1173 $this->tabs_gui->addTab(
1175 $this->
lng->txt(
'membership_leave'),
1176 $this->ctrl->getLinkTargetByClass(
'ilgroupregistrationgui',
'show',
'')
1179 $this->tabs_gui->addTarget(
1181 $this->
ctrl->getLinkTargetByClass(
'ilgroupregistrationgui',
"show"),
1187 if ($this->
access->checkAccess(
'leave',
'', $this->object->getRefId()) and
1188 $this->object->members_obj->isMember($this->user->getId())) {
1189 $this->tabs_gui->addTarget(
1190 "grp_btn_unsubscribe",
1191 $this->
ctrl->getLinkTarget($this,
"leave"),
1200 $this->
ctrl->redirectByClass(ilInfoScreenGUI::class,
"showSummary");
1205 $this->tabs_gui->setTabActive(
'info_short');
1213 if (strlen($this->
object->getInformation())) {
1214 $info->addSection($this->
lng->txt(
'grp_general_informations'));
1215 $info->addProperty($this->
lng->txt(
'grp_information'), nl2br(
1220 $info->enablePrivateNotes();
1221 $info->enableLearningProgress(
true);
1224 $record_gui->setInfoObject(
$info);
1225 $record_gui->parse();
1228 $info->addMetaDataSections($this->
object->getId(), 0, $this->object->getType());
1233 $contacts =
$parts->getContacts();
1234 if (count($contacts) > 0) {
1235 $info->addSection($this->
lng->txt(
"grp_mem_contacts"));
1236 foreach ($contacts as
$c) {
1238 $pgui->setBackUrl($this->
ctrl->getLinkTargetByClass(
"ilinfoscreengui"));
1239 $pgui->setEmbedded(
true);
1240 $info->addProperty(
"", $pgui->getHTML());
1245 $info->addSection($this->
lng->txt(
'group_registration'));
1246 $info->showLDAPRoleGroupMappingInfo();
1248 if (!$this->
object->isRegistrationEnabled()) {
1250 $this->
lng->txt(
'group_registration_mode'),
1251 $this->lng->txt(
'grp_reg_deac_info_screen')
1254 switch ($this->
object->getRegistrationType()) {
1257 $this->
lng->txt(
'group_registration_mode'),
1258 $this->lng->txt(
'grp_reg_direct_info_screen')
1264 $this->
lng->txt(
'group_registration_mode'),
1265 $this->lng->txt(
'grp_reg_req_info_screen')
1271 $this->
lng->txt(
'group_registration_mode'),
1272 $this->lng->txt(
'grp_reg_passwd_info_screen')
1282 if ($this->
object->isRegistrationUnlimited()) {
1284 $this->
lng->txt(
'group_registration_time'),
1285 $this->lng->txt(
'grp_registration_unlimited')
1287 } elseif ($this->
object->getRegistrationStart()->getUnixTime() < time()) {
1289 $this->
lng->txt(
"group_registration_time"),
1290 $this->lng->txt(
'cal_until') .
' ' .
1293 } elseif ($this->
object->getRegistrationStart()->getUnixTime() >= time()) {
1295 $this->
lng->txt(
"group_registration_time"),
1296 $this->lng->txt(
'cal_from') .
' ' .
1300 if ($this->
object->isMembershipLimited()) {
1301 if ($this->
object->getMinMembers()) {
1303 $this->
lng->txt(
"mem_min_users"),
1304 (
string) $this->object->getMinMembers()
1307 if ($this->
object->getMaxMembers()) {
1311 $this->
lng->txt(
'mem_free_places'),
1312 (
string) ($reg_info[
'reg_info_free_places'] ??
'0')
1317 if ($this->
object->getCancellationEnd()) {
1319 $this->
lng->txt(
'grp_cancellation_end'),
1326 !$this->object->getStart()->
isNull()
1329 $this->
lng->txt(
'grp_period'),
1331 $this->object->getStart(),
1332 $this->object->getEnd()
1343 $this->
lng->loadLanguageModule(
'ps');
1344 $info->addSection($this->
lng->txt(
'grp_user_agreement_info'));
1345 $info->addProperty($this->
lng->txt(
'ps_export_data'), $field_info->exportableFieldsToInfoString());
1348 $info->addProperty($this->
lng->txt(
'ps_grp_user_fields'), $fields);
1361 $grp_notification =
false;
1362 if ($this->
http->wrapper()->query()->has(
'grp_ntf')) {
1363 $grp_notification = $this->
http->wrapper()->query()->retrieve(
1365 $this->
refinery->kindlyTo()->bool()
1369 if ($noti->canCurrentUserEdit()) {
1370 if ($grp_notification) {
1371 $noti->activateUser();
1373 $noti->deactivateUser();
1376 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
"settings_saved"),
true);
1377 $this->
ctrl->redirect($this,
"");
1382 $this->
ctrl->redirectByClass(
'ilgroupmembershipgui');
1386 public static function _goto(
string $a_target,
string $a_add =
""): void
1389 $main_tpl =
$DIC->ui()->mainTemplate();
1390 $a_target = (
int) $a_target;
1392 $ilUser =
$DIC->user();
1393 $ilAccess =
$DIC->access();
1400 if (
$http->wrapper()->query()->has(
'target')) {
1401 $target =
$http->wrapper()->query()->retrieve(
1406 if (substr($a_add, 0, 5) ==
'rcode') {
1410 "login.php?target=" . $target .
"&cmd=force_login&lang=" .
1411 $ilUser->getCurrentLanguage()
1423 if ($a_add ==
"mem" && $ilAccess->checkAccess(
"manage_members",
"", $a_target)) {
1431 if ($ilAccess->checkAccess(
"read",
"", $a_target)) {
1435 if ($ilAccess->checkAccess(
"visible",
"", $a_target)) {
1439 $main_tpl->setOnScreenMessage(
'failure', sprintf(
1440 $lng->
txt(
"msg_no_perm_read_item"),
1456 if (!$a_omit_form_action) {
1470 $this->initFormTitleDescription(
$form);
1474 if ($a_mode ==
'edit') {
1477 $this->
lng->loadLanguageModule(
'mem');
1478 $cdur->enableToggleFullTime(
1479 $this->
lng->txt(
'mem_period_without_time'),
1480 !$this->object->getStartTimeIndication()
1482 $cdur->setShowTime(
true);
1483 $cdur->setInfo($this->
lng->txt(
'grp_period_info'));
1484 $cdur->setStart($this->
object->getStart());
1485 $cdur->setEnd($this->
object->getEnd());
1489 $this->
lng->loadLanguageModule(
'rep');
1492 $section->setTitle($this->
lng->txt(
'rep_activation_availability'));
1496 $online->setChecked(!$this->
object->getOfflineStatus());
1497 $online->setInfo($this->
lng->txt(
'grp_activation_online_info'));
1503 $pres->setTitle($this->
lng->txt(
'grp_setting_header_registration'));
1508 $reg_type->setValue((
string) $this->
object->getRegistrationType());
1511 $this->
lng->txt(
'grp_reg_direct'),
1513 );#$this->
lng->txt(
'grp_reg_direct_info'));
1514 $reg_type->addOption($opt_dir);
1517 $this->
lng->txt(
'grp_pass_request'),
1521 $pass->setRequired(
true);
1522 $pass->setInfo($this->
lng->txt(
'grp_reg_password_info'));
1523 $pass->setValue($this->
object->getPassword());
1525 $pass->setMaxLength(32);
1526 $opt_pass->addSubItem($pass);
1527 $reg_type->addOption($opt_pass);
1530 $reg_type->addOption($opt_req);
1533 $reg_type->addOption($opt_deact);
1537 $reg_code->setChecked($this->
object->isRegistrationAccessCodeEnabled());
1538 $reg_code->setValue(
'1');
1539 $reg_code->setInfo($this->
lng->txt(
'grp_reg_code_enabled_info'));
1543 if (!$this->
object->getRegistrationAccessCode()) {
1547 $reg_link->setValue($this->
object->getRegistrationAccessCode());
1551 $val = ilLink::_getLink($this->
object->getRefId(), $this->object->getType(), array(),
'rcode' . $this->
object->getRegistrationAccessCode());
1552 $link->setHTML(
'<span class="small">' . $val .
'</span>');
1553 $reg_code->addSubItem($link);
1557 $this->
lng->loadLanguageModule(
'dateplaner');
1559 $dur->setShowTime(
true);
1560 $dur->setStart($this->
object->getRegistrationStart());
1561 $dur->setEnd($this->
object->getRegistrationEnd());
1566 $cancel->setInfo($this->
lng->txt(
'grp_cancellation_end_info'));
1567 $cancel->setDate($this->
object->getCancellationEnd());
1571 $lim =
new ilCheckboxInputGUI($this->
lng->txt(
'reg_grp_max_members_short'),
'registration_membership_limited');
1572 $lim->setValue(
'1');
1574 $lim->setChecked($this->
object->isMembershipLimited());
1576 $min =
new ilTextInputGUI($this->
lng->txt(
'reg_grp_min_members'),
'registration_min_members');
1578 $min->setMaxLength(4);
1579 $min->setValue($this->
object->getMinMembers() ?:
'');
1580 $min->setInfo($this->
lng->txt(
'grp_subscription_min_members_info'));
1581 $lim->addSubItem($min);
1583 $max =
new ilTextInputGUI($this->
lng->txt(
'reg_grp_max_members'),
'registration_max_members');
1584 $max->setValue($this->
object->getMaxMembers() ?:
'');
1587 $max->setMaxLength(4);
1588 $max->setInfo($this->
lng->txt(
'grp_reg_max_members_info'));
1589 $lim->addSubItem($max);
1604 $wait->addOption($option);
1606 $option =
new ilRadioOption($this->
lng->txt(
'grp_waiting_list_no_autofill'),
'1');
1607 $option->setInfo($this->
lng->txt(
'grp_waiting_list_info'));
1608 $wait->addOption($option);
1610 $option =
new ilRadioOption($this->
lng->txt(
'grp_waiting_list_autofill'),
'2');
1611 $option->setInfo($this->
lng->txt(
'grp_waiting_list_autofill_info'));
1612 $wait->addOption($option);
1614 if ($this->
object->hasWaitingListAutoFill()) {
1615 $wait->setValue(
'2');
1616 } elseif ($this->
object->isWaitingListEnabled()) {
1617 $wait->setValue(
'1');
1619 $wait->setValue(
'0');
1622 $lim->addSubItem($wait);
1628 $parent_membership_ref_id = 0;
1629 $hasParentMembership =
1631 $parent_membership_ref_id = $this->tree->checkForParentType($this->
object->getRefId(),
'crs',
true)
1635 $pres->setTitle($this->
lng->txt(
'grp_setting_header_presentation'));
1639 $form = $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->addTitleIconVisibility();
1642 $form = $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->addTopActionsVisibility();
1645 $form = $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->addIcon();
1648 $form = $obj_service->commonSettings()->legacyForm(
$form, $this->
object)->addTileImage();
1656 if ($hasParentMembership) {
1658 $course_view_mode =
'';
1659 switch ($parent_view_mode) {
1661 $course_view_mode =
': ' . $this->
lng->txt(
'cntr_view_sessions');
1665 $course_view_mode =
': ' . $this->
lng->txt(
'cntr_view_simple');
1669 $course_view_mode =
': ' . $this->
lng->txt(
'cntr_view_by_type');
1672 if ($course_view_mode) {
1674 $opt->setInfo($this->
lng->txt(
'grp_view_inherit_info'));
1675 $view_type->addOption($opt);
1686 $opt->setInfo($this->
lng->txt(
'cntr_view_info_sessions'));
1687 $view_type->addOption($opt);
1690 $this->
lng->loadLanguageModule(
'crs');
1692 $sess->setValue(
'1');
1693 $sess->setChecked($this->
object->isSessionLimitEnabled());
1694 $sess->setInfo($this->
lng->txt(
'sess_limit_info'));
1697 $prev->setMinValue(0);
1698 $prev->setValue((
string) (
1699 $this->
object->getNumberOfPreviousSessions() == -1 ?
1701 $this->object->getNumberOfPreviousSessions()
1704 $prev->setMaxLength(3);
1705 $sess->addSubItem($prev);
1708 $next->setMinValue(0);
1709 $next->setValue((
string) (
1710 $this->
object->getNumberOfNextSessions() == -1 ?
1712 $this->object->getNumberOfNextSessions()
1715 $next->setMaxLength(3);
1716 $sess->addSubItem($next);
1717 $opt->addSubItem($sess);
1720 $opt->setInfo($this->
lng->txt(
'grp_view_info_simple'));
1721 $view_type->addOption($opt);
1724 $opt->setInfo($this->
lng->txt(
'grp_view_info_by_type'));
1725 $view_type->addOption($opt);
1730 $sorting_settings = array();
1731 if ($hasParentMembership) {
1741 $feat->setTitle($this->
lng->txt(
'obj_features'));
1747 $this->getSubServices()
1752 $mem->setChecked($this->
object->getShowMembers());
1753 $mem->setInfo($this->
lng->txt(
'grp_show_members_info'));
1758 $mail_type->setValue((
string) $this->
object->getMailToMembersType());
1761 $this->
lng->txt(
'grp_mail_tutors_only'),
1763 $this->lng->txt(
'grp_mail_tutors_only_info')
1765 $mail_type->addOption($mail_tutors);
1768 $this->
lng->txt(
'grp_mail_all'),
1770 $this->lng->txt(
'grp_mail_all_info')
1772 $mail_type->addOption($mail_all);
1777 $not->setValue(
'1');
1778 $not->setInfo($this->
lng->txt(
'grp_auto_notification_info'));
1779 $not->setChecked($this->
object->getAutoNotification());
1798 $ecs->addSettingsToForm(
$form,
'grp');
1811 $this->tabs_gui->addSubTabTarget(
1813 $this->
ctrl->getLinkTarget($this,
'edit'),
1818 $this->tabs_gui->addSubTabTarget(
1819 "grp_info_settings",
1820 $this->
ctrl->getLinkTarget($this,
'editInfo'),
1826 $this->tabs_gui->addSubTabTarget(
1828 $this->
ctrl->getLinkTarget($this,
'editMapSettings'),
1834 $this->tabs_gui->addSubTabTarget(
1836 $this->
ctrl->getLinkTargetByClass(
'ilobjcoursegroupinggui',
'listGroupings'),
1843 $this->tabs_gui->addSubTabTarget(
1844 'grp_custom_user_fields',
1845 $this->
ctrl->getLinkTargetByClass(
'ilobjectcustomuserfieldsgui'),
1847 'ilobjectcustomuserfieldsgui'
1852 if ($this->
object->getUseNews()) {
1853 $this->tabs_gui->addSubTab(
1854 'obj_news_settings',
1855 $this->
lng->txt(
"cont_news_settings"),
1856 $this->ctrl->getLinkTargetByClass(
'ilcontainernewssettingsgui')
1861 if ($lti_settings->hasSettingsAccess()) {
1862 $this->tabs_gui->addSubTabTarget(
1864 $this->
ctrl->getLinkTargetByClass(ilLTIProviderObjectSettingGUI::class)
1868 $this->tabs_gui->addSubTabTarget(
1869 "obj_multilinguality",
1870 $this->
ctrl->getLinkTargetByClass(TranslationGUI::class,
""),
1872 TranslationGUI::class
1882 if ($this->
access->checkAccess(
'write',
'', $this->object->getRefId())) {
1887 if (!$this->
object->members_obj->isAssigned($this->user->getId())) {
1914 return parent::prepareOutput($show_subobjects);
1919 $link = chr(13) . chr(10) . chr(13) . chr(10);
1920 $link .= $this->
lng->txt(
'grp_mail_permanent_link');
1921 $link .= chr(13) . chr(10) . chr(13) . chr(10);
1922 $link .= ilLink::_getLink($this->
object->getRefId());
1923 return rawurlencode(base64_encode($link));
1934 $ilUser =
$DIC[
'ilUser'];
1936 $lg = parent::initHeaderAction($sub_type, $sub_id);
1941 if (!$noti->isCurrentUserActive()) {
1945 $this->
lng->txt(
"grp_notification_deactivated")
1948 $this->
ctrl->setParameter($this,
"grp_ntf", 1);
1949 $caption =
"grp_activate_notification";
1954 $this->
lng->txt(
"grp_notification_activated")
1957 $this->
ctrl->setParameter($this,
"grp_ntf", 0);
1958 $caption =
"grp_deactivate_notification";
1961 if ($noti->canCurrentUserEdit()) {
1962 $lg->addCustomCommand(
1963 $this->
ctrl->getLinkTarget($this,
"saveNotification"),
1968 $this->
ctrl->setParameter($this,
"grp_ntf",
"");
1980 $udfs = $this->
profile->getAllUserDefinedFields();
1982 return array_reduce(
1983 $this->
profile->getDataForMultiple(array_keys($a_data)),
1984 function (array
$c, ProfileData $v) use ($a_data, $udfs, $odfs): array {
1985 $c[$v->getId()] = $a_data[$v->getId()];
1987 foreach ($udfs as $field) {
1988 $field_id = $field->getIdentifier();
1989 $c[$v->getId()][
'udf_' . $field_id] = (
string) $v->getAdditionalFieldByIdentifier($field_id);
1992 foreach ((array) ($odfs[$v->getId()] ?? []) as $cdf_field => $cdf_value) {
1993 $c[$v->getId()][
'cdf_' . $cdf_field] = (string) $cdf_value;
2002 $local_roles = $this->
object->getLocalGroupRoles();
2003 $grp_member = $this->
object->getDefaultMemberRole();
2004 $grp_roles = array();
2007 if (in_array($grp_member, $local_roles)) {
2009 unset($local_roles[$grp_roles[$grp_member]]);
2012 foreach ($local_roles as $title => $role_id) {
2020 $this->
ctrl->redirectByClass(
'ilUsersGalleryGUI');
2028 $this->
ctrl->setReturn($this,
"view");
GUI class for object translation handling.
kindlyTo()
Combined validations and transformations for primitive data types that establish a baseline for furth...
GUI class for public user profile presentation.
@ilCtrl_Calls ilBadgeManagementGUI: ilPropertyFormGUI
static _catchupWriteEvents(int $obj_id, int $usr_id, ?string $timestamp=null)
Catches up with all write events which occured before the specified timestamp.
static _recordWriteEvent(int $obj_id, int $usr_id, string $action, ?int $parent_obj_id=null)
Records a write event.
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static isAccessible(int $ref_id)
Class ilContainerGUI This is a base GUI class for all container objects in ILIAS: root folder,...
ILIAS Container InternalGUIService $gui
isActiveAdministrationPanel()
initSortingForm(ilPropertyFormGUI $form, array $a_sorting_settings)
Append sorting settings to property form.
saveListPresentation(ilPropertyFormGUI $form)
initListPresentationForm(ilPropertyFormGUI $form)
Add list presentation settings to form.
saveSortingSettings(ilPropertyFormGUI $form)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Skills for container (course/group) (top gui class)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _lookupContainerSetting(int $a_id, string $a_keyword, ?string $a_default_value=null)
Class ilCourseContentGUI.
static _getFields(int $a_container_id, $a_sort=self::IL_CDF_SORT_NAME)
Get all fields of a container.
static _fieldsToInfoString(int $a_obj_id)
static _hasFields(int $a_container_id)
Check if there are any define fields.
static _getInstanceByObjId(int $a_obj_id)
static _getValuesByObjId(int $a_obj_id)
static _checkRequired(int $a_usr_id, int $a_obj_id)
static formatDate(ilDateTime $date, bool $a_skip_day=false, bool $a_include_wd=false, bool $include_seconds=false, ?ilObjUser $user=null,)
static formatPeriod(ilDateTime $start, ilDateTime $end, bool $a_skip_starting_day=false, ?ilObjUser $user=null)
Format a period of two dates Shows: 14.
@classDescription Date and time handling
isNull()
Check if a date is null (Datetime == '0000-00-00 00:00:00', unixtime == 0,...)
static lookupTemplateId(int $a_ref_id)
static switchTemplate(int $a_ref_id, int $a_new_tpl_id)
Class ilECSGroupSettings.
static _getInstanceByType(string $a_type)
Get Singleton Instance.
Export User Interface Class.
const GRP_REGISTRATION_DEACTIVATED
const GRP_REGISTRATION_PASSWORD
const GRP_REGISTRATION_REQUEST
const GRP_REGISTRATION_DIRECT
GUI class for membership features.
const TYPE_UNSUBSCRIBE_MEMBER
const TYPE_NOTIFICATION_UNSUBSCRIBE
static _isParticipant(int $a_ref_id, int $a_usr_id)
Static function to check if a user is a participant of the container object.
static _getInstanceByObjId(int $a_obj_id)
Get singleton instance.
GUI class for group registrations.
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_NOT_ATTEMPTED
const LP_STATUS_IN_PROGRESS
GUI class for LTI provider object settings.
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
static checkAccess(int $a_ref_id, bool $a_allow_only_read=true)
check access to learning progress
const LP_CONTEXT_REPOSITORY
Class ilObjUserTrackingGUI.
static _lookupProgressByObjId(int $a_obj_id)
lookup progress for a specific object
static _tracProgress(int $a_user_id, int $a_obj_id, int $a_ref_id, string $a_obj_type='')
static getLogger(string $a_component_id)
Get component logger.
Class ilMailMemberCourseRoles.
static isActivated()
Checks whether Map feature is activated.
static getDefaultSettings()
Get default longitude, latitude and zoom.
static _hasAccepted(int $a_usr_id, int $a_obj_id)
Check if user has accepted agreement.
Membership notification settings.
static isActiveForRefId(int $ref_id)
static generateCode()
Generate new registration key.
static handleCode(int $a_ref_id, string $a_type, string $a_code)
static getInstance(int $a_ref_id, bool $a_include_auto_entries)
static _lookupViewMode(int $a_id)
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)
Class ilObjCourseGroupingGUI.
static _lookupAboStatus(int $a_id)
static lookupRegistrationInfo(int $a_obj_id)
setSubTabs(string $a_tab)
__construct($a_data, int $a_id, bool $a_call_by_reference, bool $a_prepare_output=false)
@inheritDoc
addCustomData(array $a_data)
jump2UsersGalleryObject()
initHeaderAction(?string $sub_type=null, ?int $sub_id=null)
@inheritDoc
updateObject()
updates object entry in object_data
editObject(?ilPropertyFormGUI $a_form=null)
@inheritDoc
static _goto(string $a_target, string $a_add="")
enableAdministrationPanelObject()
initForm(string $a_mode='edit', bool $a_omit_form_action=false)
disableAdministrationPanelObject()
editMapSettingsObject()
Edit Map Settings.
prepareOutput(bool $show_subobjects=true)
@inheritDoc
setSideColumnReturn()
@inheritDoc
readMemberData(array $ids, ?array $selected_columns=null)
afterSave(ilObject $new_object, bool $redirect=true)
@inheritDoc @access public
modifyItemGUI(ilObjectListGUI $a_item_list_gui, array $a_item_data)
@inheritDoc
executeCommand()
@inheritDoc
static lookupViewMode($a_obj_id)
const MAIL_ALLOWED_TUTORS
static getAvailablePortfolioLinksForUserIds(array $a_owner_ids, ?string $a_back_url=null)
static _getTranslation(string $a_role_title)
static getContentStylePath(int $a_style_id, bool $add_random=true, bool $add_token=true)
get content style path static (to avoid full reading)
static _enabledLearningProgress()
static _enabledUserRelatedData()
static _readUsersProfileData(array $a_user_ids)
GUI class for the workflow of copying objects.
addAdoptContentLinkToToolbar()
static _gotoRepositoryRoot(bool $raise_error=false)
Goto repository root.
checkPermission(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
checkPermissionBool(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
initDidacticTemplate(ilPropertyFormGUI $form)
addHeaderAction()
Add header action menu.
static _gotoRepositoryNode(int $ref_id, string $cmd="")
static getInstance(int $obj_id)
GUI class for service settings (calendar, notes, comments)
static updateServiceSettingsForm(int $obj_id, ilPropertyFormGUI $form, array $services)
const AUTO_RATING_NEW_OBJECTS
const CALENDAR_CONFIGURATION
const EXTERNAL_MAIL_PREFIX
const ORGU_POSITION_ACCESS
static initServiceSettingsForm(int $obj_id, ilPropertyFormGUI $form, array $services)
Class ilObject Basic functions for all objects.
static _lookupType(int $id, bool $reference=false)
static _lookupObjId(int $ref_id)
static _lookupTitle(int $obj_id)
static getInstance(int $a_ref_id)
This class represents an option in a radio group.
class ilRbacSystem system function like checkAccess, addActiveRole ... Supporting system functions ar...
This class represents a text area property in a property form.
This class represents a text property in a property form.
static makeClickable(string $a_text, bool $detectGotoLinks=false, ?string $ilias_http_path=null)
static getImagePath(string $image_name, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
static redirect(string $a_script)
static _isOnList(int $a_usr_id, int $a_obj_id)
if($clientAssertionType !='urn:ietf:params:oauth:client-assertion-type:jwt-bearer'|| $grantType !='client_credentials') $parts
static http()
Fetches the global http state from ILIAS.
__construct(Container $dic, ilPlugin $plugin)
@inheritDoc