19declare(strict_types=1);
82 $this->
http = $DIC->http();
86 if ($this->
http->wrapper()->query()->has(
'user_id')) {
87 $user_id = $this->
http->wrapper()->query()->retrieve(
100 $this->user_id =
$DIC->user()->getId();
103 $this->
ctrl = $DIC->ctrl();
104 $this->
lng = $DIC->language();
105 $this->tpl =
$DIC->ui()->mainTemplate();
106 $this->
help = $DIC->help();
107 $this->
tabs = $DIC->tabs();
108 $this->
toolbar = $DIC->toolbar();
109 $this->global_user =
$DIC->user();
110 $this->ui_factory =
$DIC->ui()->factory();
111 $this->ui_renderer =
$DIC->ui()->renderer();
116 $this->search_assignment_to_appointments = $a_default;
117 if ($this->
http->wrapper()->query()->has(
'assignM')) {
118 $this->search_assignment_to_appointments = $this->
http->wrapper()->query()->retrieve(
129 return $this->
http->wrapper()->query()->retrieve(
130 BookingTableGUI::ID_TOKEN_NS,
133 $this->refinery->custom()->transformation(function ($value) use ($current_user_id) {
134 if ($value !== [
'ALL_OBJECTS']) {
135 throw new Exception(
'Invalid token');
148 if ($this->
http->wrapper()->query()->has(
'apps')) {
149 return [$this->
http->wrapper()->query()->retrieve(
'apps', $this->
refinery->kindlyTo()->int())];
156 if ($this->
http->wrapper()->post()->has(
'apps')) {
157 return $this->
http->wrapper()->post()->retrieve(
159 $this->
refinery->kindlyTo()->dictOf(
160 $this->refinery->kindlyTo()->int()
169 if ($this->
http->wrapper()->post()->has(
'apps_string')) {
170 $app_string = $this->
http->wrapper()->post()->retrieve(
172 $this->
refinery->kindlyTo()->string()
174 return array_map(
'intval', explode(
';', $app_string));
184 if ($this->
http->wrapper()->post()->has(
'bookuser')) {
185 return $this->
http->wrapper()->post()->retrieve(
187 $this->
refinery->kindlyTo()->dictOf(
188 $this->refinery->kindlyTo()->string()
200 if ($this->
http->wrapper()->query()->has(
'bookuser')) {
202 $this->
http->wrapper()->query()->retrieve(
204 $this->
refinery->kindlyTo()->string()
213 $this->
help->setScreenIdComponent(
"cal");
214 switch ($this->
ctrl->getNextClass($this)) {
215 case strtolower(PublicProfileGUI::class):
216 #22168 don't send the current user if no GET user_id
220 $ret = $this->
ctrl->forwardCommand($profile);
221 $this->tpl->setContent($ret);
224 case 'ilrepositorysearchgui':
227 $rep_search->setCallback(
229 'assignUsersToAppointments',
232 $this->
ctrl->setParameter($this,
'assignM', 1);
233 $this->
ctrl->setReturn($this,
'appointments');
235 $rep_search->setCallback(
237 'assignUsersToAppointment',
240 $this->
ctrl->saveParameter($this,
'apps');
241 $this->
ctrl->setReturn($this,
'appointments');
243 $rep_search->setCallback(
245 'assignUsersToAppointment',
248 $this->
ctrl->saveParameter($this,
'apps');
249 $this->
ctrl->setReturn($this,
'appointments');
251 $this->
ctrl->forwardCommand($rep_search);
255 $this->tpl->setTitle($this->
lng->txt(
"cal_ch_form_header"));
258 if ($this->global_user->getId() != $this->user_id) {
259 $this->
ctrl->setParameter($this,
'user_id', $this->user_id);
261 $cmd = $this->
ctrl->getCmd(
'appointments');
275 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'),
true);
276 $this->
ctrl->redirect($this,
'appointments');
279 $this->
ctrl->setParameterByClass(ilConsultationHoursGUI::class,
'assignM', 1);
280 $this->
ctrl->redirectByClass(ilRepositorySearchGUI::class,
'');
296 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'cal_ch_user_assignment_failed_info') .
297 '<br />' . implode(
'<br />', $users),
true);
306 $unassigned_users = [];
308 foreach ($ch_apps as $app) {
309 $unassigned_users = array_unique(array_merge(
316 $this->
ctrl->redirect($this,
'appointments');
333 $app = current($app);
336 $app = current($app);
338 if (!count($users)) {
339 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'),
true);
343 $assigned_users = array();
344 foreach ($users as $user) {
350 $assigned_users[] = $user;
353 $unassigned_users = array_diff($users, $assigned_users);
356 $this->
ctrl->redirect($this,
'appointments');
358 return $unassigned_users;
375 $this->
help->setScreenId(
"consultation_hours");
379 $this->tpl->setContent($btable->getHTML());
402 if ($bookusers === []) {
403 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'));
409 $confirm->setFormAction($this->
ctrl->getFormAction($this));
411 if ($a_send_notification) {
412 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'cal_ch_cancel_booking_info'));
413 $confirm->setHeaderText($this->
lng->txt(
'cal_ch_cancel_booking_sure'));
414 $confirm->setConfirm($this->
lng->txt(
'cal_ch_reject_booking'),
'rejectBooking');
416 $this->tpl->setOnScreenMessage(
'info', $this->
lng->txt(
'cal_ch_delete_booking_info'));
417 $confirm->setHeaderText($this->
lng->txt(
'cal_ch_delete_booking_sure'));
418 $confirm->setConfirm($this->
lng->txt(
'cal_ch_delete_booking'),
'deleteBooking');
421 $confirm->setCancel($this->
lng->txt(
'cancel'),
'bookingList');
423 foreach ($bookusers as $bookuser) {
424 $ids = explode(
'_', $bookuser);
440 $this->tpl->setContent($confirm->getHTML());
451 $this->
form->getItemByPostVar(
'bo')->setValue((
string) $this->booking->getNumberOfBookings());
452 $this->
form->getItemByPostVar(
'ap')->setValue(
"1");
453 $this->
form->getItemByPostVar(
'du')->setMinutes(15);
454 $this->
form->getItemByPostVar(
'st')->setDate(
455 new ilDateTime(mktime(8, 0, 0, (
int) date(
'n', time()), (
int) date(
'd', time()), (
int) date(
'Y', time())),
IL_CAL_UNIX)
457 $this->tpl->setContent($this->
form->getHTML());
466 $this->
form->setFormAction($this->
ctrl->getFormAction($this));
470 $this->
form->setTitle($this->
lng->txt(
'cal_ch_add_sequence'));
471 $this->
form->addCommandButton(
'saveSequence', $this->
lng->txt(
'save'));
472 $this->
form->addCommandButton(
'appointments', $this->
lng->txt(
'cancel'));
476 $this->
form->setTitle($this->
lng->txt(
'cal_ch_multi_edit_sequence'));
477 $this->
form->addCommandButton(
'updateMulti', $this->
lng->txt(
'save'));
478 $this->
form->addCommandButton(
'appointments', $this->
lng->txt(
'cancel'));
485 $ti->setMaxLength(128);
486 $ti->setRequired(
true);
487 $this->
form->addItem($ti);
489 if ($a_mode != self::MODE_MULTI) {
492 $dur->setShowTime(
true);
493 $dur->setRequired(
true);
494 $this->
form->addItem($dur);
498 $du->setShowMinutes(
true);
499 $du->setShowHours(
true);
500 $this->
form->addItem($du);
504 $nu->setInfo($this->
lng->txt(
'cal_ch_num_appointments_info'));
506 $nu->setMaxLength(2);
507 $nu->setRequired(
true);
509 $this->
form->addItem($nu);
513 $rec->setEnabledSubForms(
520 $this->
form->addItem($rec);
526 $nu->setMaxLength(2);
528 $nu->setRequired(
true);
529 $this->
form->addItem($nu);
533 $dead->setInfo($this->
lng->txt(
'cal_ch_deadline_info'));
534 $dead->setShowMinutes(
false);
535 $dead->setShowHours(
true);
536 $dead->setShowDays(
true);
537 $this->
form->addItem($dead);
542 $lo->setMaxLength(128);
543 $this->
form->addItem($lo);
549 $this->
form->addItem($de);
553 $tgt->setInfo($this->
lng->txt(
'cal_ch_target_object_info'));
555 $tgt->setMaxLength(128);
556 $this->
form->addItem($tgt);
567 if ($this->
form->checkInput()) {
568 $this->
form->setValuesByPost();
574 $deadline = $this->
form->getInput(
'dead');
575 $deadline = $deadline[
'dd'] * 24 + $deadline[
'hh'];
578 $tgt = array_map(
'intval', explode(
',', $this->
form->getInput(
'tgt')));
586 $valid_types = array(
'crs',
'grp');
587 if (!$obj_id or !in_array($type, $valid_types)) {
588 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'cal_ch_unknown_repository_object'));
589 $this->tpl->setContent($this->
form->getHTML());
593 $obj_ids[] = $obj_id;
598 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'settings_saved'),
true);
599 $this->
ctrl->redirect($this,
'appointments');
601 $this->
form->setValuesByPost();
602 $this->tpl->setContent($this->
form->getHTML());
612 $start = clone $this->
form->getItemByPostVar(
'st')->getDate();
613 for ($i = 0; $i < $this->
form->getItemByPostVar(
'ap')->
getValue(); $i++) {
614 $concurrent_dates->add(clone $start);
618 #$start = new ilDateTime(,IL_CAL_UNIX);
624 $this->
lng->txt(
'cal_ch_personal_ch'),
630 $num_appointments = 0;
631 foreach ($concurrent_dates as $dt) {
632 if ($num_appointments >= self::MAX_APPOINTMENTS_PER_SEQUENCE) {
642 $this->
form->getItemByPostVar(
'frequence')->getRecurrence()
649 $date_list = $calc->calculateDateList($dt, $limit);
652 foreach ($date_list as $app_start) {
653 $app_end = clone $app_start;
659 $entry->setTitle($this->
form->getInput(
'ti'));
660 $entry->setSubtitle(
"#consultationhour#");
661 $entry->setDescription($this->
form->getInput(
'de'));
662 $entry->setLocation($this->
form->getInput(
'lo'));
663 $entry->setStart($app_start);
664 $entry->setEnd($app_end);
670 $cat_assign->addAssignment($def_cat->getCategoryID());
679 $this->
ctrl->setParameter($this,
'user_id',
'');
681 'consultation_hours_' . $this->user_id,
682 $this->
lng->txt(
'cal_ch_ch'),
683 $this->ctrl->getLinkTarget($this,
'appointments')
689 'consultation_hours_' . $user_id,
690 $this->
lng->txt(
'cal_ch_ch') .
': ' . $login,
691 $this->ctrl->getLinkTarget($this,
'appointments')
694 $this->
ctrl->setParameter($this,
'user_id',
'');
695 $this->
tabs->addTab(
'ch_settings', $this->
lng->txt(
'settings'), $this->ctrl->getLinkTarget($this,
'settings'));
696 $this->
tabs->activateTab(
'consultation_hours_' . $this->
getUserId());
710 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'));
717 $hidden->setValue(implode(
';', $apps));
718 $this->
form->addItem($hidden);
721 $first = array_shift($apps);
724 $this->
form->getItemByPostVar(
'ti')->setValue($entry->getTitle());
725 $this->
form->getItemByPostVar(
'lo')->setValue($entry->getLocation());
726 $this->
form->getItemByPostVar(
'de')->setValue($entry->getDescription());
735 $ref_ids[] = end($refs);
737 $this->
form->getItemByPostVar(
'tgt')->setValue(implode(
',', $ref_ids));
740 $this->
form->getItemByPostVar(
'dead')->setDays((
int) floor($deadline / 24));
741 $this->
form->getItemByPostVar(
'dead')->setHours($deadline % 24);
742 $this->tpl->setContent($this->
form->getHTML());
751 $deadline = $this->
form->getInput(
'dead');
752 $deadline = $deadline[
'dd'] * 24 + $deadline[
'hh'];
755 $tgt = array_map(
'intval', explode(
',', (
string) $this->
form->getInput(
'tgt')));
763 $valid_types = [
'crs',
'grp'];
764 if (!$obj_id or !in_array($type, $valid_types)) {
765 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'cal_ch_unknown_repository_object'));
768 $obj_ids[] = $obj_id;
780 foreach ($appointments as $appointment_id) {
781 $booking_appointment = new \ilCalendarEntry($appointment_id);
782 $booking_start = $booking_appointment->getStart();
783 $booking_end = $booking_appointment->getEnd();
796 foreach ($relevant_appointments as $relevant_appointment_id) {
797 $entry = new \ilCalendarEntry($relevant_appointment_id);
812 $this->initFormSequence(self::MODE_MULTI);
813 if (!$this->
form->checkInput()) {
814 $this->
form->setValuesByPost();
815 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'err_check_input'));
820 $this->
form->setValuesByPost();
821 $apps = $this->initAppointmentIdsFromPostString();
824 $booking = $this->createNewBookingEntry($this->
form);
829 $this->rewriteBookingIdsForAppointments($booking, $apps, $this->
form);
832 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'settings_saved'),
true);
833 $this->
ctrl->redirect($this,
'appointments');
834 $this->tpl->setContent($this->
form->getHTML());
842 $this->
tabs->clearTargets();
845 if ($this->
http->wrapper()->query()->has(
'user')) {
852 $profile->setBackUrl($this->getProfileBackUrl());
853 $this->tpl->setContent($this->
ctrl->getHTML($profile));
862 if ($this->
http->wrapper()->query()->has(
'ref_id')) {
863 $url = $this->
ctrl->getLinkTargetByClass(
'ilCalendarMonthGUI');
865 elseif ($this->
http->wrapper()->query()->has(
'panel')) {
866 $url = $this->
ctrl->getLinkTargetByClass(
'ilCalendarPresentationGUI');
869 $url = $this->
ctrl->getLinkTarget($this,
'appointments');
879 $this->
help->setScreenId(
"consultation_hours_settings");
880 $this->
tabs->activateTab(
'ch_settings');
882 $form = $this->initSettingsForm();
883 $this->tpl->setContent($form->getHTML());
892 $form->setFormAction($this->
ctrl->getFormAction($this));
895 $mng->setInfo($this->
lng->txt(
'cal_ch_manager_info'));
896 $form->addItem($mng);
900 $form->setTitle($this->
lng->txt(
'settings'));
901 $form->addCommandButton(
'updateSettings', $this->
lng->txt(
'save'));
910 $form = $this->initSettingsForm();
911 if ($form->checkInput()) {
912 $mng = $form->getInput(
'mng');
914 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'settings_saved'),
true);
915 $this->
ctrl->redirect($this,
'settings');
917 $this->
tabs->activateTab(
'ch_settings');
919 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'cal_ch_unknown_user'));
920 $field = $form->getItemByPostVar(
'mng');
921 $field->setValue($mng);
922 $this->tpl->setContent($form->getHTML());
930 $this->initViewMode();
934 $this->tpl->setContent(
935 $this->renderViewControl() .
943 $action = $this->
http->wrapper()->query()->retrieve(
944 BookingTableGUI::ACTION_TOKEN_NS,
947 $this->refinery->kindlyTo()->string(),
948 $this->refinery->always(
'')
953 'edit' => $this->edit(),
954 'searchUsersForAppointments' => $this->searchUsersForAppointments(),
955 'confirmDeleteAppointments' => $this->confirmDeleteAppointments(),
956 'confirmCancelBooking' => $this->confirmCancelBooking(
true),
957 'confirmDeleteBooking' => $this->confirmCancelBooking(
false),
958 'sendMail' => $this->sendMailToSelectedUsers(),
959 default => $this->
ctrl->redirect($this,
'appointments')
965 $appointment_ids = $this->initAppointmentIdsFromTableAction();
966 if ($appointment_ids === []) {
967 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'));
968 $this->appointments();
973 foreach ($appointment_ids as $appointment_id) {
976 foreach ($booking->getCurrentBookings($entry->getEntryId()) as $bookuser) {
978 if (!in_array($login, $bookusers)) {
979 $bookusers[] = $login;
983 $this->
ctrl->redirectToURL(
990 'rcp_to' => implode(
',', $bookusers)
998 $appointment_ids = $this->initAppointmentIdsFromTableAction();
999 if ($appointment_ids === []) {
1000 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'));
1001 $this->appointments();
1005 $appointment = end($appointment_ids);
1006 $this->
ctrl->setParameter($this,
'appointment_id', $appointment);
1010 $cancel = new \ILIAS\Calendar\ConsultationHours\BookingCancellationGUI(
1014 $with_notification ?
1015 \
ILIAS\Calendar\ConsultationHours\BookingCancellationGUI::TYPE_CANCEL :
1016 \
ILIAS\Calendar\ConsultationHours\BookingCancellationGUI::TYPE_DELETE
1018 $modal = $cancel->renderModal();
1019 $output = $this->ui_renderer->renderAsync($modal);
1020 $this->
http->saveResponse($this->
http->response()->withBody(
1021 Streams::ofString($output)
1023 $this->
http->sendResponse();
1024 $this->
http->close();
1029 $this->cancelBooking(
false);
1034 $appointment_id = $this->
http->wrapper()->query()->retrieve(
1038 $this->refinery->kindlyTo()->int(),
1039 $this->refinery->always(0)
1043 if (!$appointment_id) {
1044 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'));
1045 $this->appointments();
1051 $cancel = new \ILIAS\Calendar\ConsultationHours\BookingCancellationGUI(
1055 $with_notification ?
1056 \
ILIAS\Calendar\ConsultationHours\BookingCancellationGUI::TYPE_CANCEL :
1057 \
ILIAS\Calendar\ConsultationHours\BookingCancellationGUI::TYPE_DELETE
1059 $data = $cancel->renderModal()->withRequest($this->
http->request())->getData();
1060 foreach ((array)
$data[
'bookings'] as $user => $checked) {
1069 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'cal_ch_canceled_bookings'),
true);
1070 $this->
ctrl->redirect($this,
'appointments');
1075 $appointment_ids = $this->initAppointmentIdsFromTableAction();
1076 if (!count($appointment_ids)) {
1077 $output = $this->ui_factory->messageBox()->failure($this->
lng->txt(
'select_one'));
1080 foreach ($appointment_ids as $appointment) {
1082 $items[] = $this->ui_factory->modal()->interruptiveItem()->standard(
1083 (
string) $appointment,
1088 $output = $this->ui_factory->modal()->interruptive(
1089 $this->
lng->txt(
'confirm'),
1090 $this->lng->txt(
'cal_ch_delete_app_booking_info'),
1091 $this->ctrl->getFormAction($this,
'deleteAppointments')
1092 )->withAffectedItems($items);
1095 $rendered_output = $this->ui_renderer->renderAsync($output);
1096 $this->
http->saveResponse($this->
http->response()->withBody(
1097 Streams::ofString($rendered_output)
1099 $this->
http->sendResponse();
1100 $this->
http->close();
1105 $appointment_ids = $this->
http->wrapper()->post()->retrieve(
1106 'interruptive_items',
1109 $this->refinery->kindlyTo()->listOf($this->refinery->kindlyTo()->int()),
1110 $this->refinery->always([])
1114 if (!count($appointment_ids)) {
1115 $this->tpl->setOnScreenMessage(
'failure', $this->
lng->txt(
'select_one'));
1116 $this->appointments();
1120 foreach ($appointment_ids as $appointment_id) {
1124 foreach ($booking->getCurrentBookings($appointment_id) as
$user_id) {
1134 $this->tpl->setOnScreenMessage(
'success', $this->
lng->txt(
'cal_deleted_app'),
true);
1135 $this->
ctrl->redirect($this,
'appointments');
1140 $add_sequence_button = $this->ui_factory->button()->standard(
1141 $this->
lng->txt(
'cal_ch_add_sequence'),
1142 $this->ctrl->getLinkTarget($this,
'createSequence')
1144 return $add_sequence_button;
1150 $toolbar->addComponent($this->initSequenceCreation());
1151 $toolbar->addSeparator();
1153 $this->
ctrl->setParameter($this,
'vm_period', self::VIEW_MODE_PERIOD_PAST);
1154 $actions[$this->
lng->txt(
'cal_ch_vm_period_' . self::VIEW_MODE_PERIOD_PAST)] = $this->
ctrl->getLinkTarget(
1158 $this->
ctrl->setParameter($this,
'vm_period', self::VIEW_MODE_PERIOD_UPCOMING);
1159 $actions[$this->
lng->txt(
'cal_ch_vm_period_' . self::VIEW_MODE_PERIOD_UPCOMING)] = $this->
ctrl->getLinkTarget(
1163 $this->
ctrl->setParameter($this,
'vm_period', self::VIEW_MODE_PERIOD_ALL);
1164 $actions[$this->
lng->txt(
'cal_ch_vm_period_' . self::VIEW_MODE_PERIOD_ALL)] = $this->
ctrl->getLinkTarget(
1168 $this->
ctrl->setParameter($this,
'vm_period',
'');
1170 $view_control_period = $this->ui_factory->viewControl()->mode(
1172 $this->
lng->txt(
'meta_aria_language_selection')
1173 )->withActive($this->
lng->txt(
'cal_ch_vm_period_' . $this->vm_period));
1175 $toolbar->addComponent($view_control_period);
1178 $this->
ctrl->setParameter($this,
'vm_status', self::VIEW_MODE_STATUS_OPEN);
1179 $actions[$this->
lng->txt(
'cal_ch_vm_status_' . self::VIEW_MODE_STATUS_OPEN)] = $this->
ctrl->getLinkTarget(
1183 $this->
ctrl->setParameter($this,
'vm_status', self::VIEW_MODE_STATUS_BOOKED);
1184 $actions[$this->
lng->txt(
'cal_ch_vm_status_' . self::VIEW_MODE_STATUS_BOOKED)] = $this->
ctrl->getLinkTarget(
1188 $this->
ctrl->setParameter($this,
'vm_status', self::VIEW_MODE_STATUS_ALL);
1189 $actions[$this->
lng->txt(
'cal_ch_vm_status_' . self::VIEW_MODE_STATUS_ALL)] = $this->
ctrl->getLinkTarget(
1193 $this->
ctrl->setParameter($this,
'vm_status',
'');
1195 $view_control_status = $this->ui_factory->viewControl()->mode(
1197 $this->
lng->txt(
'meta_aria_language_selection')
1198 )->withActive($this->
lng->txt(
'cal_ch_vm_status_' . $this->vm_status));
1200 $toolbar->addComponent($view_control_status);
1201 return $toolbar->getHTML();
1208 $user =
$DIC->user();
1209 $vm_period = $this->
http->wrapper()->query()->retrieve(
1213 $this->refinery->kindlyTo()->string(),
1214 $this->refinery->always(
'')
1218 $vm_status = $this->
http->wrapper()->query()->retrieve(
1222 $this->refinery->kindlyTo()->string(),
1223 $this->refinery->always(
'')
1228 if ($vm_period !==
'') {
1229 $user->writePref(
'cal_ch_vm_period', $vm_period);
1231 if ($vm_status !==
'') {
1232 $user->writePref(
'cal_ch_vm_status', $vm_status);
1234 $this->vm_period = $user->getPref(
'cal_ch_vm_period') ? $user->getPref(
'cal_ch_vm_period') : self::VIEW_MODE_PERIOD_ALL;
1235 $this->vm_status = $user->getPref(
'cal_ch_vm_status') ? $user->getPref(
'cal_ch_vm_status') : self::VIEW_MODE_STATUS_ALL;
Builds a Color from either hex- or rgb values.
Stream factory which enables the user to create streams without the knowledge of the concrete class.
GUI class for public user profile presentation.
static getInstanceByCalendarEntryId(int $a_id)
Get instance by calendar entry.
getCurrentNumberOfBookings(int $a_entry_id)
get current number of bookings
static lookupBookingsOfUser(array $a_app_ids, int $a_usr_id, ?ilDateTime $start=null)
Lookup bookings of user.
static removeObsoleteEntries()
Remove unused booking entries.
setDeadlineHours(int $a_hours)
setTargetObjIds(?array $a_obj_id)
setNumberOfBookings(int $a_num)
Booking period Used for calculation of recurring events.
static _deleteByAppointmentId(int $a_app_id)
Delete appointment assignment.
Model for a calendar entry.
Calculates an ilDateList for a given calendar entry and recurrence rule.
const string FREQ_MONTHLY
static initDefaultCalendarByType(int $a_type_id, int $a_usr_id, string $a_title, bool $a_create=false)
Init the default calendar for given type and user.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static getManager(bool $a_as_name=false, bool $a_full_name=false, ?int $a_user_id=null)
Get consultation hour manager for current user or specific user.
static getManagedUsers()
Get all managed consultation hours users for current users.
static setManager(string $a_user_name)
Set consultation hour manager for current user.
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 cancelBooking(int $a_usr_id, int $a_app_id, bool $a_send_notification=true)
Cancel a booking.
static findCalendarAppointmentsForBooking(ilBookingEntry $booking, ilDateTime $start, ilDateTime $end)
static bookAppointment(int $a_usr_id, int $a_app_id, string $comment='')
Book an appointment.
Consultation hours editor.
const MAX_APPOINTMENTS_PER_SEQUENCE
initAppointmentIdsFromQuery()
const VIEW_MODE_STATUS_ALL
const VIEW_MODE_PERIOD_UPCOMING
confirmRejectBooking(bool $a_send_notification=true)
Show delete booking confirmation.
rewriteBookingIdsForAppointments(ilBookingEntry $booking, array $appointments, ilPropertyFormGUI $form)
showProfile()
show public profile of given user
initSearchAssignmentToAppointments($a_default=false)
initAppointmentIdsFromTableAction()
initAppointmentIdsFromPostString()
confirmCancelBooking(bool $with_notification=true)
initBookingUsersFromPost()
cancelBooking(bool $with_notification=true)
bool $search_assignment_to_appointments
sendMailToSelectedUsers()
createSequence()
Create new sequence.
updateSettings()
save settings
initSettingsForm()
build settings form
searchUsersForAppointments()
const VIEW_MODE_STATUS_BOOKED
initFormSequence(int $a_mode)
assignUsersToAppointments(array $users)
Assign users to multiple appointments.
initAppointmentIdsFromPost()
bookingList()
Show list of bookings.
handleBookingTableActions()
updateMulti()
Update multiple sequence items.
settings()
display settings gui
confirmDeleteBooking()
Show delete booking confirmation.
sendInfoAboutUnassignedUsers(array $unassigned)
Send info message about unassigned users.
assignUsersToAppointment(array $users, int $a_app=0, bool $a_redirect=true)
Assign users to an appointment.
initBookingUsersFromQuery()
confirmDeleteAppointments()
ilGlobalTemplateInterface $tpl
const VIEW_MODE_STATUS_OPEN
saveSequence()
Save new sequence.
RefineryFactory $refinery
createNewBookingEntry(ilPropertyFormGUI $validate_form)
__construct()
Constructor.
const VIEW_MODE_PERIOD_ALL
createAppointments(ilBookingEntry $booking)
Create calendar appointments.
const VIEW_MODE_PERIOD_PAST
getProfileBackUrl()
Build context-sensitive profile back url.
static formatDate(ilDateTime $date, bool $a_skip_day=false, bool $a_include_wd=false, bool $include_seconds=false, ?ilObjUser $user=null,)
@classDescription Date and time handling
static _lookupFullname(int $a_user_id)
static _lookupLogin(int $a_user_id)
static _lookupType(int $id, bool $reference=false)
static _getAllReferences(int $id)
get all reference ids for object ID
static _lookupObjId(int $ref_id)
static get(string $a_var)
static set(string $a_var, $a_val)
Set a value.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
This class represents a text area property in a property form.
This class represents a text property in a property form.
static getNamePresentation( $a_user_id, bool $a_user_image=false, bool $a_profile_link=false, string $a_profile_back_link='', bool $a_force_first_lastname=false, bool $a_omit_login=false, bool $a_sortable=true, bool $a_return_data_array=false, $a_ctrl_path=null)
Default behaviour is:
Interface GlobalHttpState.
An entity that renders components to a string output.
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
static http()
Fetches the global http state from ILIAS.
form(?array $class_path, string $cmd, string $submit_caption="")
Interface Observer \BackgroundTasks Contains several chained tasks and infos about them.