19 declare(strict_types=1);
34 protected \ILIAS\DI\UIServices
$ui;
36 protected \ILIAS\FileUpload\FileUpload
$upload;
38 protected \ILIAS\HTTP\Services
$http;
70 public function __construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output =
true)
74 $this->
ctrl = $DIC->ctrl();
75 $this->
lng = $DIC->language();
76 $this->tpl = $DIC->ui()->mainTemplate();
77 $this->
user = $DIC->user();
78 $this->tree = $DIC->repositoryTree();
79 $this->
access = $DIC->access();
80 $this->
toolbar = $DIC->toolbar();
81 $this->ilErr = $DIC[
"ilErr"];
82 $this->object_service = $DIC->object();
83 $this->objDefinition = $DIC[
'objDefinition'];
84 $this->tabs_gui = $DIC->tabs();
85 $this->
locator = $DIC[
"ilLocator"];
86 $this->rbacreview = $DIC->rbac()->review();
87 $this->
event = $DIC->event();
88 $this->
upload = $DIC->upload();
89 $this->
help = $DIC->help();
90 $this->
http = $DIC->http();
96 $this->
lng->loadLanguageModule(
"event");
97 $this->
lng->loadLanguageModule(
'crs');
98 $this->
lng->loadLanguageModule(
'trac');
99 $this->
lng->loadLanguageModule(
'sess');
101 if ($this->
http->wrapper()->query()->has(
'ref_id')) {
102 $this->requested_ref_id = $this->
http->wrapper()->query()->retrieve(
108 if ($this->
http->wrapper()->query()->has(
'user_id')) {
109 $this->requested_user_id = $this->
http->wrapper()->query()->retrieve(
115 if ($this->
http->wrapper()->post()->has(
'file_id')) {
116 $this->requested_file_id = $this->
http->wrapper()->post()->retrieve(
120 } elseif ($this->
http->wrapper()->query()->has(
'file_id')) {
121 $this->requested_file_id = $this->
http->wrapper()->query()->retrieve(
127 if ($this->
http->wrapper()->query()->has(
'offset')) {
128 $this->requested_offset = $this->
http->wrapper()->query()->retrieve(
134 if ($this->
http->wrapper()->query()->has(
'sort_by')) {
135 $this->requested_sort_by = $this->
http->wrapper()->query()->retrieve(
137 $this->
refinery->kindlyTo()->string()
141 if ($this->
http->wrapper()->query()->has(
'sort_order')) {
142 $this->requested_sort_order = $this->
http->wrapper()->query()->retrieve(
144 $this->
refinery->kindlyTo()->string()
148 if ($this->
http->wrapper()->post()->has(
'items')) {
149 $this->requested_items = $this->
http->wrapper()->post()->retrieve(
151 $this->
refinery->kindlyTo()->listOf(
156 $this->
ui = $DIC->ui();
165 $next_class = $this->
ctrl->getNextClass($this);
166 $cmd = $this->
ctrl->getCmd();
170 $ilAccess->checkAccess(
'read',
'', $this->requested_ref_id)
172 $GLOBALS[
'DIC'][
'ilNavigationHistory']->addItem(
173 $this->requested_ref_id,
174 ilLink::_getLink($this->requested_ref_id,
'sess'),
176 $this->
object->getPresentationTitle()
181 switch ($next_class) {
182 case 'ilsessionmembershipgui':
183 $this->tabs_gui->activateTab(
'members');
185 $this->
ctrl->forwardCommand($mem_gui);
188 case "ilinfoscreengui":
193 case 'ilobjectmetadatagui':
195 $this->tabs_gui->activateTab(
'metadata');
197 $this->
ctrl->forwardCommand($md_gui);
200 case 'ilpermissiongui':
201 $this->tabs_gui->setTabActive(
'perm_settings');
203 $ret = $this->
ctrl->forwardCommand($perm_gui);
206 case 'ilobjectcopygui':
208 $cp->setType(
'sess');
209 $this->
ctrl->forwardCommand($cp);
213 $this->tabs_gui->setTabActive(
"export");
215 $exp_gui->addFormat(
"xml");
216 $ret = $this->
ctrl->forwardCommand($exp_gui);
219 case "ilcommonactiondispatchergui":
221 $this->
ctrl->forwardCommand($gui);
224 case 'ilmembershipgui':
225 $this->
ctrl->setReturn($this,
'members');
227 $this->
ctrl->forwardCommand($mem);
230 case "illearningprogressgui":
233 $this->
object->getRefId(),
234 $this->requested_user_id ?: $ilUser->getId()
236 $this->
ctrl->forwardCommand($new_gui);
237 $this->tabs_gui->setTabActive(
'learning_progress');
240 case "ilpropertyformgui":
242 if (!is_object($this->
object)) {
246 if ($form ===
true) {
250 $ilCtrl->forwardCommand($form);
253 case "ilbookinggatewaygui":
255 $parent_id = $tree->
getParentId($this->requested_ref_id);
257 $this->tabs_gui->activateTab(
'obj_tool_setting_booking');
259 $this->
ctrl->forwardCommand($gui);
263 if ($cmd ==
"applyFilter") {
265 } elseif ($cmd ==
"resetFilter") {
282 $this->
ctrl->redirectByClass(
'ilSessionMembershipGUI',
'participants');
297 parent::prepareOutput($show_sub_objects);
300 $title = strlen($this->
object->getTitle()) ? (
': ' . $this->
object->getTitle()) :
'';
302 $this->tpl->setTitle(
303 $this->
object->getFirstAppointment()->appointmentToString() . $title
322 $this->getCurrentObject()->isRegistrationUserLimitEnabled() &&
323 $this->getCurrentObject()->getRegistrationMaxUsers() &&
326 if (!$this->getCurrentObject()->isRegistrationWaitingListEnabled()) {
327 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'sess_reg_max_users_exceeded'),
true);
328 $this->
ctrl->redirect($this,
'infoScreen');
331 $wait->addToList($ilUser->getId());
332 $this->
ctrl->redirect($this,
'infoScreen');
336 switch ($this->getCurrentObject()->getRegistrationType()) {
338 $this->
ctrl->redirect($this,
'info');
342 $part->register($ilUser->getId());
343 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'event_registered'),
true);
345 $ilAppEventHandler->raise(
346 "components/ILIAS/Session",
349 'obj_id' => $this->getCurrentObject()->
getId(),
350 'ref_id' => $this->getCurrentObject()->
getRefId(),
351 'usr_id' => $ilUser->getId()
355 $this->
ctrl->redirect($this,
'infoScreen');
359 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'sess_registered_confirm'),
true);
360 $part->addSubscriber($ilUser->getId());
362 $ilAppEventHandler->raise(
363 "components/ILIAS/Session",
366 'obj_id' => $this->getCurrentObject()->
getId(),
367 'ref_id' => $this->getCurrentObject()->
getRefId(),
368 'usr_id' => $ilUser->getId()
372 $this->
ctrl->redirect($this,
'infoScreen');
383 if ($ilUser->isAnonymous()) {
384 $this->
ctrl->redirect($this,
'infoScreen');
390 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'event_unregistered'),
true);
393 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'event_registered'),
true);
396 $this->
ctrl->redirect($this,
'infoScreen');
407 if ($part->isSubscriber($ilUser->getId())) {
408 $part->deleteSubscriber($ilUser->getId());
411 $part->unregister($ilUser->getId());
413 if ($a_refuse_participation) {
414 $event_part = new \ilEventParticipants($this->
object->getId());
427 $this->
object->getRefId()
435 $ilAppEventHandler->raise(
436 "components/ILIAS/Session",
439 'obj_id' => $this->getCurrentObject()->
getId(),
440 'ref_id' => $this->getCurrentObject()->
getRefId(),
441 'usr_id' => $ilUser->getId()
444 if ($a_refuse_participation) {
445 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'sess_participation_refused_info'),
true);
447 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'event_unregistered'),
true);
449 $this->
ctrl->returnToParent($this);
452 public static function _goto(
string $a_target): void
455 $main_tpl = $DIC->ui()->mainTemplate();
457 $ilAccess = $DIC->access();
458 $lng = $DIC->language();
460 $ilCtrl = $DIC->ctrl();
461 $parts = explode(
'_', $a_target);
464 if ($ilAccess->checkAccess(
'write',
'', $a_target)) {
466 $ilCtrl->setTargetScript(
'ilias.php');
467 $ilCtrl->setParameterByClass(
'ilSessionMembershipGUI',
'ref_id', $a_target);
468 $ilCtrl->setTargetScript(
'ilias.php');
469 $ilCtrl->redirectByClass(array(
'ilRepositoryGUI', __CLASS__,
'ilSessionMembershipGUI'));
473 if ($ilAccess->checkAccess(
'visible',
"", $a_target)) {
476 $main_tpl->setOnScreenMessage(
'failure', sprintf(
477 $lng->
txt(
"msg_no_perm_read_item"),
491 $this->
ctrl->redirectByClass(
492 [self::class, ilInfoScreenGUI::class],
541 if (!$this->getCurrentObject()->enabledRegistrationForUsers() || $ilUser->isAnonymous()) {
547 $this->
ctrl->setParameter($this,
"ref_id", $this->getCurrentObject()->
getRefId());
550 if ($this->
object->isCannotParticipateOptionEnabled()) {
551 $btn_excused = $this->
ui->factory()->button()->standard(
552 $this->
lng->txt(
'sess_bt_refuse'),
553 $this->
ctrl->getLinkTarget($this,
'refuseParticipation')
559 if (!is_null($btn_excused)) {
560 $ilToolbar->addComponent($btn_excused);
563 } elseif ($part->isSubscriber($ilUser->getId())) {
564 if (!is_null($btn_excused)) {
565 $ilToolbar->addComponent($btn_excused);
569 if (!is_null($btn_excused)) {
570 $ilToolbar->addComponent($btn_excused);
578 $this->getCurrentObject()->isRegistrationUserLimitEnabled() &&
579 $this->getCurrentObject()->getRegistrationMaxUsers() &&
582 if ($this->getCurrentObject()->isRegistrationWaitingListEnabled()) {
583 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'sess_reg_max_users_exceeded_wl'));
584 $btn_attend = $this->
ui->factory()->button()->primary(
585 $this->
lng->txt(
"mem_add_to_wl"),
586 $this->
ctrl->getLinkTargetByClass(array(
"ilRepositoryGUI",
"ilObjSessionGUI"),
"register")
588 $ilToolbar->addComponent($btn_attend);
589 if (!$event_part->
isExcused($ilUser->getId()) && !is_null($btn_excused)) {
590 $ilToolbar->addComponent($btn_excused);
593 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'sess_reg_max_users_exceeded'));
597 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'sess_join_info'));
598 $btn_attend = $this->
ui->factory()->button()->primary(
599 $this->
lng->txt(
"join_session"),
600 $this->
ctrl->getLinkTargetByClass(array(
"ilRepositoryGUI",
"ilObjSessionGUI"),
"register")
602 $ilToolbar->addComponent($btn_attend);
603 if (!$event_part->
isExcused($ilUser->getId()) && !is_null($btn_excused)) {
604 $ilToolbar->addComponent($btn_excused);
611 protected function infoScreen():
void 618 $this->tabs_gui->setTabActive(
'info_short');
623 $info->enableBookingInfo(
true);
637 foreach ($eventItems as $item) {
642 $list_gui->setContainerObject($this);
646 $html .= $list_gui->getListItemHTML(
647 (
int) $item[
'ref_id'],
648 (
int) $item[
'obj_id'],
649 (
string) $item[
'title'],
650 (
string) $item[
'description']
655 $info->addSection($this->
lng->txt(
'event_materials'));
665 if (strlen($this->
object->getLocation()) || strlen($this->
object->getDetails())) {
666 $info->addSection($this->
lng->txt(
'event_section_information'));
670 $this->
lng->txt(
'event_location'),
674 if (strlen($this->
object->getDetails())) {
676 $this->
lng->txt(
'event_details_workflow'),
683 $this->record_gui->parse();
686 $info->addMetaDataSections($this->
object->getId(), 0, $this->
object->getType());
690 if ($this->
object->hasTutorSettings()) {
691 $info->addSection($this->
lng->txt(
'event_tutor_data'));
692 if (strlen($fullname = $this->
object->getName())) {
694 $this->
lng->txt(
'event_lecturer'),
698 if (strlen($email = $this->
object->getEmail())) {
700 $this->
lng->txt(
'tutor_email'),
704 if (strlen($phone = $this->
object->getPhone())) {
706 $this->
lng->txt(
'tutor_phone'),
714 $contacts =
$parts->getContacts();
715 if (count($contacts) > 0) {
716 $info->addSection($this->
lng->txt(
"crs_mem_contacts"));
717 foreach ($contacts as $contact) {
719 $pgui->setBackUrl($this->
ctrl->getLinkTargetByClass(
"ilinfoscreengui"));
720 $pgui->setEmbedded(
true);
721 $info->addProperty(
"", $pgui->getHTML());
726 $this->
ctrl->forwardCommand($info);
731 $this->
object->getRefId(),
732 $this->
object->getId(),
739 if (!is_object($this->
object)) {
752 $this->
ctrl->setParameter($this,
'ref_id', $this->
object->getRefId());
753 $this->
ctrl->setParameter($this,
'new_type',
'');
754 $this->
ctrl->redirect($this,
'materials');
757 public function saveObject(
bool $a_redirect_on_success =
true): void
764 $this->
ctrl->saveParameter($this,
"new_type");
767 $this->ilErr->setMessage(
'');
768 if (!$this->
form->checkInput()) {
769 $this->tpl->setOnScreenMessage(
771 $this->
lng->txt(
'err_check_input')
773 $this->
form->setValuesByPost();
780 $this->ilErr->setMessage($this->
lng->txt(
'err_check_input'));
786 $this->
object->validate();
787 $this->
object->getFirstAppointment()->validate();
789 if (strlen($this->ilErr->getMessage())) {
790 $this->tpl->setOnScreenMessage(
'failure', $this->ilErr->getMessage());
791 $this->
form->setValuesByPost();
795 $this->
object->create();
796 $this->
object->createReference();
797 $this->
object->putInTree($this->requested_ref_id);
798 $this->
object->setPermissions($this->requested_ref_id);
808 $this->record_gui->writeEditForm($this->
object->getId());
815 $this->
object->applyDidacticTemplate($dtpl);
819 if (!$this->
form->getInput(
"lp_preset")) {
822 $lp_obj_settings->update(
false);
826 $this->
object->getFirstAppointment()->setSessionId($this->
object->getId());
827 $this->
object->getFirstAppointment()->create();
831 $object_service->
commonSettings()->legacyForm($this->
form, $this->
object)->saveTileImage();
835 if ($a_redirect_on_success) {
836 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'event_add_new_event'),
true);
837 $this->
ctrl->returnToParent($this);
850 if (!isset($_FILES[
'files'][
'name'][$counter])) {
853 if (!strlen($_FILES[
'files'][
'name'][$counter])) {
860 $file->setDescription(
'');
863 $new_ref_id = $file->createReference();
864 $file->putInTree($tree->
getParentId($this->object->getRefId()));
865 $file->setPermissions($tree->
getParentId($this->object->getRefId()));
868 if (!$upload->hasBeenProcessed()) {
871 $file->getUploadFile(
872 $_FILES[
'files'][
'tmp_name'][$counter],
873 $_FILES[
'files'][
'name'][$counter]
876 $items[] = $new_ref_id;
888 if (!$this->rec->getFrequenceType()) {
893 $period_start = clone $this->
object->getFirstAppointment()->getStart();
896 $period_end = clone $this->
object->getFirstAppointment()->getStart();
900 $period_diff = $this->
object->getFirstAppointment()->getEnd()->get(
IL_CAL_UNIX) -
901 $this->
object->getFirstAppointment()->getStart()->get(
IL_CAL_UNIX);
908 foreach ($date_list->get() as $date) {
913 $new_obj = $this->
object->cloneObject($parent_id);
918 $new_obj->applyDidacticTemplate($dtpl);
922 $new_obj->getFirstAppointment()->setStartingTime($date->get(
IL_CAL_UNIX));
923 $new_obj->getFirstAppointment()->setEndingTime($date->get(
IL_CAL_UNIX) + $period_diff);
924 $new_obj->getFirstAppointment()->update();
928 if (!$a_activate_lp) {
931 $lp_obj_settings->update(
false);
944 $this->tabs_gui->setTabActive(
'settings');
947 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.sess_edit.html',
'components/ILIAS/Session');
948 $this->tpl->setVariable(
'EVENT_EDIT_TABLE', $this->
form->getHTML());
955 $old_autofill = $this->
object->hasWaitingListAutoFill();
958 $this->ilErr->setMessage(
'');
959 if (!$this->
form->checkInput()) {
960 $this->tpl->setOnScreenMessage(
962 $this->
lng->txt(
'err_check_input')
964 $this->
form->setValuesByPost();
973 $new_type_info = $this->
form->getInput(
'didactic_type');
974 if ($new_type_info) {
975 $new_type = explode(
'_', $this->
form->getInput(
'didactic_type'));
976 $new_type = (
int) $new_type[1];
978 $modified = ($new_type !== $old_type);
985 $this->tpl->setOnScreenMessage(
987 $this->
lng->txt(
'err_check_input')
989 $this->
form->setValuesByPost();
995 $this->
object->validate();
996 $this->
object->getFirstAppointment()->validate();
998 if (strlen($this->ilErr->getMessage())) {
999 $this->tpl->setOnScreenMessage(
'failure', $this->ilErr->getMessage());
1003 $this->
object->update();
1004 $this->
object->getFirstAppointment()->update();
1014 $this->record_gui->writeEditForm();
1018 $object_service->
commonSettings()->legacyForm($this->
form, $this->
object)->saveTileImage();
1021 if (!$old_autofill &&
1022 $this->
object->hasWaitingListAutoFill()) {
1023 $this->
object->handleAutoFill();
1028 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'event_updated'),
true);
1029 $this->
ctrl->redirect($this,
'edit');
1033 if ($new_type == 0) {
1034 $new_type_txt = $this->
lng->txt(
'il_sess_status_open');
1037 $new_type_txt = $dtpl->getPresentationTitle($this->
lng->getLangKey());
1039 $this->tabs_gui->activateTab(
'settings');
1042 $confirm->setFormAction($this->
ctrl->getFormAction($this));
1043 $confirm->setHeaderText($this->
lng->txt(
'sess_warn_sess_type_changed'));
1047 $this->
lng->txt(
'sess_info_new_sess_type') .
': ' . $new_type_txt
1049 $confirm->setConfirm($this->
lng->txt(
'sess_change_type'),
'updateSessionType');
1050 $confirm->setCancel($this->
lng->txt(
'cancel'),
'edit');
1052 $this->tpl->setContent($confirm->getHTML());
1061 $this->
object->getRefId(),
1062 (
int) $this->
http->request()->getParsedBody()[
'sess_type']
1065 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'settings_saved'),
true);
1066 $this->
ctrl->redirect($this,
'edit');
1076 $is_course = $is_group =
false;
1080 if ($this->container_ref_id) {
1083 if (!$this->container_ref_id) {
1085 if ($this->container_ref_id) {
1089 if (!$this->container_ref_id) {
1090 $this->tpl->setOnScreenMessage(
'failure',
'No container object found. Aborting');
1095 if ($a_init_participants && $this->container_obj_id) {
1098 } elseif ($is_group) {
1108 $this->tabs_gui->activateTab(
'materials');
1110 $parent_ref_id = $this->tree->getParentId($this->
object->getRefId());
1112 $parent_gui_class =
'ilObj' . $this->obj_definition->getClassName($parent_type) .
'GUI';
1113 $this->
ctrl->setParameterByClass($parent_gui_class,
'ref_id', $parent_ref_id);
1118 $this->
object->getRefId()
1122 $this->
ctrl->clearParameterByClass($parent_gui_class,
'ref_id');
1128 $tbl->setDisableFilterHiding(
true);
1130 $tbl->addMultiCommand(
'saveMaterials', $this->
lng->txt(
'sess_assign'));
1131 $tbl->addMultiCommand(
"removeMaterials", $this->
lng->txt(
"remove"));
1133 $tbl->setTitle($this->
lng->txt(
"event_assign_materials_table"));
1134 $tbl->setDescription($this->
lng->txt(
'event_assign_materials_info'));
1136 $tbl->setMaterialItems($this->event_items->getItems());
1138 $data = $tbl->getDataFromDb();
1139 $tbl->setMaterials(
$data);
1141 $this->tpl->setContent($tbl->getHTML());
1146 $parent_ref_id = $this->tree->getParentId($this->
object->getRefId());
1148 $parent_gui_class =
'ilObj' . $this->obj_definition->getClassName($parent_type) .
'GUI';
1149 $parent_gui =
new $parent_gui_class(
'', $parent_ref_id,
true,
false);
1150 $types = $parent_gui->getCreatableObjectTypes();
1151 foreach (array_merge([
'itgr',
'sess' ], $this->objDefinition->getSideBlockTypes()) as $type_to_remove) {
1152 unset($types[$type_to_remove]);
1160 $tbl->writeFilterToSession();
1161 $tbl->resetOffset();
1162 $this->
ctrl->redirect($this,
"materials");
1168 $tbl->resetOffset();
1169 $tbl->resetFilter();
1170 $this->
ctrl->redirect($this,
"materials");
1186 $db_items = $this->event_items->
getItems();
1189 $list_items_checked =
array_map(
'intval', $list_items_checked);
1191 $items_to_save = array_merge($db_items, $list_items_checked);
1192 $items_to_save = array_unique($items_to_save);
1194 $this->event_items->setItems($items_to_save);
1195 $this->event_items->update();
1206 $tbl->storeNavParameter();
1208 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'settings_saved'),
true);
1209 $this->
ctrl->redirect($this,
'materials');
1218 $ilTabs->setTabActive(
'event_edit_members');
1221 $form = $list->initForm(
'printAttendanceList');
1234 $list->setId(
'sessattlst');
1236 $event_app = $this->
object->getFirstAppointment();
1240 $desc .=
" " . $this->
object->getTitle();
1241 $list->setTitle($this->
lng->txt(
'sess_attendance_list'), $desc);
1243 $list->addPreset(
'mark', $this->
lng->txt(
'trac_mark'),
true);
1244 $list->addPreset(
'comment', $this->
lng->txt(
'trac_comment'),
true);
1245 if ($this->
object->enabledRegistration()) {
1246 $list->addPreset(
'registered', $this->
lng->txt(
'event_tbl_registered'),
true);
1248 $list->addPreset(
'participated', $this->
lng->txt(
'event_tbl_participated'),
true);
1249 $list->addBlank($this->
lng->txt(
'sess_signature'));
1251 $list->addUserFilter(
'registered', $this->
lng->txt(
'event_list_registered_only'));
1261 $list->initFromForm();
1262 $list->setCallback(array($this,
'getAttendanceListUserData'));
1265 $list->getFullscreenHTML();
1270 $data = $this->event_part->getUser($a_user_id);
1272 if ($a_filters && $a_filters[
"registered"] && !
$data[
"registered"]) {
1277 $this->
lng->txt(
'yes') :
1278 $this->
lng->txt(
'no');
1279 $data[
'participated'] =
$data[
'participated'] ?
1280 $this->
lng->txt(
'yes') :
1281 $this->
lng->txt(
'no');
1292 if (!$ilAccess->checkAccess(
'manage_members',
'', $this->object->getRefId())) {
1293 $this->ilErr->raiseError($this->
lng->txt(
'msg_no_perm_read'), $this->ilErr->MESSAGE);
1296 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.sess_list.html',
'components/ILIAS/Session');
1297 $this->
__showButton($this->
ctrl->getLinkTarget($this,
'exportCSV'), $this->
lng->txt(
'event_csv_export'));
1299 $this->tpl->addBlockFile(
"EVENTS_TABLE",
"events_table",
"tpl.table.html");
1300 $this->tpl->addBlockFile(
'TBL_CONTENT',
'tbl_content',
'tpl.sess_list_row.html',
'components/ILIAS/Session');
1303 $members = $members_obj->getParticipants();
1309 $this->
lng->txt(
"event_overview"),
1310 'standard/icon_usr.svg',
1311 $this->
lng->txt(
'obj_usr')
1313 $this->
ctrl->setParameter($this,
'offset', $this->requested_offset);
1319 if (!is_object($tmp_event) || $tmp_event->getType() !=
'sess') {
1322 $events[] = $tmp_event;
1329 $headerNames[] = $this->
lng->txt(
'name');
1330 $headerVars[] =
"name";
1331 $colWidth[] =
'20%';
1333 for ($i = 1; $i <= count($events); $i++) {
1334 $headerNames[] = $i;
1335 $headerVars[] =
"event_" . $i;
1336 $colWidth[] = 80 / count($events) .
"%";
1339 $this->tpl->setVariable(
"FORMACTION", $this->
ctrl->getFormAction($this));
1340 $tbl->setHeaderNames($headerNames);
1341 $tbl->setHeaderVars($headerVars, $this->
ctrl->getParameterArray($this));
1342 $tbl->setColumnWidth($colWidth);
1344 $tbl->setOrderColumn($this->requested_sort_by);
1345 $tbl->setOrderDirection($this->requested_sort_order);
1346 $tbl->setOffset($this->requested_offset);
1347 $tbl->setMaxCount(count($members));
1348 $tbl->setFooter(
"tblfooter", $this->
lng->txt(
"previous"), $this->
lng->txt(
"next"));
1350 $sliced_users = array_slice($members, $this->requested_offset,
ilSession::get(
"tbl_limit"));
1351 $tbl->disable(
'sort');
1355 foreach ($sliced_users as
$user_id) {
1356 foreach ($events as $event_obj) {
1357 $this->tpl->setCurrentBlock(
"eventcols");
1362 $this->tpl->setVariable(
"IMAGE_PARTICIPATED", $event_part->
hasParticipated($user_id) ?
1366 $this->tpl->setVariable(
"PARTICIPATED", $event_part->
hasParticipated($user_id) ?
1367 $this->
lng->txt(
'event_participated') :
1368 $this->
lng->txt(
'event_not_participated'));
1371 $this->tpl->parseCurrentBlock();
1374 $this->tpl->setCurrentBlock(
"tbl_content");
1376 $this->tpl->setVariable(
"LASTNAME", $name[
'lastname']);
1377 $this->tpl->setVariable(
"FIRSTNAME", $name[
'firstname']);
1379 $this->tpl->parseCurrentBlock();
1382 $this->tpl->setVariable(
"HEAD_TXT_LEGEND", $this->
lng->txt(
"legend"));
1383 $this->tpl->setVariable(
"HEAD_TXT_DIGIT", $this->
lng->txt(
"event_digit"));
1384 $this->tpl->setVariable(
"HEAD_TXT_EVENT", $this->
lng->txt(
"event"));
1385 $this->tpl->setVariable(
"HEAD_TXT_LOCATION", $this->
lng->txt(
"event_location"));
1386 $this->tpl->setVariable(
"HEAD_TXT_DATE_TIME", $this->
lng->txt(
"event_date_time"));
1388 foreach ($events as $event_obj) {
1389 $this->tpl->setCurrentBlock(
"legend_loop");
1390 $this->tpl->setVariable(
"LEGEND_DIGIT", $i++);
1391 $this->tpl->setVariable(
"LEGEND_EVENT_TITLE", $event_obj->getTitle());
1392 $this->tpl->setVariable(
"LEGEND_EVENT_DESCRIPTION", $event_obj->getDescription());
1393 $this->tpl->setVariable(
"LEGEND_EVENT_LOCATION", $event_obj->getLocation());
1394 $this->tpl->setVariable(
"LEGEND_EVENT_APPOINTMENT", $event_obj->getFirstAppointment()->appointmentToString());
1395 $this->tpl->parseCurrentBlock();
1399 protected function __showButton(
string $cmd,
string $text,
string $target =
''): void
1401 $this->
toolbar->addButton($text, $this->
ctrl->getLinkTarget($this, $cmd), $target);
1411 $this->
lng->loadLanguageModule(
'dateplaner');
1415 $this->
form =
new ilPropertyFormGUI();
1416 $this->
form->setMultipart(
true);
1417 $this->
form->setTableWidth(
'600px');
1418 $this->
form->setFormAction($this->
ctrl->getFormAction($this));
1419 $this->
form->setMultipart(
true);
1423 $this->
lng->loadLanguageModule(
'dateplaner');
1425 $dur->setRequired(
true);
1426 $dur->enableToggleFullTime(
1427 $this->
lng->txt(
'event_fulltime_info'),
1428 $this->
object->getFirstAppointment()->enabledFulltime()
1430 $dur->setShowTime(
true);
1431 $dur->setStart($this->
object->getFirstAppointment()->getStart());
1432 $dur->setEnd($this->
object->getFirstAppointment()->getEnd());
1434 $this->
form->addItem($dur);
1438 if ($a_mode ==
'create') {
1439 if (!is_object($this->rec)) {
1443 $rec->allowUnlimitedRecurrences(
false);
1445 $this->
form->addItem($rec);
1449 $lp->setInfo($this->
lng->txt(
"sess_lp_preset_info"));
1450 $lp->setChecked(
true);
1451 $this->
form->addItem($lp);
1455 $section->setTitle($this->
lng->txt(
'event_section_information'));
1456 $this->
form->addItem($section);
1460 $title->setRequired(
true);
1461 $title->setValue($this->
object->getTitle());
1462 $title->setSize(50);
1463 $title->setMaxLength(70);
1464 $this->
form->addItem($title);
1471 $this->
form->addItem($desc);
1478 $this->
form->addItem($desc);
1483 $details->setCols(50);
1484 $details->setRows(4);
1485 $this->
form->addItem($details);
1487 if ($a_mode ==
'create') {
1492 $this->record_gui->setRefId($this->requested_ref_id);
1493 $this->record_gui->setPropertyForm($this->
form);
1494 $this->record_gui->parse();
1502 $this->record_gui->parse();
1508 $section->setTitle($this->
lng->txt(
'event_tutor_data'));
1509 $this->
form->addItem($section);
1513 $tutor_name->setValue($this->
object->getName());
1514 $tutor_name->setSize(20);
1515 $tutor_name->setMaxLength(70);
1516 $this->
form->addItem($tutor_name);
1519 $tutor_email =
new ilTextInputGUI($this->
lng->txt(
'tutor_email'),
'tutor_email');
1520 $tutor_email->setValue($this->
object->getEmail());
1521 $tutor_email->setSize(20);
1522 $tutor_email->setMaxLength(70);
1523 $this->
form->addItem($tutor_email);
1526 $tutor_phone =
new ilTextInputGUI($this->
lng->txt(
'tutor_phone'),
'tutor_phone');
1527 $tutor_phone->setValue($this->
object->getPhone());
1528 $tutor_phone->setSize(20);
1529 $tutor_phone->setMaxLength(70);
1530 $this->
form->addItem($tutor_phone);
1533 $section->setTitle($this->
lng->txt(
'sess_section_reg'));
1534 $this->
form->addItem($section);
1547 $reg_settings->addMembershipFormElements($this->
form,
'');
1551 $section->setTitle($this->
lng->txt(
'event_assign_files'));
1552 $this->
form->addItem($section);
1556 $this->
form->addItem($files);
1559 $section->setTitle($this->
lng->txt(
'sess_setting_header_presentation'));
1560 $this->
form->addItem($section);
1562 $object_service->
commonSettings()->legacyForm($this->
form, $this->
object)->addTileImage();
1565 $features->setTitle($this->
lng->txt(
'obj_features'));
1566 $this->
form->addItem($features);
1576 $gallery->setChecked($this->
object->getShowMembers());
1577 $gallery->setInfo($this->
lng->txt(
'sess_show_participants_info'));
1578 $this->
form->addItem($gallery);
1583 $mail_type->
setValue((
string) $this->
object->getMailToMembersType());
1586 $this->
lng->txt(
'sess_mail_admins_only'),
1588 $this->
lng->txt(
'sess_mail_admins_only_info')
1590 $mail_type->addOption($mail_tutors);
1593 $this->
lng->txt(
'sess_mail_all'),
1595 $this->
lng->txt(
'sess_mail_all_info')
1597 $mail_type->addOption($mail_all);
1598 $this->
form->addItem($mail_type);
1604 $this->
form->setTitle($this->
lng->txt(
'event_table_create'));
1606 $this->
form->addCommandButton(
'save', $this->
lng->txt(
'event_btn_add'));
1607 $this->
form->addCommandButton(
'saveAndAssignMaterials', $this->
lng->txt(
'event_btn_add_edit'));
1608 $this->
form->addCommandButton(
'cancel', $this->
lng->txt(
'cancel'));
1613 $this->
form->setTitle($this->
lng->txt(
'event_table_update'));
1615 $this->
form->addCommandButton(
'update', $this->
lng->txt(
'save'));
1616 $this->
form->addCommandButton(
'cancelEdit', $this->
lng->txt(
'cancel'));
1625 $event = $this->
form->getItemByPostVar(
'event');
1626 if ($event->getStart() && $event->getEnd()) {
1627 $this->
object->getFirstAppointment()->setStartingTime($event->getStart()->get(
IL_CAL_UNIX));
1628 $this->
object->getFirstAppointment()->setEndingTime($event->getStart()->get(
IL_CAL_UNIX));
1629 $this->
object->getFirstAppointment()->setStart($event->getStart());
1630 $this->
object->getFirstAppointment()->setEnd($event->getEnd());
1631 $this->
object->getFirstAppointment()->toggleFulltime($event->getStart() instanceof
ilDate);
1634 $this->
object->setTitle($this->
form->getInput(
'title'));
1635 $this->
object->setDescription($this->
form->getInput(
'desc'));
1636 $this->
object->setLocation($this->
form->getInput(
'location'));
1637 $this->
object->setName($this->
form->getInput(
'tutor_name'));
1638 $this->
object->setPhone($this->
form->getInput(
'tutor_phone'));
1639 $this->
object->setEmail($this->
form->getInput(
'tutor_email'));
1640 $this->
object->setDetails($this->
form->getInput(
'details'));
1642 $this->
object->setRegistrationNotificationEnabled((
bool) $this->
form->getInput(
'registration_notification'));
1643 $this->
object->setRegistrationNotificationOption($this->
form->getInput(
'notification_option'));
1645 $this->
object->setRegistrationType((
int) $this->
form->getInput(
'registration_type'));
1647 switch ($this->
object->getRegistrationType()) {
1649 $this->
object->enableCannotParticipateOption((
bool) $this->
form->getInput(
'show_cannot_participate_direct'));
1652 $this->
object->enableCannotParticipateOption((
bool) $this->
form->getInput(
'show_cannot_participate_request'));
1655 $this->
object->enableCannotParticipateOption(
false);
1660 $this->
object->setRegistrationMaxUsers((
int) $this->
form->getInput(
'registration_max_members'));
1661 $this->
object->enableRegistrationUserLimit((
int) $this->
form->getInput(
'registration_membership_limited'));
1662 $this->
object->setShowMembers((
bool) $this->
form->getInput(
'show_members'));
1663 $this->
object->setMailToMembersType((
int) $this->
form->getInput(
'mail_type'));
1665 switch ((
int) $this->
form->getInput(
'waiting_list')) {
1667 $this->
object->enableRegistrationWaitingList(
true);
1668 $this->
object->setWaitingListAutoFill(
true);
1672 $this->
object->enableRegistrationWaitingList(
true);
1673 $this->
object->setWaitingListAutoFill(
false);
1677 $this->
object->enableRegistrationWaitingList(
false);
1678 $this->
object->setWaitingListAutoFill(
false);
1687 switch ($this->
form->getInput(
'frequence')) {
1689 $this->rec->setFrequenceType($this->
form->getInput(
'frequence'));
1690 $this->rec->setInterval((
int) $this->
form->getInput(
'count_DAILY'));
1694 $this->rec->setFrequenceType($this->
form->getInput(
'frequence'));
1695 $this->rec->setInterval((
int) $this->
form->getInput(
'count_WEEKLY'));
1696 if (is_array($this->
form->getInput(
'byday_WEEKLY'))) {
1702 $this->rec->setFrequenceType($this->
form->getInput(
'frequence'));
1703 $this->rec->setInterval((
int) $this->
form->getInput(
'count_MONTHLY'));
1704 switch ((
int) $this->
form->getInput(
'subtype_MONTHLY')) {
1710 switch ((
int) $this->
form->getInput(
'monthly_byday_day')) {
1713 $this->rec->setBYSETPOS($this->
form->getInput(
'monthly_byday_num'));
1714 $this->rec->setBYDAY(
'MO,TU,WE,TH,FR');
1719 $this->rec->setBYMONTHDAY($this->
form->getInput(
'monthly_byday_num'));
1723 $this->rec->setBYDAY(($this->
form->getInput(
'monthly_byday_num') . $this->
form->getInput(
'monthly_byday_day')));
1729 $this->rec->setBYMONTHDAY($this->
form->getInput(
'monthly_bymonthday'));
1735 $this->rec->setFrequenceType($this->
form->getInput(
'frequence'));
1736 $this->rec->setInterval((
int) $this->
form->getInput(
'count_YEARLY'));
1737 switch ((
int) $this->
form->getInput(
'subtype_YEARLY')) {
1743 $this->rec->setBYMONTH($this->
form->getInput(
'yearly_bymonth_byday'));
1744 $this->rec->setBYDAY(($this->
form->getInput(
'yearly_byday_num') . $this->
form->getInput(
'yearly_byday')));
1748 $this->rec->setBYMONTH($this->
form->getInput(
'yearly_bymonth_by_monthday'));
1749 $this->rec->setBYMONTHDAY($this->
form->getInput(
'yearly_bymonthday'));
1756 switch ((
int) $this->
form->getInput(
'until_type')) {
1758 $this->rec->setFrequenceUntilDate(
null);
1763 $this->rec->setFrequenceUntilDate(
null);
1764 $this->rec->setFrequenceUntilCount((
int) $this->
form->getInput(
'count'));
1768 $frequence = $this->
form->getItemByPostVar(
'frequence');
1769 $end = $frequence->getRecurrence()->getFrequenceUntilDate();
1770 $this->rec->setFrequenceUntilCount(0);
1771 $this->rec->setFrequenceUntilDate($end);
1778 return mktime($time[
'h'], $time[
'm'], 0, $date[
'm'], $date[
'd'], $date[
'y']);
1787 $title = strlen($this->
object->getTitle()) ? (
': ' . $this->
object->getTitle()) :
'';
1788 $title = $this->
object->getFirstAppointment()->appointmentToString() . $title;
1805 $parent_class = $objDefinition->
getClassName($parent_type);
1806 $parent_class =
'ilObj' . $parent_class .
'GUI';
1821 $ilHelp->setScreenIdComponent(
"sess");
1828 $this->tabs_gui->setBackTarget(
1829 $this->
lng->txt(
'back_to_' . $parent_type .
'_content'),
1830 $ilCtrl->getLinkTarget($this,
"redirectToParentContentPage")
1833 $this->tabs_gui->addTarget(
1835 $this->
ctrl->getLinkTarget($this,
'infoScreen')
1838 if ($ilAccess->checkAccess(
'write',
'', $this->object->getRefId())) {
1839 $this->tabs_gui->addTarget(
1841 $this->
ctrl->getLinkTarget($this,
'edit')
1844 if ($ilAccess->checkAccess(
'manage_materials',
'', $this->object->getRefId())) {
1845 $this->tabs_gui->addTab(
1847 $this->
lng->txt(
'crs_materials'),
1848 $this->
ctrl->getLinkTarget($this,
'materials')
1853 $parent_id = $tree->
getParentId($this->requested_ref_id);
1859 $this->tabs_gui->addTarget(
1860 "obj_tool_setting_booking",
1861 $this->
ctrl->getLinkTargetByClass(array(
"ilbookinggatewaygui"),
"")
1866 $is_participant = $this->
object->getMembersObject()->isAssigned($ilUser->getId());
1868 $membership_gui->addMemberTab($this->tabs_gui, $is_participant);
1873 $this->tabs_gui->addTarget(
1874 'learning_progress',
1875 $this->
ctrl->getLinkTargetByClass(array(
'ilobjsessiongui',
'illearningprogressgui'),
''),
1877 array(
'illplistofobjectsgui',
'illplistofsettingsgui',
'illearningprogressgui',
'illplistofprogressgui')
1882 if ($ilAccess->checkAccess(
'edit_metadata',
'', $this->ref_id)) {
1884 $mdtab = $mdgui->getTab();
1886 $this->tabs_gui->addTab(
1888 $this->
lng->txt(
'meta_data'),
1895 if ($ilAccess->checkAccess(
"write",
"", $this->object->getRefId())) {
1896 $this->tabs_gui->addTarget(
1898 $this->
ctrl->getLinkTargetByClass(
"ilexportgui",
""),
1906 if ($ilAccess->checkAccess(
'edit_permission',
"", $this->object->getRefId())) {
1907 $this->tabs_gui->addTarget(
1909 $this->
ctrl->getLinkTargetByClass(
"ilpermissiongui",
"perm"),
1910 array(
"perm",
"info",
"owner"),
1933 foreach ($a_usr_ids as $usr_id) {
1934 $tmp_data[$usr_id] = [];
1941 if (!$this->container_ref_id) {
1952 $parent_id = $tree->
getParentId($this->requested_ref_id);
1954 $ilCtrl->setParameterByClass(
"ilrepositorygui",
"ref_id", $parent_id);
1956 $ilCtrl->redirectByClass(
"ilrepositorygui",
"");
1965 foreach ($local_roles as $role_id) {
1967 if (substr($title, 0, 19) ==
'il_sess_participant') {
1986 $link = chr(13) . chr(10) . chr(13) . chr(10);
1987 $link .= $this->
lng->txt(
'sess_mail_permanent_link');
1988 $link .= chr(13) . chr(10) . chr(13) . chr(10);
1989 $link .= ilLink::_getLink($this->
object->getRefId());
1990 return rawurlencode(base64_encode($link));
static factory(string $a_type)
Get list gui by type This method caches all the returned list guis.
ilAdvancedMDRecordGUI $record_gui
getAttendanceListUserData(int $a_user_id, array $a_filters)
static get(string $a_var)
static array static setUseRelativeDates(bool $a_status)
set use relative dates
This class represents an option in a radio group.
redirectToParentContentPageObject()
setPropertyForm(ilPropertyFormGUI $form)
string $requested_sort_by
ilRbacReview $rbac_review
__toUnix(array $date, array $time)
getNodeData(int $a_node_id, ?int $a_tree_pk=null)
get all information of a node.
initContainer(bool $a_init_participants=false)
afterSaveCallback(ilObject $a_obj)
Custom callback after object is created (in parent container)
static _goto(string $a_target)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
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...
GUI class for the workflow of copying objects.
static getItemsByEvent(int $event_id)
Get session material / event items.
if($clientAssertionType !='urn:ietf:params:oauth:client-assertion-type:jwt-bearer'|| $grantType !='client_credentials') $parts
importEditFormPostValues()
Load edit form values from post.
static switchTemplate(int $a_ref_id, int $a_new_tpl_id)
static stripSlashes(string $a_str, bool $a_strip_html=true, string $a_allow="")
static getInstance(int $a_ref_id)
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 sav...
updateSessionTypeObject()
change session type
string $requested_sort_order
static initDomEvent(?ilGlobalTemplateInterface $a_main_tpl=null)
Init YUI DomEvent used in Services/Calendar, Modules/Session, Modules/Test (Jan 2022) ...
getDidacticTemplateVar(string $type)
Get didactic template setting from creation screen.
static _gotoRepositoryNode(int $ref_id, string $cmd="")
static _lookupName(int $a_user_id)
lookup user name
showJoinRequestButton(?ilToolbarGUI $ilToolbar=null)
initCreateForm($new_type)
static _register(int $a_usr_id, int $a_event_id)
This class is used for integration of the booking manager as a service into other repository objects...
setContent(string $a_html)
Sets content for standard template.
setParameterByClass(string $a_class, string $a_parameter, $a_value)
getRegisteredParticipants()
hasParticipated(int $a_usr_id)
loadLanguageModule(string $a_module)
Load language module.
infoScreenObject()
this one is called from the info button in the repository not very nice to set cmdClass/Cmd manually...
createObject()
create new object form
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static updateServiceSettingsForm(int $obj_id, ilPropertyFormGUI $form, array $services)
static checkAccess(int $a_ref_id, bool $a_allow_only_read=true)
check access to learning progress
createRecurringSessions(bool $a_activate_lp=true)
static resetCaches()
Reset internal caches.
redirectByClass( $a_class, ?string $a_cmd=null, ?string $a_anchor=null, bool $is_async=false)
saveObject(bool $a_redirect_on_success=true)
setRecurrence(int $a_type)
set type of recurrence public
Base class for attendance lists.
unregisterObject(bool $a_refuse_participation=false)
static _lookupObjId(int $ref_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
setValue(string $a_value)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
ilEventItems $event_items
refuseParticipationObject()
prepareOutput(bool $show_sub_objects=true)
GUI class for public user profile presentation.
static lookupTemplateId(int $a_ref_id)
checkForParentType(int $a_ref_id, string $a_type, bool $a_exclude_source_check=false)
Check for parent type e.g check if a folder (ref_id 3) is in a parent course obj => checkForParentTyp...
static http()
Fetches the global http state from ILIAS.
static _isRegistered(int $a_usr_id, int $a_event_id)
static _lookupTitle(int $obj_id)
static _getInstanceByObjId(int $a_obj_id)
getCreatableObjectTypes()
static getInstance(int $a_ref_id)
GUI class for membership features.
Calculates an ilDateList for a given calendar entry and recurrence rule.
ILIAS Refinery Factory $refinery
__construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output=true)
initDidacticTemplate(ilPropertyFormGUI $form)
Class ilObjectGUI Basic methods of all Output classes.
static _recordReadEvent(string $a_type, int $a_ref_id, int $obj_id, int $usr_id, bool $isCatchupWriteEvents=true, $a_ext_rc=null, $a_ext_time=null)
static getInstanceByRefId(int $ref_id, bool $stop_on_error=true)
get an instance of an Ilias object by reference id
getClassName(string $obj_name)
static getImagePath(string $image_name, string $module_path="", string $mode="output", bool $offline=false)
get image path (for images located in a template directory)
const REGISTRATION_LIMITED_USERS
static addListGUIActivationProperty(ilObjectListGUI $list_gui, array &$item)
Get timing details for list gui.
readMemberData(array $a_usr_ids)
Used for waiting list.
static deleteUserEntry(int $a_usr_id, int $a_obj_id)
getParentId(int $a_node_id)
get parent id of given node
static _modifyItemGUI(ilObjectListGUI $a_item_list_gui, string $a_cmd_class, array $a_item_data, bool $a_abo_status, int $a_course_ref_id, int $a_course_obj_id, int $a_parent_ref_id=0)
static initServiceSettingsForm(int $obj_id, ilPropertyFormGUI $form, array $services)
showJoinRequestButtonInCalendar(ilToolbarGUI $a_ilToolbar)
show join request This method is only needed to keep showJoinRequestButton method protected...
static _unregister(int $a_usr_id, int $a_event_id)
ilEventParticipants $event_part
class ilEventParticipants
checkPermissionBool(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
static _sortIds(array $a_ids, string $a_table, string $a_field, string $a_id_name)
Function that sorts ids by a given table field using WHERE IN E.g: __sort(array(6,7),'usr_data','lastname','usr_id') => sorts by lastname.
__showButton(string $cmd, string $text, string $target='')
buildAddNewItemElements(array $subtypes, string $create_target_class=ilRepositoryGUI::class, ?int $redirect_target_ref_id=null,)
form( $class_path, string $cmd, string $submit_caption="")
const LP_MODE_DEACTIVATED
Render add new item selector.
static _getInstanceByObjId(int $a_obj_id)
Get singleton instance.
updateExcusedForUser(int $a_usr_id, bool $a_status)
__construct(Container $dic, ilPlugin $plugin)
const LP_CONTEXT_REPOSITORY
This class represents a text area property in a property form.
static _getInstance(int $a_obj_id)
getRolesOfRoleFolder(int $a_ref_id, bool $a_nonassignable=true)
get all roles of a role folder including linked local roles that are created due to stopped inheritan...
setInfoObject(ilInfoScreenGUI $info)
get info sections
static _lookupContainerSetting(int $a_id, string $a_keyword, ?string $a_default_value=null)
removeItems(array $a_items)
static _isOnList(int $a_usr_id, int $a_obj_id)
ilGlobalTemplateInterface $tpl
const MESSAGE_TYPE_FAILURE
getSubTree(array $a_node, bool $a_with_data=true, array $a_type=[])
get all nodes in the subtree under specified node
static _lookupType(int $id, bool $reference=false)
modifyItemGUI(ilObjectListGUI $a_item_list_gui, array $a_item_data, bool $a_show_path)
ilObjectService $object_service
addHeaderAction()
Add header action menu.
static makeClickable(string $a_text, bool $detectGotoLinks=false)
addItem(int $a_item_ref_id)
ilObjectDefinition $objDefinition
saveAndAssignMaterialsObject()
Class ilObjUserTrackingGUI.
checkPermission(string $perm, string $cmd="", string $type="", ?int $ref_id=null)
static set(string $a_var, $a_val)
Set a value.
checkAccessOfUser(int $a_user_id, string $a_permission, string $a_cmd, int $a_ref_id, string $a_type="", ?int $a_obj_id=null, ?int $a_tree_id=null)
check access for an object (provide $a_type and $a_obj_id if available for better performance) ...
static getInstanceFromAjaxCall()
(Re-)Build instance from ajax call
printAttendanceListObject()
ILIAS HTTP Services $http
calculateDateList(ilDateTime $a_start, ilDateTime $a_end, int $a_limit=-1)
calculate date list
static _gotoRepositoryRoot(bool $raise_error=false)
Goto repository root.
static formatPeriod(ilDateTime $start, ilDateTime $end, bool $a_skip_starting_day=false, ?ilObjUser $user=null)
Format a period of two dates Shows: 14.
postUpdateMaterials()
redirect to list of materials without offset/page.
static _lookupLogin(int $a_user_id)
ILIAS FileUpload FileUpload $upload