3 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(
'./Services/Calendar/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);
1155 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'cal_booking_confirmed'),
true);
1156 $this->
ctrl->returnToParent($this);
1171 if (!$booking->hasBooked($entry->getEntryId())) {
1172 $this->
ctrl->returnToParent($this);
1178 $entry_title =
' ' . $entry->getTitle();
1180 $this->
ctrl->returnToParent($this);
1187 $conf->setFormAction($this->
ctrl->getFormAction($this));
1188 $conf->setHeaderText($this->
lng->txt(
'cal_cancel_booking_info'));
1189 $conf->setConfirm($this->
lng->txt(
'cal_cancel_booking'),
'cancelconfirmed');
1190 $conf->setCancel($this->
lng->txt(
'cancel'),
'cancel');
1191 $conf->addItem(
'app_id', (
string) $entry->getEntryId(), $title .
' - ' . $entry_title);
1193 $this->tpl->setContent($conf->getHTML());
1203 if ($this->
http->wrapper()->post()->has(
'app_id')) {
1204 $app_id = $this->
http->wrapper()->post()->retrieve(
1214 $this->
user->getId(),
1215 $entry->getContextId(),
1222 foreach ($apps as $own_app) {
1224 $ref_entry->delete();
1239 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'cal_cancel_booking_confirmed'),
true);
1240 $this->
ctrl->returnToParent($this);
__construct(ilDate $seed, ilDate $initialDate, int $a_appointment_id=0)
initAppointment(int $a_app_id=0)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
cancelConfirmed()
Cancel consultation appointment or ressource booking, was confirmed This will delete the calendar ent...
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)
const PRIVACY_MODE_RESPECT_USER_SETTING
static _getFirstRecurrence($a_cal_id)
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
Distributes calendar mail notifications.
static _getAllReferences(int $id)
get all reference ids for object ID
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) ...
static formatDate(ilDateTime $date, bool $a_skip_day=false, bool $a_include_wd=false, bool $include_seconds=false)
get(int $a_format, string $a_format_str='', string $a_tz='')
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
initInitialDate(ilDate $initialDate)
increment(string $a_type, int $a_count=1)
static writeBookingMessage(int $a_entry_id, int $a_usr_id, string $a_message)
Write booking message.
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
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)
static bookAppointment(int $a_usr_id, int $a_app_id)
Book an appointment.
const TYPE_GRP_NEW_NOTIFICATION
static getAppointmentIds(int $a_user_id, int $a_context_id=null, ?ilDateTime $a_start=null, ?int $a_type=null, bool $a_check_owner=true)
static http()
Fetches the global http state from ILIAS.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
ilGlobalTemplateInterface $tpl
static _deleteByAppointmentId(int $a_app_id)
Delete appointment assignment.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
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
cancelBooking(int $a_entry_id, ?int $a_user_id=null)
cancel calendar booking for user
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
edit(bool $a_edit_single_app=false, ilPropertyFormGUI $form=null)
edit appointment
cancelBooking()
Confirmation screen to cancel consultation appointment or ressource booking depends on calendar categ...
getAppointmentIdFromQuery()
bookconfirmed()
Book consultation appointment, was confirmed.
ilCalendarRecurrence $rec
form( $class_path, string $cmd, string $submit_caption="")
Error Handling & global info handling.
static formatPeriod(ilDateTime $start, ilDateTime $end, bool $a_skip_starting_day=false)
Format a period of two dates Shows: 14.
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 _equals(ilDateTime $start, ilDateTime $end, string $a_compare_field='', string $a_tz='')
Check if two date are equal.
Stores exclusion dates for calendar recurrences.
RefineryFactory $refinery
static _lookupType(int $id, bool $reference=false)
book()
Confirmation screen for booking of consultation appointment.
const TYPE_CRS_NEW_NOTIFICATION
const TYPE_USER_ANONYMOUS
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...
getRecurrenceExclusionFromQuery()
static _lookupLogin(int $a_user_id)