19 declare(strict_types=1);
64 $this->
lng = $DIC->language();
65 $this->
lng->loadLanguageModule(
'dateplaner');
66 $this->
ctrl = $DIC->ctrl();
67 $this->tpl = $DIC->ui()->mainTemplate();
68 $this->
logger = $DIC->logger()->cal();
69 $this->
user = $DIC->user();
71 $this->
tabs = $DIC->tabs();
72 $this->
help = $DIC->help();
73 $this->error = $DIC[
'ilErr'];
75 $this->
http = $DIC->http();
77 $this->request = $DIC->http()->request();
88 if ($this->
http->wrapper()->query()->has(
'app_id')) {
89 return $this->
http->wrapper()->query()->retrieve(
100 if ($this->
http->wrapper()->post()->has(
'rexl')) {
101 $val = $this->
http->wrapper()->post()->retrieve(
106 if ($val === 0 && $this->
http->wrapper()->query()->has(
'rexl')) {
107 $val = $this->
http->wrapper()->query()->retrieve(
117 if ($this->
http->wrapper()->query()->has(
'dt')) {
118 return $this->
http->wrapper()->query()->retrieve(
129 $this->
tabs->clearTargets();
130 if ($this->
http->wrapper()->query()->has(
'app_id')) {
131 $this->
ctrl->saveParameter($this,
'app_id');
133 $this->
tabs->setBackTarget(
134 $this->
lng->txt(
'cal_back_to_cal'),
135 $this->
ctrl->getLinkTarget($this,
'cancel')
138 $next_class = $this->
ctrl->getNextClass($this);
139 switch ($next_class) {
141 $cmd = $this->
ctrl->getCmd(
"add");
154 $this->
ctrl->returnToParent($this);
163 $this->
ctrl->saveParameter($this, array(
'seed',
'idate'));
164 $this->
form->setFormAction($this->
ctrl->getFormAction($this));
165 $this->
form->setTitle($this->
lng->txt(
'cal_new_app'));
166 $this->
form->addCommandButton(
'save', $this->
lng->txt(
'cal_add_appointment'));
167 $this->
form->addCommandButton(
'cancel', $this->
lng->txt(
'cancel'));
170 $this->
form->setTitle($this->
lng->txt(
'cal_edit_appointment'));
171 $this->
ctrl->saveParameter($this, array(
'seed',
'app_id',
'idate'));
172 $this->
form->setFormAction($this->
ctrl->getFormAction($this));
173 $this->
form->addCommandButton(
'update', $this->
lng->txt(
'save'));
174 $this->
form->addCommandButton(
'cancel', $this->
lng->txt(
'cancel'));
179 $title->setValue($this->app->getTitle());
180 $title->setRequired(
true);
181 $title->setMaxLength(128);
183 $this->
form->addItem($title);
186 if ($this->
http->wrapper()->query()->has(
'category_id')) {
187 $category_id = $this->
http->wrapper()->query()->retrieve(
193 if ($this->
http->wrapper()->query()->has(
'ref_id')) {
194 $ref_id = $this->
http->wrapper()->query()->retrieve(
202 $selected_calendar = 0;
203 if ($this->
http->wrapper()->post()->has(
'calendar')) {
204 $selected_calendar = $this->
http->wrapper()->post()->retrieve(
209 if ($selected_calendar > 0) {
210 $calendar->setValue($selected_calendar);
211 } elseif ($category_id) {
212 $calendar->setValue((
int) $category_id);
213 $selected_calendar = (
int) $category_id;
214 } elseif ($a_mode ==
'edit') {
217 $calendar->setValue($cat);
218 $selected_calendar = $cat;
224 $cats->readSingleCalendar($selected_calendar);
227 $categories = $cats->prepareCategoriesOfUserForSelection();
228 $selected_calendar = key($categories);
229 $calendar->setValue($selected_calendar);
231 $calendar->setRequired(
true);
233 $calendar->setOptions($cats->prepareCategoriesOfUserForSelection());
236 $notification_cals = $cats->getNotificationCalendars();
237 $notification_cals = count($notification_cals) ? implode(
',', $notification_cals) :
'';
238 $calendar->addCustomAttribute(
"onchange=\"ilToggleNotification([" . $notification_cals .
"]);\"");
240 $this->
form->addItem($calendar);
243 $dur->setRequired(
true);
244 $dur->enableToggleFullTime(
245 $this->
lng->txt(
'cal_fullday_title'),
246 $this->app->isFullday()
248 $dur->setShowTime(
true);
249 $dur->setStart($this->app->getStart());
250 $dur->setEnd($this->app->getEnd());
251 $this->
form->addItem($dur);
254 if (!$a_edit_single_app) {
257 $this->
form->addItem($rec);
262 $where->setValue($this->app->getLocation());
263 $where->setMaxLength(128);
265 $this->
form->addItem($where);
268 $desc->
setValue($this->app->getDescription());
270 $this->
form->addItem($desc);
273 $ajax_url = $this->
ctrl->getLinkTarget(
275 'doUserAutoComplete',
282 $this->
lng->txt(
'cal_user_notification'),
285 $notu->setMulti(
true,
true);
286 $notu->setInfo($this->
lng->txt(
'cal_user_notification_info'));
287 $notu->setDataSource($ajax_url);
290 foreach ($this->
notification->getRecipients() as $rcp) {
291 switch ($rcp[
'type']) {
297 $values[] = $rcp[
'email'];
301 $notu->setValue($values);
302 $this->
form->addItem($notu);
315 $this->tpl->addJavaScript(
'assets/js/toggle_notification.js');
317 $not->setInfo($this->
lng->txt(
'cal_notification_info'));
319 $not->setChecked($this->app->isNotificationEnabled());
320 $not->setDisabled($disabled);
321 $this->
form->addItem($not);
331 return json_encode(
new stdClass(), JSON_THROW_ON_ERROR);
333 if (!$this->
http->wrapper()->query()->has(
'autoCompleteField')) {
340 $result_field =
'login';
342 $auto_complete_field = $this->
http->wrapper()->query()->retrieve(
344 $this->
refinery->kindlyTo()->string()
346 $a_fields = [$auto_complete_field];
347 $result_field = $auto_complete_field;
352 if ($this->
http->wrapper()->query()->has(
'fetchall')) {
356 $auto->setMoreLinkAvailable(
true);
357 $auto->setSearchFields($a_fields);
358 $auto->setResultField($result_field);
359 $auto->enableFieldSearchableCheck(
true);
361 if ($this->
http->wrapper()->post()->has(
'term')) {
362 $query = $this->
http->wrapper()->post()->retrieve(
364 $this->
refinery->kindlyTo()->string()
368 if ($this->
http->wrapper()->query()->has(
'term')) {
369 $query = $this->
http->wrapper()->query()->retrieve(
371 $this->
refinery->kindlyTo()->string()
375 echo $auto->getList($query);
384 $this->
help->setScreenIdComponent(
"cal");
385 $this->
help->setScreenId(
"app");
386 $this->
help->setSubScreenId(
"create");
391 $this->tpl->setContent($form->
getHTML());
394 protected function save(): void
396 $form = $this->
load(
'create');
398 if ($this->app->validate() and $this->
notification->validate()) {
399 if ((
int) $form->
getInput(
'calendar') === 0) {
406 $this->
notification->setEntryId($this->app->getEntryId());
408 $this->rec->setEntryId($this->app->getEntryId());
425 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'cal_created_appointment'),
true);
426 $this->
ctrl->returnToParent($this);
428 $this->
form->setValuesByPost();
429 if ($this->error->getMessage() !==
'') {
430 $this->tpl->setOnScreenMessage(
'failure', $this->error->getMessage());
432 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'err_check_input'));
446 $notification->setAppointmentId($this->app->getEntryId());
448 foreach ($this->
notification->getRecipients() as $rcp) {
449 switch ($rcp[
'type']) {
462 $notification->send();
471 $notification->setAppointmentId($app_id);
473 switch ($cat_info[
'type']) {
476 switch ($cat_info[
'obj_type']) {
480 $notification->setRefId(
$ref_id);
481 $notification->setType(
491 $notification->setRefId(
$ref_id);
492 $notification->setType(
501 $notification->send();
508 $this->showResponsibleUsersList($cat_info[
'obj_id']);
523 $this->
ctrl->saveParameter($this, array(
'seed',
'app_id',
'dt',
'idate'));
526 $confirm->setHeaderText($this->
lng->txt(
'cal_edit_single_or_all_info'));
527 $confirm->setFormAction($this->
ctrl->getFormAction($this));
528 $confirm->setCancel($this->
lng->txt(
'cancel'),
'cancel');
529 $confirm->addItem(
'appointments[]', (
string) $this->app->getEntryId(), $this->app->getTitle());
530 $confirm->addButton($this->
lng->txt(
'cal_edit_single'),
'editSingle');
531 $confirm->setConfirm($this->
lng->txt(
'cal_edit_recurrences'),
'edit');
533 $this->tpl->setContent($confirm->getHTML());
541 $this->
ctrl->setParameter($this,
'rexl',
"1");
542 $this->requested_rexl =
true;
551 $this->
help->setScreenIdComponent(
"cal");
552 $this->
help->setScreenId(
"app");
553 $this->
help->setSubScreenId(
"edit");
555 $this->
ctrl->saveParameter($this, array(
'seed',
'app_id',
'dt',
'idate'));
556 if ($this->requested_rexl) {
557 $this->
ctrl->setParameter($this,
'rexl', 1);
564 $yesterday = clone $current_date;
566 $tomorrow = clone $current_date;
569 foreach ($calc->calculateDateList($current_date, $tomorrow, 1) as $date_entry) {
586 if (!$cats->isVisible($cat_id)) {
587 $this->error->raiseError($this->
lng->txt(
'permission_denied'), $this->error->WARNING);
590 if (!$cats->isEditable($cat_id) or $this->app->isAutoGenerated()) {
595 $form = $this->
initForm(
'edit', $a_edit_single_app);
597 $this->tpl->setContent($form->
getHTML());
603 $info->setFormAction($this->
ctrl->getFormAction($this));
604 $info->addSection($this->
lng->txt(
'cal_details'));
608 $this->
lng->txt(
'appointment'),
610 $this->app->getStart(),
614 $info->addProperty($this->
lng->txt(
'title'), $this->app->getPresentationTitle());
617 if (strlen($desc = $this->app->getDescription())) {
618 $info->addProperty($this->
lng->txt(
'description'), $desc);
622 if (strlen($loc = $this->app->getLocation())) {
623 $info->addProperty($this->
lng->txt(
'cal_where'), $loc);
630 $info->addSection($this->
lng->txt(
'additional_info'));
637 $this->
lng->txt(
'perma_link'),
638 '<a class="small" href="' . $href .
'" target="_top">' . $href .
'</a>' 641 $this->tpl->setContent($info->getHTML());
647 $form = $this->
load(
'edit');
649 if ($this->app->validate() and $this->
notification->validate()) {
650 if (!(
int) $form->
getInput(
'calendar')) {
656 if ($single_editing) {
660 if ($selected_ut > 0) {
662 $exclusion->setEntryId($original_id);
677 $ass->addAssignment($cat_id);
680 $notification = (bool) $form->
getInput(
'not');
691 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'msg_obj_modified'),
true);
692 $this->
ctrl->returnToParent($this);
694 $this->
form->setValuesByPost();
695 $this->tpl->setOnScreenMessage(
'failure', $this->error->getMessage());
702 $this->
ctrl->saveParameter(
712 $app_id = (
int) ($this->request->getQueryParams()[
'app_id'] ?? 0);
714 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'err_check_input'));
715 $this->
ctrl->returnToParent($this);
721 $confirm->setFormAction($this->
ctrl->getFormAction($this));
722 $confirm->setHeaderText($this->
lng->txt(
'cal_delete_app_sure'));
723 $confirm->setCancel($this->
lng->txt(
'cancel'),
'cancel');
724 $confirm->addItem(
'appointments[]', (
string) $this->app->getEntryId(), $this->app->getTitle());
725 $confirm->setConfirm($this->
lng->txt(
'delete'),
'delete');
726 $this->tpl->setContent($confirm->getHTML());
735 $this->tpl->setContent($table->getHTML());
736 $this->tpl->setOnScreenMessage(
'question', $this->
lng->txt(
'cal_delete_app_sure'));
737 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'cal_recurrence_confirm_deletion'));
741 protected function delete():
void 743 $app_ids = (array) ($this->request->getParsedBody()[
'appointment_ids'] ?? []);
745 $this->
logger->dump($app_ids);
746 $app_ids = (array) ($this->request->getQueryParams()[
'app_id'] ?? []);
749 $this->
ctrl->returnToParent($this);
751 foreach ($app_ids as $app_id) {
752 $app_id = (
int) $app_id;
758 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'cal_deleted_app'),
true);
759 $this->
ctrl->returnToParent($this);
764 $recurrence_ids = (array) ($this->request->getParsedBody()[
'recurrence_ids'] ?? []);
765 $app_id = (
int) ($this->request->getQueryParams()[
'app_id'] ?? 0);
766 if (!count($recurrence_ids)) {
767 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'),
true);
768 $this->
ctrl->redirect($this,
'askDelete');
771 $this->
ctrl->returnToParent($this);
773 foreach ($recurrence_ids as $rdate) {
775 $exclusion->setEntryId($app_id);
780 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'cal_deleted_app'),
true);
781 $this->
ctrl->returnToParent($this);
787 $this->timezone = $this->
user->getTimeZone();
793 if ($this->
http->wrapper()->query()->has(
'hour')) {
794 $hour = $this->
http->wrapper()->query()->retrieve(
802 $this->default_fulltime =
true;
805 $time =
'0' . $hour .
':00:00';
807 $time = (
int) $hour .
':00:00';
814 $this->default_fulltime =
false;
820 $this->seed = clone
$seed;
821 $this->default_fulltime =
true;
831 $this->app->setStart($start);
834 if ($this->default_fulltime) {
835 #$seed_end->increment(IL_CAL_DAY,1); 839 $this->app->setEnd($seed_end);
840 $this->app->setFullday($this->default_fulltime);
852 $this->
form->checkInput();
854 $this->app->setTitle($form->
getInput(
'title'));
855 $this->app->setLocation($form->
getInput(
'location'));
856 $this->app->setDescription($form->
getInput(
'description'));
857 $this->app->enableNotification((
bool) $form->
getInput(
'not'));
859 $period = $this->
form->getItemByPostVar(
'event');
860 $start = $period->getStart();
861 $end = $period->getEnd();
863 $this->app->setFullday($start instanceof
ilDate);
864 $this->app->setStart($start);
865 $this->app->setEnd($end);
876 foreach ((array) $form->
getInput(
'notu') as $rcp) {
882 if (in_array($rcp, $map)) {
912 switch ($this->rec->getFrequenceType()) {
916 if ($this->rec->getRecurrenceId()) {
917 $this->rec->delete();
922 if ($this->rec->getRecurrenceId()) {
923 $this->rec->update();
936 $cat->setTitle($this->
lng->txt(
'cal_default_calendar'));
937 $cat->setObjId($this->
user->getId());
951 if ($this->
http->wrapper()->query()->has(
'dstart')) {
952 $dstart = $this->
http->wrapper()->query()->retrieve(
958 if ($this->
http->wrapper()->query()->has(
'dend')) {
959 $dend = $this->
http->wrapper()->query()->retrieve(
973 $this->
ctrl->setParameter($this,
'dstart', $dstart);
974 $this->
ctrl->setParameter($this,
'dend', $dend);
976 $conf->setFormAction($this->
ctrl->getFormAction($this));
977 $conf->setHeaderText($this->
lng->txt(
'cal_confirm_reg_info'));
978 $conf->setConfirm($this->
lng->txt(
'cal_reg_register'),
'register');
979 $conf->setCancel($this->
lng->txt(
'cancel'),
'cancel');
980 $conf->addItem(
'app_id', (
string) $entry->getEntryId(), $entry->getTitle() .
' (' . $start .
')');
981 $this->tpl->setContent($conf->getHTML());
984 protected function register():
void 987 if ($this->
http->wrapper()->query()->has(
'dstart')) {
988 $dstart = $this->
http->wrapper()->query()->retrieve(
994 if ($this->
http->wrapper()->query()->has(
'dend')) {
995 $dend = $this->
http->wrapper()->query()->retrieve(
1001 if ($this->
http->wrapper()->post()->has(
'app_id')) {
1002 $app_id = $this->
http->wrapper()->post()->retrieve(
1009 $this->
user->getId(),
1014 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'cal_reg_registered'),
true);
1015 $this->
ctrl->returnToParent($this);
1021 if ($this->
http->wrapper()->query()->has(
'dstart')) {
1022 $dstart = $this->
http->wrapper()->query()->retrieve(
1028 if ($this->
http->wrapper()->query()->has(
'dend')) {
1029 $dend = $this->
http->wrapper()->query()->retrieve(
1042 $this->
ctrl->setParameter($this,
'dstart', (
int) $dstart);
1043 $this->
ctrl->setParameter($this,
'dend', (
int) $dend);
1046 $conf->setFormAction($this->
ctrl->getFormAction($this));
1047 $conf->setHeaderText($this->
lng->txt(
'cal_confirm_unreg_info'));
1048 $conf->setConfirm($this->
lng->txt(
'cal_reg_unregister'),
'unregister');
1049 $conf->setCancel($this->
lng->txt(
'cancel'),
'cancel');
1050 $conf->addItem(
'app_id', (
string) $entry->getEntryId(), $entry->getTitle() .
' (' . $start .
')');
1052 $this->tpl->setContent($conf->getHTML());
1061 if ($this->
http->wrapper()->query()->has(
'dstart')) {
1062 $dstart = $this->
http->wrapper()->query()->retrieve(
1068 if ($this->
http->wrapper()->query()->has(
'dend')) {
1069 $dend = $this->
http->wrapper()->query()->retrieve(
1075 if ($this->
http->wrapper()->post()->has(
'app_id')) {
1076 $app_id = $this->
http->wrapper()->post()->retrieve(
1083 $this->
user->getId(),
1088 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'cal_reg_unregistered'),
true);
1089 $this->
ctrl->returnToParent($this);
1098 $this->
ctrl->saveParameter($this,
'app_id');
1101 $booking = new \ilBookingEntry($entry->getContextId());
1102 $user = $booking->getObjId();
1111 $this->tpl->setContent($form->
getHTML());
1147 if (!$booking->isAppointmentBookableForUser($entry,
$GLOBALS[
'DIC'][
'ilUser']->getId())) {
1148 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'cal_booking_failed_info'),
true);
1149 $this->
ctrl->returnToParent($this);
1154 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'cal_booking_confirmed'),
true);
1155 $this->
ctrl->returnToParent($this);
1175 if (!$booking->hasBooked($entry->getEntryId()) && !$booking->isOwner()) {
1176 $this->
ctrl->returnToParent($this);
1181 $entry_title =
' ' . $entry->getTitle();
1183 $this->
ctrl->returnToParent($this);
1188 $conf->setFormAction($this->
ctrl->getFormAction($this));
1189 $conf->setHeaderText(
1191 $this->
lng->txt(
'cal_cancel_booking_info') :
1192 $this->
lng->txt(
'cal_delete_booking_info')
1196 $this->
lng->txt(
'cal_cancel_booking') :
1197 $this->
lng->txt(
'delete'),
1202 $conf->setCancel($this->
lng->txt(
'cancel'),
'cancel');
1203 $conf->addItem(
'app_id', (
string) $entry->getEntryId(), $title .
' - ' . $entry_title);
1204 $this->tpl->setContent($conf->getHTML());
1219 if ($this->
http->wrapper()->post()->has(
'app_id')) {
1220 $app_id = $this->
http->wrapper()->post()->retrieve(
1229 foreach ($booking->getCurrentBookings($entry->getEntryId()) as $bookuser) {
1239 $this->
user->getId(),
1240 $entry->getContextId(),
1247 foreach ($apps as $own_app) {
1249 $ref_entry->delete();
1253 $booking->cancelBooking($entry->getEntryId());
1264 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'cal_cancel_booking_confirmed'),
true);
1265 $this->
ctrl->returnToParent($this);
__construct(ilDate $seed, ilDate $initialDate, int $a_appointment_id=0)
initAppointment(int $a_app_id=0)
loadRecurrenceSettings(ilPropertyFormGUI $form)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _lookupCategory(int $a_cal_id)
ilCalendarUserNotification $notification
deleteExclude(bool $a_return=true)
static _lookupFullname(int $a_user_id)
static getAppointmentIds(int $a_user_id, ?int $a_context_id=null, ?ilDateTime $a_start=null, ?int $a_type=null, bool $a_check_owner=true)
const PRIVACY_MODE_RESPECT_USER_SETTING
static _getFirstRecurrence($a_cal_id)
Model of calendar entry recurrcences based on iCalendar-RFC-5545.
Distributes calendar mail notifications.
static _getAllReferences(int $id)
get all reference ids for object ID
static cancelBooking(int $a_usr_id, int $a_app_id, bool $a_send_notification=true)
Cancel a booking.
distributeNotifications(int $a_cat_id, int $app_id, bool $a_new_appointment=true)
static initDomEvent(?ilGlobalTemplateInterface $a_main_tpl=null)
Init YUI DomEvent used in Services/Calendar, Modules/Session, Modules/Test (Jan 2022) ...
get(int $a_format, string $a_format_str='', string $a_tz='')
initInitialDate(ilDate $initialDate)
increment(string $a_type, int $a_count=1)
loadNotificationRecipients(ilPropertyFormGUI $form)
Stores calendar categories.
initForm(string $a_mode, bool $a_edit_single_app=false)
add(?ilPropertyFormGUI $form=null)
add new appointment
static _getRecurrences(int $a_cal_id)
get all recurrences of an appointment
unregister()
Unregister calendar, was confirmed.
askEdit()
Check edit single apppointment / edit all appointments for recurring appointments.
setRecurrence(int $a_type)
set type of recurrence public
notification()
description: > Example for rendring a notification glyph.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static _lookupObjId(int $ref_id)
static _lookupCategoryIdByObjId(int $a_obj_id)
lookup category by obj_id
setValue(string $a_value)
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
const TYPE_GRP_NEW_NOTIFICATION
cancelBooking(bool $send_mail=true)
Confirmation screen to cancel consultation appointment or ressource booking depends on calendar categ...
static http()
Fetches the global http state from ILIAS.
ilGlobalTemplateInterface $tpl
static _deleteByAppointmentId(int $a_app_id)
Delete appointment assignment.
Calculates an ilDateList for a given calendar entry and recurrence rule.
edit(bool $a_edit_single_app=false, ?ilPropertyFormGUI $form=null)
edit appointment
distributeUserNotifications()
Send mail to selected users.
getRecurrenceDateFromQuery()
calendarEntryToCategory(ilCalendarEntry $entry)
Get category object of given calendar entry.
static _loginExists(string $a_login, int $a_user_id=0)
check if a login name already exists You may exclude a user from the check by giving his user id as 2...
registration for calendar appointments
static _getStaticLink(?int $a_ref_id, string $a_type='', bool $a_fallback_goto=true, string $append="")
RequestInterface $request
setRecipients(array $a_rcps)
const TYPE_CRS_NOTIFICATION
addAssignment(int $a_cal_cat_id)
setStatus(?int $a_status)
Set booking status.
static _getInstance($a_usr_id=0)
get singleton instance
getAppointmentIdFromQuery()
bookconfirmed()
Book consultation appointment, was confirmed.
ilCalendarRecurrence $rec
form( $class_path, string $cmd, string $submit_caption="")
editSingle()
Edit one single appointment ^.
Administrate calendar appointments.
static deleteCalendarEntry(int $a_cal_id)
This class represents a text area property in a property form.
const TYPE_GRP_NOTIFICATION
static formatDate(ilDateTime $date, bool $a_skip_day=false, bool $a_include_wd=false, bool $include_seconds=false, ?ilObjUser $user=null,)
static _equals(ilDateTime $start, ilDateTime $end, string $a_compare_field='', string $a_tz='')
Check if two date are equal.
static bookAppointment(int $a_usr_id, int $a_app_id, string $comment='')
Book an appointment.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
RefineryFactory $refinery
static _lookupType(int $id, bool $reference=false)
book()
Confirmation screen for booking of consultation appointment.
const TYPE_CRS_NEW_NOTIFICATION
exit
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
const TYPE_USER_ANONYMOUS
cancelConfirmed(bool $send_mail=true)
Cancel consultation appointment or ressource booking, was confirmed This will delete the calendar ent...
confirmRegister()
Register to an appointment.
Class ilCalendarRecurrenceTableGUI.
getFirstAssignment()
get first assignment
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static formatPeriod(ilDateTime $start, ilDateTime $end, bool $a_skip_starting_day=false, ?ilObjUser $user=null)
Format a period of two dates Shows: 14.
getRecurrenceExclusionFromQuery()
static _lookupLogin(int $a_user_id)