19 declare(strict_types=1);
34 protected \ILIAS\DI\UIServices
$ui;
36 protected \ILIAS\FileUpload\FileUpload
$upload;
69 public function __construct($a_data, $a_id, $a_call_by_reference, $a_prepare_output =
true)
73 $this->
ctrl = $DIC->ctrl();
74 $this->
lng = $DIC->language();
75 $this->tpl = $DIC->ui()->mainTemplate();
76 $this->
user = $DIC->user();
77 $this->tree = $DIC->repositoryTree();
78 $this->
access = $DIC->access();
79 $this->
toolbar = $DIC->toolbar();
80 $this->ilErr = $DIC[
"ilErr"];
81 $this->object_service = $DIC->object();
82 $this->objDefinition = $DIC[
'objDefinition'];
83 $this->tabs_gui = $DIC->tabs();
84 $this->
locator = $DIC[
"ilLocator"];
85 $this->rbacreview = $DIC->rbac()->review();
86 $this->
event = $DIC->event();
87 $this->
upload = $DIC->upload();
88 $this->
help = $DIC->help();
94 $this->
lng->loadLanguageModule(
"event");
95 $this->
lng->loadLanguageModule(
'crs');
96 $this->
lng->loadLanguageModule(
'trac');
97 $this->
lng->loadLanguageModule(
'sess');
99 if ($this->
http->wrapper()->query()->has(
'ref_id')) {
100 $this->requested_ref_id = $this->
http->wrapper()->query()->retrieve(
106 if ($this->
http->wrapper()->query()->has(
'user_id')) {
107 $this->requested_user_id = $this->
http->wrapper()->query()->retrieve(
113 if ($this->
http->wrapper()->post()->has(
'file_id')) {
114 $this->requested_file_id = $this->
http->wrapper()->post()->retrieve(
118 } elseif ($this->
http->wrapper()->query()->has(
'file_id')) {
119 $this->requested_file_id = $this->
http->wrapper()->query()->retrieve(
125 if ($this->
http->wrapper()->query()->has(
'offset')) {
126 $this->requested_offset = $this->
http->wrapper()->query()->retrieve(
132 if ($this->
http->wrapper()->query()->has(
'sort_by')) {
133 $this->requested_sort_by = $this->
http->wrapper()->query()->retrieve(
135 $this->
refinery->kindlyTo()->string()
139 if ($this->
http->wrapper()->query()->has(
'sort_order')) {
140 $this->requested_sort_order = $this->
http->wrapper()->query()->retrieve(
142 $this->
refinery->kindlyTo()->string()
146 if ($this->
http->wrapper()->post()->has(
'items')) {
147 $this->requested_items = $this->
http->wrapper()->post()->retrieve(
149 $this->
refinery->kindlyTo()->listOf(
154 $this->
ui = $DIC->ui();
163 $next_class = $this->
ctrl->getNextClass($this);
164 $cmd = $this->
ctrl->getCmd();
168 $ilAccess->checkAccess(
'read',
'', $this->requested_ref_id)
170 $GLOBALS[
'DIC'][
'ilNavigationHistory']->addItem(
171 $this->requested_ref_id,
172 ilLink::_getLink($this->requested_ref_id,
'sess'),
174 $this->
object->getPresentationTitle()
179 switch ($next_class) {
180 case 'ilsessionmembershipgui':
181 $this->tabs_gui->activateTab(
'members');
183 $this->
ctrl->forwardCommand($mem_gui);
186 case "ilinfoscreengui":
191 case 'ilobjectmetadatagui':
193 $this->tabs_gui->activateTab(
'metadata');
195 $this->
ctrl->forwardCommand($md_gui);
198 case 'ilpermissiongui':
199 $this->tabs_gui->setTabActive(
'perm_settings');
201 $ret = $this->
ctrl->forwardCommand($perm_gui);
204 case 'ilobjectcopygui':
206 $cp->setType(
'sess');
207 $this->
ctrl->forwardCommand($cp);
211 $this->tabs_gui->setTabActive(
"export");
213 $exp_gui->addFormat(
"xml");
214 $ret = $this->
ctrl->forwardCommand($exp_gui);
217 case "ilcommonactiondispatchergui":
219 $this->
ctrl->forwardCommand($gui);
222 case 'ilmembershipgui':
223 $this->
ctrl->setReturn($this,
'members');
225 $this->
ctrl->forwardCommand($mem);
228 case "illearningprogressgui":
231 $this->
object->getRefId(),
232 $this->requested_user_id ?: $ilUser->getId()
234 $this->
ctrl->forwardCommand($new_gui);
235 $this->tabs_gui->setTabActive(
'learning_progress');
238 case "ilpropertyformgui":
240 if (!is_object($this->
object)) {
244 if ($form ===
true) {
248 $ilCtrl->forwardCommand($form);
251 case "ilbookinggatewaygui":
253 $parent_id = $tree->
getParentId($this->requested_ref_id);
255 $this->tabs_gui->activateTab(
'obj_tool_setting_booking');
257 $this->
ctrl->forwardCommand($gui);
261 if ($cmd ==
"applyFilter") {
263 } elseif ($cmd ==
"resetFilter") {
280 $this->
ctrl->redirectByClass(
'ilSessionMembershipGUI',
'participants');
295 parent::prepareOutput($show_sub_objects);
298 $title = strlen($this->
object->getTitle()) ? (
': ' . $this->
object->getTitle()) :
'';
300 $this->tpl->setTitle(
301 $this->
object->getFirstAppointment()->appointmentToString() . $title
320 $this->getCurrentObject()->isRegistrationUserLimitEnabled() &&
321 $this->getCurrentObject()->getRegistrationMaxUsers() &&
324 if (!$this->getCurrentObject()->isRegistrationWaitingListEnabled()) {
325 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'sess_reg_max_users_exceeded'),
true);
326 $this->
ctrl->redirect($this,
'infoScreen');
329 $wait->addToList($ilUser->getId());
330 $this->
ctrl->redirect($this,
'infoScreen');
334 switch ($this->getCurrentObject()->getRegistrationType()) {
336 $this->
ctrl->redirect($this,
'info');
340 $part->register($ilUser->getId());
341 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'event_registered'),
true);
343 $ilAppEventHandler->raise(
344 "components/ILIAS/Session",
347 'obj_id' => $this->getCurrentObject()->
getId(),
348 'ref_id' => $this->getCurrentObject()->
getRefId(),
349 'usr_id' => $ilUser->getId()
353 $this->
ctrl->redirect($this,
'infoScreen');
357 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'sess_registered_confirm'),
true);
358 $part->addSubscriber($ilUser->getId());
360 $ilAppEventHandler->raise(
361 "components/ILIAS/Session",
364 'obj_id' => $this->getCurrentObject()->
getId(),
365 'ref_id' => $this->getCurrentObject()->
getRefId(),
366 'usr_id' => $ilUser->getId()
370 $this->
ctrl->redirect($this,
'infoScreen');
381 if ($ilUser->isAnonymous()) {
382 $this->
ctrl->redirect($this,
'infoScreen');
388 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'event_unregistered'),
true);
391 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'event_registered'),
true);
394 $this->
ctrl->redirect($this,
'infoScreen');
405 if ($part->isSubscriber($ilUser->getId())) {
406 $part->deleteSubscriber($ilUser->getId());
409 $part->unregister($ilUser->getId());
411 if ($a_refuse_participation) {
412 $event_part = new \ilEventParticipants($this->
object->getId());
425 $this->
object->getRefId()
433 $ilAppEventHandler->raise(
434 "components/ILIAS/Session",
437 'obj_id' => $this->getCurrentObject()->
getId(),
438 'ref_id' => $this->getCurrentObject()->
getRefId(),
439 'usr_id' => $ilUser->getId()
442 if ($a_refuse_participation) {
443 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'sess_participation_refused_info'),
true);
445 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'event_unregistered'),
true);
447 $this->
ctrl->returnToParent($this);
450 public static function _goto(
string $a_target): void
453 $main_tpl = $DIC->ui()->mainTemplate();
455 $ilAccess = $DIC->access();
456 $lng = $DIC->language();
458 $ilCtrl = $DIC->ctrl();
459 $parts = explode(
'_', $a_target);
462 if ($ilAccess->checkAccess(
'write',
'', $a_target)) {
464 $ilCtrl->setTargetScript(
'ilias.php');
465 $ilCtrl->setParameterByClass(
'ilSessionMembershipGUI',
'ref_id', $a_target);
466 $ilCtrl->setTargetScript(
'ilias.php');
467 $ilCtrl->redirectByClass(array(
'ilRepositoryGUI', __CLASS__,
'ilSessionMembershipGUI'));
471 if ($ilAccess->checkAccess(
'visible',
"", $a_target)) {
474 $main_tpl->setOnScreenMessage(
'failure', sprintf(
475 $lng->
txt(
"msg_no_perm_read_item"),
489 $this->
ctrl->redirectByClass(
490 [self::class, ilInfoScreenGUI::class],
539 if (!$this->getCurrentObject()->enabledRegistrationForUsers() || $ilUser->isAnonymous()) {
545 $this->
ctrl->setParameter($this,
"ref_id", $this->getCurrentObject()->
getRefId());
548 if ($this->
object->isCannotParticipateOptionEnabled()) {
549 $btn_excused = $this->
ui->factory()->button()->standard(
550 $this->
lng->txt(
'sess_bt_refuse'),
551 $this->
ctrl->getLinkTarget($this,
'refuseParticipation')
557 if (!is_null($btn_excused)) {
558 $ilToolbar->addComponent($btn_excused);
561 } elseif ($part->isSubscriber($ilUser->getId())) {
562 if (!is_null($btn_excused)) {
563 $ilToolbar->addComponent($btn_excused);
567 if (!is_null($btn_excused)) {
568 $ilToolbar->addComponent($btn_excused);
576 $this->getCurrentObject()->isRegistrationUserLimitEnabled() &&
577 $this->getCurrentObject()->getRegistrationMaxUsers() &&
580 if ($this->getCurrentObject()->isRegistrationWaitingListEnabled()) {
581 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'sess_reg_max_users_exceeded_wl'));
582 $btn_attend = $this->
ui->factory()->button()->primary(
583 $this->
lng->txt(
"mem_add_to_wl"),
584 $this->
ctrl->getLinkTargetByClass(array(
"ilRepositoryGUI",
"ilObjSessionGUI"),
"register")
586 $ilToolbar->addComponent($btn_attend);
587 if (!$event_part->
isExcused($ilUser->getId()) && !is_null($btn_excused)) {
588 $ilToolbar->addComponent($btn_excused);
591 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'sess_reg_max_users_exceeded'));
595 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'sess_join_info'));
596 $btn_attend = $this->
ui->factory()->button()->primary(
597 $this->
lng->txt(
"join_session"),
598 $this->
ctrl->getLinkTargetByClass(array(
"ilRepositoryGUI",
"ilObjSessionGUI"),
"register")
600 $ilToolbar->addComponent($btn_attend);
601 if (!$event_part->
isExcused($ilUser->getId()) && !is_null($btn_excused)) {
602 $ilToolbar->addComponent($btn_excused);
609 protected function infoScreen():
void 616 $this->tabs_gui->setTabActive(
'info_short');
621 $info->enableBookingInfo(
true);
635 foreach ($eventItems as $item) {
640 $list_gui->setContainerObject($this);
644 $html .= $list_gui->getListItemHTML(
645 (
int) $item[
'ref_id'],
646 (
int) $item[
'obj_id'],
647 (
string) $item[
'title'],
648 (
string) $item[
'description']
653 $info->addSection($this->
lng->txt(
'event_materials'));
663 if (strlen($this->
object->getLocation()) || strlen($this->
object->getDetails())) {
664 $info->addSection($this->
lng->txt(
'event_section_information'));
668 $this->
lng->txt(
'event_location'),
672 if (strlen($this->
object->getDetails())) {
674 $this->
lng->txt(
'event_details_workflow'),
681 $this->record_gui->parse();
684 $info->addMetaDataSections($this->
object->getId(), 0, $this->
object->getType());
688 if ($this->
object->hasTutorSettings()) {
689 $info->addSection($this->
lng->txt(
'event_tutor_data'));
690 if (strlen($fullname = $this->
object->getName())) {
692 $this->
lng->txt(
'event_lecturer'),
696 if (strlen($email = $this->
object->getEmail())) {
698 $this->
lng->txt(
'tutor_email'),
702 if (strlen($phone = $this->
object->getPhone())) {
704 $this->
lng->txt(
'tutor_phone'),
712 $contacts =
$parts->getContacts();
713 if (count($contacts) > 0) {
714 $info->addSection($this->
lng->txt(
"crs_mem_contacts"));
715 foreach ($contacts as $contact) {
717 $pgui->setBackUrl($this->
ctrl->getLinkTargetByClass(
"ilinfoscreengui"));
718 $pgui->setEmbedded(
true);
719 $info->addProperty(
"", $pgui->getHTML());
729 $this->
object->getRefId(),
730 $this->
object->getId(),
737 if (!is_object($this->
object)) {
750 $this->
ctrl->setParameter($this,
'ref_id', $this->
object->getRefId());
751 $this->
ctrl->setParameter($this,
'new_type',
'');
752 $this->
ctrl->redirect($this,
'materials');
755 public function saveObject(
bool $a_redirect_on_success =
true): void
762 $this->
ctrl->saveParameter($this,
"new_type");
765 $this->ilErr->setMessage(
'');
766 if (!$this->
form->checkInput()) {
767 $this->tpl->setOnScreenMessage(
769 $this->
lng->txt(
'err_check_input')
771 $this->
form->setValuesByPost();
778 $this->ilErr->setMessage($this->
lng->txt(
'err_check_input'));
784 $this->
object->validate();
785 $this->
object->getFirstAppointment()->validate();
787 if (strlen($this->ilErr->getMessage())) {
788 $this->tpl->setOnScreenMessage(
'failure', $this->ilErr->getMessage());
789 $this->
form->setValuesByPost();
793 $this->
object->create();
794 $this->
object->createReference();
795 $this->
object->putInTree($this->requested_ref_id);
796 $this->
object->setPermissions($this->requested_ref_id);
806 $this->record_gui->writeEditForm($this->
object->getId());
813 $this->
object->applyDidacticTemplate($dtpl);
817 if (!$this->
form->getInput(
"lp_preset")) {
820 $lp_obj_settings->update(
false);
824 $this->
object->getFirstAppointment()->setSessionId($this->
object->getId());
825 $this->
object->getFirstAppointment()->create();
829 $object_service->
commonSettings()->legacyForm($this->
form, $this->
object)->saveTileImage();
833 if ($a_redirect_on_success) {
834 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'event_add_new_event'),
true);
835 $this->
ctrl->returnToParent($this);
848 if (!isset($_FILES[
'files'][
'name'][$counter])) {
851 if (!strlen($_FILES[
'files'][
'name'][$counter])) {
858 $file->setDescription(
'');
861 $new_ref_id = $file->createReference();
862 $file->putInTree($tree->
getParentId($this->object->getRefId()));
863 $file->setPermissions($tree->
getParentId($this->object->getRefId()));
866 if (!$upload->hasBeenProcessed()) {
869 $file->getUploadFile(
870 $_FILES[
'files'][
'tmp_name'][$counter],
871 $_FILES[
'files'][
'name'][$counter]
874 $items[] = $new_ref_id;
886 if (!$this->rec->getFrequenceType()) {
891 $period_start = clone $this->
object->getFirstAppointment()->getStart();
894 $period_end = clone $this->
object->getFirstAppointment()->getStart();
898 $period_diff = $this->
object->getFirstAppointment()->getEnd()->get(
IL_CAL_UNIX) -
899 $this->
object->getFirstAppointment()->getStart()->get(
IL_CAL_UNIX);
906 foreach ($date_list->get() as $date) {
911 $new_obj = $this->
object->cloneObject($parent_id);
916 $new_obj->applyDidacticTemplate($dtpl);
920 $new_obj->getFirstAppointment()->setStartingTime($date->get(
IL_CAL_UNIX));
921 $new_obj->getFirstAppointment()->setEndingTime($date->get(
IL_CAL_UNIX) + $period_diff);
922 $new_obj->getFirstAppointment()->update();
926 if (!$a_activate_lp) {
929 $lp_obj_settings->update(
false);
942 $this->tabs_gui->setTabActive(
'settings');
945 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.sess_edit.html',
'components/ILIAS/Session');
946 $this->tpl->setVariable(
'EVENT_EDIT_TABLE', $this->
form->getHTML());
953 $old_autofill = $this->
object->hasWaitingListAutoFill();
956 $this->ilErr->setMessage(
'');
957 if (!$this->
form->checkInput()) {
958 $this->tpl->setOnScreenMessage(
960 $this->
lng->txt(
'err_check_input')
962 $this->
form->setValuesByPost();
971 $new_type_info = $this->
form->getInput(
'didactic_type');
972 if ($new_type_info) {
973 $new_type = explode(
'_', $this->
form->getInput(
'didactic_type'));
974 $new_type = (
int) $new_type[1];
976 $modified = ($new_type !== $old_type);
983 $this->tpl->setOnScreenMessage(
985 $this->
lng->txt(
'err_check_input')
987 $this->
form->setValuesByPost();
993 $this->
object->validate();
994 $this->
object->getFirstAppointment()->validate();
996 if (strlen($this->ilErr->getMessage())) {
997 $this->tpl->setOnScreenMessage(
'failure', $this->ilErr->getMessage());
1001 $this->
object->update();
1002 $this->
object->getFirstAppointment()->update();
1012 $this->record_gui->writeEditForm();
1016 $object_service->
commonSettings()->legacyForm($this->
form, $this->
object)->saveTileImage();
1019 if (!$old_autofill &&
1020 $this->
object->hasWaitingListAutoFill()) {
1021 $this->
object->handleAutoFill();
1026 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'event_updated'),
true);
1027 $this->
ctrl->redirect($this,
'edit');
1031 if ($new_type == 0) {
1032 $new_type_txt = $this->
lng->txt(
'il_sess_status_open');
1035 $new_type_txt = $dtpl->getPresentationTitle($this->
lng->getLangKey());
1037 $this->tabs_gui->activateTab(
'settings');
1040 $confirm->setFormAction($this->
ctrl->getFormAction($this));
1041 $confirm->setHeaderText($this->
lng->txt(
'sess_warn_sess_type_changed'));
1045 $this->
lng->txt(
'sess_info_new_sess_type') .
': ' . $new_type_txt
1047 $confirm->setConfirm($this->
lng->txt(
'sess_change_type'),
'updateSessionType');
1048 $confirm->setCancel($this->
lng->txt(
'cancel'),
'edit');
1050 $this->tpl->setContent($confirm->getHTML());
1059 $this->
object->getRefId(),
1060 (
int) $this->
http->request()->getParsedBody()[
'sess_type']
1063 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'settings_saved'),
true);
1064 $this->
ctrl->redirect($this,
'edit');
1074 $is_course = $is_group =
false;
1078 if ($this->container_ref_id) {
1081 if (!$this->container_ref_id) {
1083 if ($this->container_ref_id) {
1087 if (!$this->container_ref_id) {
1088 $this->tpl->setOnScreenMessage(
'failure',
'No container object found. Aborting');
1093 if ($a_init_participants && $this->container_obj_id) {
1096 } elseif ($is_group) {
1106 $this->tabs_gui->activateTab(
'materials');
1108 $parent_ref_id = $this->tree->getParentId($this->
object->getRefId());
1110 $parent_gui_class =
'ilObj' . $this->obj_definition->getClassName($parent_type) .
'GUI';
1111 $this->
ctrl->setParameterByClass($parent_gui_class,
'ref_id', $parent_ref_id);
1116 $this->
object->getRefId()
1120 $this->
ctrl->clearParameterByClass($parent_gui_class,
'ref_id');
1126 $tbl->setDisableFilterHiding(
true);
1128 $tbl->addMultiCommand(
'saveMaterials', $this->
lng->txt(
'sess_assign'));
1129 $tbl->addMultiCommand(
"removeMaterials", $this->
lng->txt(
"remove"));
1131 $tbl->setTitle($this->
lng->txt(
"event_assign_materials_table"));
1132 $tbl->setDescription($this->
lng->txt(
'event_assign_materials_info'));
1134 $tbl->setMaterialItems($this->event_items->getItems());
1136 $data = $tbl->getDataFromDb();
1137 $tbl->setMaterials(
$data);
1139 $this->tpl->setContent($tbl->getHTML());
1144 $parent_ref_id = $this->tree->getParentId($this->
object->getRefId());
1146 $parent_gui_class =
'ilObj' . $this->obj_definition->getClassName($parent_type) .
'GUI';
1147 $parent_gui =
new $parent_gui_class(
'', $parent_ref_id,
true,
false);
1148 $types = $parent_gui->getCreatableObjectTypes();
1149 foreach (array_merge([
'itgr',
'sess' ], $this->objDefinition->getSideBlockTypes()) as $type_to_remove) {
1150 unset($types[$type_to_remove]);
1158 $tbl->writeFilterToSession();
1159 $tbl->resetOffset();
1160 $this->
ctrl->redirect($this,
"materials");
1166 $tbl->resetOffset();
1167 $tbl->resetFilter();
1168 $this->
ctrl->redirect($this,
"materials");
1184 $db_items = $this->event_items->
getItems();
1187 $list_items_checked =
array_map(
'intval', $list_items_checked);
1189 $items_to_save = array_merge($db_items, $list_items_checked);
1190 $items_to_save = array_unique($items_to_save);
1192 $this->event_items->setItems($items_to_save);
1193 $this->event_items->update();
1204 $tbl->storeNavParameter();
1206 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'settings_saved'),
true);
1207 $this->
ctrl->redirect($this,
'materials');
1216 $ilTabs->setTabActive(
'event_edit_members');
1219 $form = $list->initForm(
'printAttendanceList');
1232 $list->setId(
'sessattlst');
1234 $event_app = $this->
object->getFirstAppointment();
1238 $desc .=
" " . $this->
object->getTitle();
1239 $list->setTitle($this->
lng->txt(
'sess_attendance_list'), $desc);
1241 $list->addPreset(
'mark', $this->
lng->txt(
'trac_mark'),
true);
1242 $list->addPreset(
'comment', $this->
lng->txt(
'trac_comment'),
true);
1243 if ($this->
object->enabledRegistration()) {
1244 $list->addPreset(
'registered', $this->
lng->txt(
'event_tbl_registered'),
true);
1246 $list->addPreset(
'participated', $this->
lng->txt(
'event_tbl_participated'),
true);
1247 $list->addBlank($this->
lng->txt(
'sess_signature'));
1249 $list->addUserFilter(
'registered', $this->
lng->txt(
'event_list_registered_only'));
1259 $list->initFromForm();
1260 $list->setCallback(array($this,
'getAttendanceListUserData'));
1263 $list->getFullscreenHTML();
1268 $data = $this->event_part->getUser($a_user_id);
1270 if ($a_filters && $a_filters[
"registered"] && !
$data[
"registered"]) {
1275 $this->
lng->txt(
'yes') :
1276 $this->
lng->txt(
'no');
1277 $data[
'participated'] =
$data[
'participated'] ?
1278 $this->
lng->txt(
'yes') :
1279 $this->
lng->txt(
'no');
1290 if (!$ilAccess->checkAccess(
'manage_members',
'', $this->object->getRefId())) {
1291 $this->ilErr->raiseError($this->
lng->txt(
'msg_no_perm_read'), $this->ilErr->MESSAGE);
1294 $this->tpl->addBlockFile(
'ADM_CONTENT',
'adm_content',
'tpl.sess_list.html',
'components/ILIAS/Session');
1295 $this->
__showButton($this->
ctrl->getLinkTarget($this,
'exportCSV'), $this->
lng->txt(
'event_csv_export'));
1297 $this->tpl->addBlockFile(
"EVENTS_TABLE",
"events_table",
"tpl.table.html");
1298 $this->tpl->addBlockFile(
'TBL_CONTENT',
'tbl_content',
'tpl.sess_list_row.html',
'components/ILIAS/Session');
1301 $members = $members_obj->getParticipants();
1307 $this->
lng->txt(
"event_overview"),
1308 'standard/icon_usr.svg',
1309 $this->
lng->txt(
'obj_usr')
1311 $this->
ctrl->setParameter($this,
'offset', $this->requested_offset);
1317 if (!is_object($tmp_event) || $tmp_event->getType() !=
'sess') {
1320 $events[] = $tmp_event;
1327 $headerNames[] = $this->
lng->txt(
'name');
1328 $headerVars[] =
"name";
1329 $colWidth[] =
'20%';
1331 for ($i = 1; $i <= count($events); $i++) {
1332 $headerNames[] = $i;
1333 $headerVars[] =
"event_" . $i;
1334 $colWidth[] = 80 / count($events) .
"%";
1337 $this->tpl->setVariable(
"FORMACTION", $this->
ctrl->getFormAction($this));
1338 $tbl->setHeaderNames($headerNames);
1339 $tbl->setHeaderVars($headerVars, $this->
ctrl->getParameterArray($this));
1340 $tbl->setColumnWidth($colWidth);
1342 $tbl->setOrderColumn($this->requested_sort_by);
1343 $tbl->setOrderDirection($this->requested_sort_order);
1344 $tbl->setOffset($this->requested_offset);
1345 $tbl->setMaxCount(count($members));
1346 $tbl->setFooter(
"tblfooter", $this->
lng->txt(
"previous"), $this->
lng->txt(
"next"));
1348 $sliced_users = array_slice($members, $this->requested_offset,
ilSession::get(
"tbl_limit"));
1349 $tbl->disable(
'sort');
1353 foreach ($sliced_users as
$user_id) {
1354 foreach ($events as $event_obj) {
1355 $this->tpl->setCurrentBlock(
"eventcols");
1360 $this->tpl->setVariable(
"IMAGE_PARTICIPATED", $event_part->
hasParticipated($user_id) ?
1364 $this->tpl->setVariable(
"PARTICIPATED", $event_part->
hasParticipated($user_id) ?
1365 $this->
lng->txt(
'event_participated') :
1366 $this->
lng->txt(
'event_not_participated'));
1369 $this->tpl->parseCurrentBlock();
1372 $this->tpl->setCurrentBlock(
"tbl_content");
1374 $this->tpl->setVariable(
"LASTNAME", $name[
'lastname']);
1375 $this->tpl->setVariable(
"FIRSTNAME", $name[
'firstname']);
1377 $this->tpl->parseCurrentBlock();
1380 $this->tpl->setVariable(
"HEAD_TXT_LEGEND", $this->
lng->txt(
"legend"));
1381 $this->tpl->setVariable(
"HEAD_TXT_DIGIT", $this->
lng->txt(
"event_digit"));
1382 $this->tpl->setVariable(
"HEAD_TXT_EVENT", $this->
lng->txt(
"event"));
1383 $this->tpl->setVariable(
"HEAD_TXT_LOCATION", $this->
lng->txt(
"event_location"));
1384 $this->tpl->setVariable(
"HEAD_TXT_DATE_TIME", $this->
lng->txt(
"event_date_time"));
1386 foreach ($events as $event_obj) {
1387 $this->tpl->setCurrentBlock(
"legend_loop");
1388 $this->tpl->setVariable(
"LEGEND_DIGIT", $i++);
1389 $this->tpl->setVariable(
"LEGEND_EVENT_TITLE", $event_obj->getTitle());
1390 $this->tpl->setVariable(
"LEGEND_EVENT_DESCRIPTION", $event_obj->getDescription());
1391 $this->tpl->setVariable(
"LEGEND_EVENT_LOCATION", $event_obj->getLocation());
1392 $this->tpl->setVariable(
"LEGEND_EVENT_APPOINTMENT", $event_obj->getFirstAppointment()->appointmentToString());
1393 $this->tpl->parseCurrentBlock();
1397 protected function __showButton(
string $cmd,
string $text,
string $target =
''): void
1399 $this->
toolbar->addButton($text, $this->
ctrl->getLinkTarget($this, $cmd), $target);
1409 $this->
lng->loadLanguageModule(
'dateplaner');
1413 $this->
form =
new ilPropertyFormGUI();
1414 $this->
form->setMultipart(
true);
1415 $this->
form->setTableWidth(
'600px');
1416 $this->
form->setFormAction($this->
ctrl->getFormAction($this));
1417 $this->
form->setMultipart(
true);
1421 $this->
lng->loadLanguageModule(
'dateplaner');
1423 $dur->setRequired(
true);
1424 $dur->enableToggleFullTime(
1425 $this->
lng->txt(
'event_fulltime_info'),
1426 $this->
object->getFirstAppointment()->enabledFulltime()
1428 $dur->setShowTime(
true);
1429 $dur->setStart($this->
object->getFirstAppointment()->getStart());
1430 $dur->setEnd($this->
object->getFirstAppointment()->getEnd());
1432 $this->
form->addItem($dur);
1436 if ($a_mode ==
'create') {
1437 if (!is_object($this->rec)) {
1441 $rec->allowUnlimitedRecurrences(
false);
1443 $this->
form->addItem($rec);
1447 $lp->setInfo($this->
lng->txt(
"sess_lp_preset_info"));
1448 $lp->setChecked(
true);
1449 $this->
form->addItem($lp);
1453 $section->setTitle($this->
lng->txt(
'event_section_information'));
1454 $this->
form->addItem($section);
1458 $title->setRequired(
true);
1459 $title->setValue($this->
object->getTitle());
1460 $title->setSize(50);
1461 $title->setMaxLength(70);
1462 $this->
form->addItem($title);
1469 $this->
form->addItem($desc);
1476 $this->
form->addItem($desc);
1481 $details->setCols(50);
1482 $details->setRows(4);
1483 $this->
form->addItem($details);
1485 if ($a_mode ==
'create') {
1490 $this->record_gui->setRefId($this->requested_ref_id);
1491 $this->record_gui->setPropertyForm($this->
form);
1492 $this->record_gui->parse();
1500 $this->record_gui->parse();
1506 $section->setTitle($this->
lng->txt(
'event_tutor_data'));
1507 $this->
form->addItem($section);
1511 $tutor_name->setValue($this->
object->getName());
1512 $tutor_name->setSize(20);
1513 $tutor_name->setMaxLength(70);
1514 $this->
form->addItem($tutor_name);
1517 $tutor_email =
new ilTextInputGUI($this->
lng->txt(
'tutor_email'),
'tutor_email');
1518 $tutor_email->setValue($this->
object->getEmail());
1519 $tutor_email->setSize(20);
1520 $tutor_email->setMaxLength(70);
1521 $this->
form->addItem($tutor_email);
1524 $tutor_phone =
new ilTextInputGUI($this->
lng->txt(
'tutor_phone'),
'tutor_phone');
1525 $tutor_phone->setValue($this->
object->getPhone());
1526 $tutor_phone->setSize(20);
1527 $tutor_phone->setMaxLength(70);
1528 $this->
form->addItem($tutor_phone);
1531 $section->setTitle($this->
lng->txt(
'sess_section_reg'));
1532 $this->
form->addItem($section);
1545 $reg_settings->addMembershipFormElements($this->
form,
'');
1549 $section->setTitle($this->
lng->txt(
'event_assign_files'));
1550 $this->
form->addItem($section);
1554 $this->
form->addItem($files);
1557 $section->setTitle($this->
lng->txt(
'sess_setting_header_presentation'));
1558 $this->
form->addItem($section);
1560 $object_service->
commonSettings()->legacyForm($this->
form, $this->
object)->addTileImage();
1563 $features->setTitle($this->
lng->txt(
'obj_features'));
1564 $this->
form->addItem($features);
1574 $gallery->setChecked($this->
object->getShowMembers());
1575 $gallery->setInfo($this->
lng->txt(
'sess_show_participants_info'));
1576 $this->
form->addItem($gallery);
1581 $mail_type->
setValue((
string) $this->
object->getMailToMembersType());
1584 $this->
lng->txt(
'sess_mail_admins_only'),
1586 $this->
lng->txt(
'sess_mail_admins_only_info')
1588 $mail_type->addOption($mail_tutors);
1591 $this->
lng->txt(
'sess_mail_all'),
1593 $this->
lng->txt(
'sess_mail_all_info')
1595 $mail_type->addOption($mail_all);
1596 $this->
form->addItem($mail_type);
1602 $this->
form->setTitle($this->
lng->txt(
'event_table_create'));
1604 $this->
form->addCommandButton(
'save', $this->
lng->txt(
'event_btn_add'));
1605 $this->
form->addCommandButton(
'saveAndAssignMaterials', $this->
lng->txt(
'event_btn_add_edit'));
1606 $this->
form->addCommandButton(
'cancel', $this->
lng->txt(
'cancel'));
1611 $this->
form->setTitle($this->
lng->txt(
'event_table_update'));
1613 $this->
form->addCommandButton(
'update', $this->
lng->txt(
'save'));
1614 $this->
form->addCommandButton(
'cancelEdit', $this->
lng->txt(
'cancel'));
1623 $event = $this->
form->getItemByPostVar(
'event');
1624 if ($event->getStart() && $event->getEnd()) {
1625 $this->
object->getFirstAppointment()->setStartingTime($event->getStart()->get(
IL_CAL_UNIX));
1626 $this->
object->getFirstAppointment()->setEndingTime($event->getStart()->get(
IL_CAL_UNIX));
1627 $this->
object->getFirstAppointment()->setStart($event->getStart());
1628 $this->
object->getFirstAppointment()->setEnd($event->getEnd());
1629 $this->
object->getFirstAppointment()->toggleFulltime($event->getStart() instanceof
ilDate);
1632 $this->
object->setTitle($this->
form->getInput(
'title'));
1633 $this->
object->setDescription($this->
form->getInput(
'desc'));
1634 $this->
object->setLocation($this->
form->getInput(
'location'));
1635 $this->
object->setName($this->
form->getInput(
'tutor_name'));
1636 $this->
object->setPhone($this->
form->getInput(
'tutor_phone'));
1637 $this->
object->setEmail($this->
form->getInput(
'tutor_email'));
1638 $this->
object->setDetails($this->
form->getInput(
'details'));
1640 $this->
object->setRegistrationNotificationEnabled((
bool) $this->
form->getInput(
'registration_notification'));
1641 $this->
object->setRegistrationNotificationOption($this->
form->getInput(
'notification_option'));
1643 $this->
object->setRegistrationType((
int) $this->
form->getInput(
'registration_type'));
1645 switch ($this->
object->getRegistrationType()) {
1647 $this->
object->enableCannotParticipateOption((
bool) $this->
form->getInput(
'show_cannot_participate_direct'));
1650 $this->
object->enableCannotParticipateOption((
bool) $this->
form->getInput(
'show_cannot_participate_request'));
1653 $this->
object->enableCannotParticipateOption(
false);
1658 $this->
object->setRegistrationMaxUsers((
int) $this->
form->getInput(
'registration_max_members'));
1659 $this->
object->enableRegistrationUserLimit((
int) $this->
form->getInput(
'registration_membership_limited'));
1660 $this->
object->setShowMembers((
bool) $this->
form->getInput(
'show_members'));
1661 $this->
object->setMailToMembersType((
int) $this->
form->getInput(
'mail_type'));
1663 switch ((
int) $this->
form->getInput(
'waiting_list')) {
1665 $this->
object->enableRegistrationWaitingList(
true);
1666 $this->
object->setWaitingListAutoFill(
true);
1670 $this->
object->enableRegistrationWaitingList(
true);
1671 $this->
object->setWaitingListAutoFill(
false);
1675 $this->
object->enableRegistrationWaitingList(
false);
1676 $this->
object->setWaitingListAutoFill(
false);
1685 switch ($this->
form->getInput(
'frequence')) {
1687 $this->rec->setFrequenceType($this->
form->getInput(
'frequence'));
1688 $this->rec->setInterval((
int) $this->
form->getInput(
'count_DAILY'));
1692 $this->rec->setFrequenceType($this->
form->getInput(
'frequence'));
1693 $this->rec->setInterval((
int) $this->
form->getInput(
'count_WEEKLY'));
1694 if (is_array($this->
form->getInput(
'byday_WEEKLY'))) {
1700 $this->rec->setFrequenceType($this->
form->getInput(
'frequence'));
1701 $this->rec->setInterval((
int) $this->
form->getInput(
'count_MONTHLY'));
1702 switch ((
int) $this->
form->getInput(
'subtype_MONTHLY')) {
1708 switch ((
int) $this->
form->getInput(
'monthly_byday_day')) {
1711 $this->rec->setBYSETPOS($this->
form->getInput(
'monthly_byday_num'));
1712 $this->rec->setBYDAY(
'MO,TU,WE,TH,FR');
1717 $this->rec->setBYMONTHDAY($this->
form->getInput(
'monthly_byday_num'));
1721 $this->rec->setBYDAY(($this->
form->getInput(
'monthly_byday_num') . $this->
form->getInput(
'monthly_byday_day')));
1727 $this->rec->setBYMONTHDAY($this->
form->getInput(
'monthly_bymonthday'));
1733 $this->rec->setFrequenceType($this->
form->getInput(
'frequence'));
1734 $this->rec->setInterval((
int) $this->
form->getInput(
'count_YEARLY'));
1735 switch ((
int) $this->
form->getInput(
'subtype_YEARLY')) {
1741 $this->rec->setBYMONTH($this->
form->getInput(
'yearly_bymonth_byday'));
1742 $this->rec->setBYDAY(($this->
form->getInput(
'yearly_byday_num') . $this->
form->getInput(
'yearly_byday')));
1746 $this->rec->setBYMONTH($this->
form->getInput(
'yearly_bymonth_by_monthday'));
1747 $this->rec->setBYMONTHDAY($this->
form->getInput(
'yearly_bymonthday'));
1754 switch ((
int) $this->
form->getInput(
'until_type')) {
1756 $this->rec->setFrequenceUntilDate(
null);
1761 $this->rec->setFrequenceUntilDate(
null);
1762 $this->rec->setFrequenceUntilCount((
int) $this->
form->getInput(
'count'));
1766 $frequence = $this->
form->getItemByPostVar(
'frequence');
1767 $end = $frequence->getRecurrence()->getFrequenceUntilDate();
1768 $this->rec->setFrequenceUntilCount(0);
1769 $this->rec->setFrequenceUntilDate($end);
1776 return mktime($time[
'h'], $time[
'm'], 0, $date[
'm'], $date[
'd'], $date[
'y']);
1785 $title = strlen($this->
object->getTitle()) ? (
': ' . $this->
object->getTitle()) :
'';
1786 $title = $this->
object->getFirstAppointment()->appointmentToString() . $title;
1803 $parent_class = $objDefinition->
getClassName($parent_type);
1804 $parent_class =
'ilObj' . $parent_class .
'GUI';
1819 $ilHelp->setScreenIdComponent(
"sess");
1826 $this->tabs_gui->setBackTarget(
1827 $this->
lng->txt(
'back_to_' . $parent_type .
'_content'),
1828 $ilCtrl->getLinkTarget($this,
"redirectToParentContentPage")
1831 $this->tabs_gui->addTarget(
1833 $this->
ctrl->getLinkTarget($this,
'infoScreen')
1836 if ($ilAccess->checkAccess(
'write',
'', $this->object->getRefId())) {
1837 $this->tabs_gui->addTarget(
1839 $this->
ctrl->getLinkTarget($this,
'edit')
1842 if ($ilAccess->checkAccess(
'manage_materials',
'', $this->object->getRefId())) {
1843 $this->tabs_gui->addTab(
1845 $this->
lng->txt(
'crs_materials'),
1846 $this->
ctrl->getLinkTarget($this,
'materials')
1851 $parent_id = $tree->
getParentId($this->requested_ref_id);
1857 $this->tabs_gui->addTarget(
1858 "obj_tool_setting_booking",
1859 $this->
ctrl->getLinkTargetByClass(array(
"ilbookinggatewaygui"),
"")
1864 $is_participant = $this->
object->getMembersObject()->isAssigned($ilUser->getId());
1866 $membership_gui->addMemberTab($this->tabs_gui, $is_participant);
1871 $this->tabs_gui->addTarget(
1872 'learning_progress',
1873 $this->
ctrl->getLinkTargetByClass(array(
'ilobjsessiongui',
'illearningprogressgui'),
''),
1875 array(
'illplistofobjectsgui',
'illplistofsettingsgui',
'illearningprogressgui',
'illplistofprogressgui')
1880 if ($ilAccess->checkAccess(
'edit_metadata',
'', $this->ref_id)) {
1882 $mdtab = $mdgui->getTab();
1884 $this->tabs_gui->addTab(
1886 $this->
lng->txt(
'meta_data'),
1893 if ($ilAccess->checkAccess(
"write",
"", $this->object->getRefId())) {
1894 $this->tabs_gui->addTarget(
1896 $this->
ctrl->getLinkTargetByClass(
"ilexportgui",
""),
1904 if ($ilAccess->checkAccess(
'edit_permission',
"", $this->object->getRefId())) {
1905 $this->tabs_gui->addTarget(
1907 $this->
ctrl->getLinkTargetByClass(
"ilpermissiongui",
"perm"),
1908 array(
"perm",
"info",
"owner"),
1931 foreach ($a_usr_ids as $usr_id) {
1932 $tmp_data[$usr_id] = [];
1939 if (!$this->container_ref_id) {
1950 $parent_id = $tree->
getParentId($this->requested_ref_id);
1952 $ilCtrl->setParameterByClass(
"ilrepositorygui",
"ref_id", $parent_id);
1954 $ilCtrl->redirectByClass(
"ilrepositorygui",
"");
1963 foreach ($local_roles as $role_id) {
1965 if (substr($title, 0, 19) ==
'il_sess_participant') {
1984 $link = chr(13) . chr(10) . chr(13) . chr(10);
1985 $link .= $this->
lng->txt(
'sess_mail_permanent_link');
1986 $link .= chr(13) . chr(10) . chr(13) . chr(10);
1987 $link .= ilLink::_getLink($this->
object->getRefId());
1988 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,)
const string FREQ_MONTHLY
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()
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