ILIAS  release_5-4 Revision v5.4.26-12-gabc799a52e6
class.ilConsultationHoursGUI.php
Go to the documentation of this file.
1<?php
2/*
3 +-----------------------------------------------------------------------------+
4 | ILIAS open source |
5 +-----------------------------------------------------------------------------+
6 | Copyright (c) 1998-2006 ILIAS open source, University of Cologne |
7 | |
8 | This program is free software; you can redistribute it and/or |
9 | modify it under the terms of the GNU General Public License |
10 | as published by the Free Software Foundation; either version 2 |
11 | of the License, or (at your option) any later version. |
12 | |
13 | This program is distributed in the hope that it will be useful, |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
16 | GNU General Public License for more details. |
17 | |
18 | You should have received a copy of the GNU General Public License |
19 | along with this program; if not, write to the Free Software |
20 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
21 +-----------------------------------------------------------------------------+
22*/
23
24include_once './Services/Calendar/classes/class.ilCalendarRecurrence.php';
25include_once './Services/Booking/classes/class.ilBookingEntry.php';
26include_once './Services/Calendar/classes/ConsultationHours/class.ilConsultationHourAppointments.php';
27
35{
36 const MODE_CREATE = 1;
37 const MODE_UPDATE = 2;
38 const MODE_MULTI = 3;
39
41
42 protected $user_id;
43 protected $ctrl;
44
45 protected $booking = null;
46
50 public function __construct()
51 {
52 global $DIC;
53
54 $lng = $DIC['lng'];
55 $ilCtrl = $DIC['ilCtrl'];
56 $tpl = $DIC['tpl'];
57 $ilUser = $DIC['ilUser'];
58
59 $user_id = (int) $_GET['user_id'];
60 if ($user_id) {
61 if (in_array($user_id, array_keys(ilConsultationHourAppointments::getManagedUsers()))) {
62 $this->user_id = $user_id;
63 } else {
64 $user_id = false;
65 }
66 }
67 if (!$user_id) {
68 $this->user_id = $ilUser->getId();
69 }
70
71 $this->ctrl = $ilCtrl;
72 $this->lng = $lng;
73 $this->tpl = $tpl;
74 }
75
80 public function executeCommand()
81 {
82 global $DIC;
83
84 $ilUser = $DIC['ilUser'];
85 $ilCtrl = $DIC['ilCtrl'];
86 $tpl = $DIC['tpl'];
87 $ilHelp = $DIC['ilHelp'];
88 $ilTabs = $DIC['ilTabs'];
89
90 $ilHelp->setScreenIdComponent("cal");
91
92 switch ($this->ctrl->getNextClass()) {
93 case "ilpublicuserprofilegui":
94 include_once('./Services/User/classes/class.ilPublicUserProfileGUI.php');
95 #22168 don't send the current user if no GET user_id
96 //$profile = new ilPublicUserProfileGUI($this->user_id);
97 $profile = new ilPublicUserProfileGUI();
98 $profile->setBackUrl($this->getProfileBackUrl());
99 $ret = $ilCtrl->forwardCommand($profile);
100 $tpl->setContent($ret);
101 break;
102
103 case 'ilrepositorysearchgui':
104
105 include_once('./Services/Search/classes/class.ilRepositorySearchGUI.php');
106 $rep_search = new ilRepositorySearchGUI();
107
108 if (isset($_REQUEST['assignM'])) {
109 $rep_search->setCallback(
110 $this,
111 'assignUsersToAppointments',
112 array()
113 );
114 $ilCtrl->setParameter($this, 'assignM', 1);
115 $ilCtrl->setReturn($this, 'appointmentList');
116 $ilTabs->activateSubTab('cal_ch_app_list');
117 } elseif (isset($_REQUEST['grp_id'])) {
118 $rep_search->setCallback(
119 $this,
120 'assignUsersToGroup',
121 array()
122 );
123 $ilCtrl->saveParameter($this, 'grp_id');
124 $ilCtrl->setReturn($this, 'groupList');
125 $ilTabs->activateSubTab('cal_ch_app_grp');
126 } elseif (isset($_REQUEST['apps'])) {
127 $rep_search->setCallback(
128 $this,
129 'assignUsersToAppointment',
130 array()
131 );
132 $ilCtrl->saveParameter($this, 'apps');
133 $ilCtrl->setReturn($this, 'appointmentList');
134 $ilTabs->activateSubTab('cal_ch_app_list');
135 }
136 $ilCtrl->forwardCommand($rep_search);
137 break;
138
139 default:
140 $tpl->setTitle($this->lng->txt("cal_ch_form_header")); // #12220
141
142 $this->setTabs();
143 if ($ilUser->getId() != $this->user_id) {
144 $ilCtrl->setParameter($this, 'user_id', $this->user_id);
145 }
146
147 $cmd = $this->ctrl->getCmd('appointmentList');
148 $this->$cmd();
149 }
150 }
151
156 public function getUserId()
157 {
158 return $this->user_id;
159 }
160
164 protected function searchUsersForAppointments()
165 {
166 global $DIC;
167
168 $ilCtrl = $DIC['ilCtrl'];
169 $ilTabs = $DIC['ilTabs'];
170
171 $_SESSION['ch_apps'] = $_REQUEST['apps'];
172
173 if (empty($_SESSION['ch_apps'])) {
174 ilUtil::sendFailure($this->lng->txt('select_one'), true);
175 $GLOBALS['DIC']['ilCtrl']->redirect($this, 'appointmentList');
176 }
177 $_REQUEST['assignM'] = 1;
178 $ilCtrl->setCmdClass('ilrepositorysearchgui');
179 $ilCtrl->setcmd('');
180 $this->executeCommand();
181 }
182
187 protected function sendInfoAboutUnassignedUsers($unassigned)
188 {
189 if (!$unassigned) {
190 return true;
191 }
192 $users = array();
193 foreach ($unassigned as $user_id) {
194 include_once './Services/User/classes/class.ilObjUser.php';
196 }
197 ilUtil::sendInfo($this->lng->txt('cal_ch_user_assignment_failed_info') . '<br />' . implode('<br />', $users), true);
198 return true;
199 }
200
205 public function assignUsersToAppointments(array $users)
206 {
207 global $DIC;
208
209 $ilCtrl = $DIC['ilCtrl'];
210
211 $unassigned_users = array();
212 foreach ($_SESSION['ch_apps'] as $app) {
213 $unassigned_users = array_unique(array_merge($unassigned_users, $this->assignUsersToAppointment($users, $app, false)));
214 }
215
216 $this->sendInfoAboutUnassignedUsers($unassigned_users);
217 $ilCtrl->redirect($this, 'appointmentList');
218 }
219
220
226 public function assignUsersToAppointment(array $users, $a_app = 0, $a_redirect = true)
227 {
228 global $DIC;
229
230 $ilCtrl = $DIC['ilCtrl'];
231
232 if ($a_app) {
233 $app = $a_app;
234 } else {
235 $app = $_REQUEST['apps'];
236 }
237
238 if (!count($users)) {
239 ilUtil::sendFailure($GLOBALS['DIC']->language()->txt('select_one'), true);
240 return false;
241 }
242
243
244 include_once './Services/Booking/classes/class.ilBookingEntry.php';
246
247 $assigned_users = array();
248 foreach ($users as $user) {
249 if ($booking->getCurrentNumberOfBookings($app) >= $booking->getNumberOfBookings()) {
250 break;
251 }
252 if (!ilBookingEntry::lookupBookingsOfUser((array) $app, $user)) {
253 include_once './Services/Calendar/classes/ConsultationHours/class.ilConsultationHourUtils.php';
255 $assigned_users[] = $user;
256 }
257 }
258
259 $unassigned_users = array_diff($users, $assigned_users);
260
261 if ($a_redirect) {
262 $this->sendInfoAboutUnassignedUsers($unassigned_users);
263 $ilCtrl->redirect($this, 'appointmentList');
264 } else {
265 return $unassigned_users;
266 }
267 }
268
274 public function assignUsersToGroup(array $usr_ids)
275 {
276 global $DIC;
277
278 $ilCtrl = $DIC['ilCtrl'];
279
280 $group_id = (int) $_REQUEST['grp_id'];
281
282 $tomorrow = new ilDateTime(time(), IL_CAL_UNIX);
283 $tomorrow->increment(IL_CAL_DAY, 1);
284
285 // Get all future consultation hours
286 include_once './Services/Calendar/classes/ConsultationHours/class.ilConsultationHourAppointments.php';
287 include_once './Services/Booking/classes/class.ilBookingEntry.php';
289 $this->user_id,
290 $group_id,
291 $tomorrow
292 );
293 $users = $usr_ids;
294 $assigned_users = array();
295 foreach ($apps as $app) {
297 foreach ($users as $user) {
298 if ($booking->getCurrentNumberOfBookings($app) >= $booking->getNumberOfBookings()) {
299 break;
300 }
302 include_once './Services/Calendar/classes/ConsultationHours/class.ilConsultationHourUtils.php';
304 $assigned_users[] = $user;
305 }
306 }
307 }
308
309 $this->sendInfoAboutUnassignedUsers(array_diff($users, $assigned_users));
310 $ilCtrl->redirect($this, 'bookingList');
311 }
312
313
318 protected function groupList()
319 {
320 global $DIC;
321
322 $ilToolbar = $DIC['ilToolbar'];
323 $ilTabs = $DIC['ilTabs'];
324 $tpl = $DIC['tpl'];
325 $ilHelp = $DIC['ilHelp'];
326
327 $ilHelp->setScreenId("consultation_hours");
328
329 $ilToolbar->setFormAction($this->ctrl->getFormAction($this));
330 $ilToolbar->addButton($this->lng->txt('cal_ch_add_grp'), $this->ctrl->getLinkTarget($this, 'addGroup'));
331
332 $this->setSubTabs();
333 $ilTabs->activateSubTab('cal_ch_app_grp');
334
335 include_once './Services/Calendar/classes/ConsultationHours/class.ilConsultationHourGroupTableGUI.php';
336 include_once './Services/Calendar/classes/ConsultationHours/class.ilConsultationHourGroups.php';
337 $gtbl = new ilConsultationHourGroupTableGUI($this, 'groupList', $this->getUserId());
339
340 $tpl->setContent($gtbl->getHTML());
341 }
342
348 protected function addGroup(ilPropertyFormGUI $form = null)
349 {
350 global $DIC;
351
352 $ilTabs = $DIC['ilTabs'];
353 $tpl = $DIC['tpl'];
354
355 $this->setSubTabs();
356 $ilTabs->activateSubTab('cal_ch_app_grp');
357
358 if ($form == null) {
359 $form = $this->initGroupForm();
360 }
361 $tpl->setContent($form->getHTML());
362 }
363
367 protected function saveGroup()
368 {
369 $form = $this->initGroupForm();
370 if ($form->checkInput()) {
371 include_once './Services/Calendar/classes/ConsultationHours/class.ilConsultationHourGroup.php';
372 $group = new ilConsultationHourGroup();
373 $group->setTitle($form->getInput('title'));
374 $group->setMaxAssignments($form->getInput('multiple'));
375 $group->setUserId($this->getUserId());
376 $group->save();
377
378 ilUtil::sendSuccess($GLOBALS['DIC']['lng']->txt('settings_saved'), true);
379 $GLOBALS['DIC']['ilCtrl']->redirect($this, 'groupList');
380 }
381
382 ilUtil::sendFailure($GLOBALS['DIC']['lng']->txt('err_check_input'), true);
383 $this->addGroup($form);
384 }
385
391 protected function editGroup(ilPropertyFormGUI $form = null)
392 {
393 global $DIC;
394
395 $ilCtrl = $DIC['ilCtrl'];
396 $tpl = $DIC['tpl'];
397 $ilTabs = $DIC['ilTabs'];
398
399 $ilCtrl->setParameter($this, 'grp_id', (int) $_REQUEST['grp_id']);
400 $this->setSubTabs();
401 $ilTabs->activateSubTab('cal_ch_app_grp');
402
403 if ($form == null) {
404 $form = $this->initGroupForm((int) $_REQUEST['grp_id']);
405 }
406 $tpl->setContent($form->getHTML());
407 }
408
415 protected function updateGroup()
416 {
417 global $DIC;
418
419 $ilCtrl = $DIC['ilCtrl'];
420 $tpl = $DIC['tpl'];
421 $ilTabs = $DIC['ilTabs'];
422
423 $ilCtrl->setParameter($this, 'grp_id', (int) $_REQUEST['grp_id']);
424
425 $form = $this->initGroupForm((int) $_REQUEST['grp_id']);
426 if ($form->checkInput()) {
427 include_once './Services/Calendar/classes/ConsultationHours/class.ilConsultationHourGroup.php';
428 $group = new ilConsultationHourGroup((int) $_REQUEST['grp_id']);
429 $group->setTitle($form->getInput('title'));
430 $group->setMaxAssignments($form->getInput('multiple'));
431 $group->setUserId($this->getUserId());
432 $group->update();
433
434 ilUtil::sendSuccess($GLOBALS['DIC']['lng']->txt('settings_saved'), true);
435 $GLOBALS['DIC']['ilCtrl']->redirect($this, 'groupList');
436 }
437
438 ilUtil::sendFailure($GLOBALS['DIC']['lng']->txt('err_check_input'), true);
439 $this->editGroup($form);
440 }
441
447 protected function confirmDeleteGroup()
448 {
449 global $DIC;
450
451 $ilCtrl = $DIC['ilCtrl'];
452 $ilTabs = $DIC['ilTabs'];
453 $tpl = $DIC['tpl'];
454
455 $ilCtrl->setParameter($this, 'grp_id', (int) $_REQUEST['grp_id']);
456 $groups = array((int) $_REQUEST['grp_id']);
457
458 $this->setSubTabs();
459 $ilTabs->activateSubTab('cal_ch_app_grp');
460
461
462 include_once './Services/Utilities/classes/class.ilConfirmationGUI.php';
463 $confirm = new ilConfirmationGUI();
464 $confirm->setFormAction($ilCtrl->getFormAction($this));
465 $confirm->setHeaderText($GLOBALS['DIC']['lng']->txt('cal_ch_grp_delete_sure'));
466 $confirm->setConfirm($GLOBALS['DIC']['lng']->txt('delete'), 'deleteGroup');
467 $confirm->setCancel($GLOBALS['DIC']['lng']->txt('cancel'), 'groupList');
468
469 foreach ($groups as $grp_id) {
470 include_once './Services/Calendar/classes/ConsultationHours/class.ilConsultationHourGroup.php';
471 $group = new ilConsultationHourGroup($grp_id);
472
473 $confirm->addItem('groups[]', $grp_id, $group->getTitle());
474 }
475 $tpl->setContent($confirm->getHTML());
476 }
477
481 protected function deleteGroup()
482 {
483 global $DIC;
484
485 $ilCtrl = $DIC['ilCtrl'];
486
487 foreach ((array) $_REQUEST['groups'] as $grp_id) {
488 include_once './Services/Calendar/classes/ConsultationHours/class.ilConsultationHourGroup.php';
489 $group = new ilConsultationHourGroup($grp_id);
490 $group->delete();
491 }
492 ilUtil::sendSuccess($GLOBALS['DIC']['lng']->txt('cal_ch_grp_deleted'));
493 $ilCtrl->redirect($this, 'groupList');
494 }
495
499 protected function initGroupForm($a_group_id = 0)
500 {
501 include_once './Services/Calendar/classes/ConsultationHours/class.ilConsultationHourGroup.php';
502 $group = new ilConsultationHourGroup($a_group_id);
503
504 include_once 'Services/Form/classes/class.ilPropertyFormGUI.php';
505 $form = new ilPropertyFormGUI();
506 $form->setFormAction($GLOBALS['DIC']['ilCtrl']->getFormAction($this));
507
508 if ($a_group_id) {
509 $form->setTitle($GLOBALS['DIC']['lng']->txt('cal_ch_grp_update_tbl'));
510 $form->addCommandButton('updateGroup', $GLOBALS['DIC']['lng']->txt('save'));
511 $form->addCommandButton('groupList', $GLOBALS['DIC']['lng']->txt('cancel'));
512 } else {
513 $form->setTitle($GLOBALS['DIC']['lng']->txt('cal_ch_grp_add_tbl'));
514 $form->addCommandButton('saveGroup', $GLOBALS['DIC']['lng']->txt('save'));
515 $form->addCommandButton('appointmentList', $GLOBALS['DIC']['lng']->txt('cancel'));
516 }
517
518 $title = new ilTextInputGUI($GLOBALS['DIC']['lng']->txt('title'), 'title');
519 $title->setMaxLength(128);
520 $title->setSize(40);
521 $title->setRequired(true);
522 $title->setValue($group->getTitle());
523 $form->addItem($title);
524
525 $multiple = new ilNumberInputGUI($GLOBALS['DIC']['lng']->txt('cal_ch_grp_multiple'), 'multiple');
526 $multiple->setRequired(true);
527 $multiple->setMinValue(1);
528 $multiple->setSize(1);
529 $multiple->setMaxLength(2);
530 $multiple->setInfo($GLOBALS['DIC']['lng']->txt('cal_ch_grp_multiple_info'));
531 $multiple->setValue($group->getMaxAssignments());
532 $form->addItem($multiple);
533
534 return $form;
535 }
536
540 protected function bookingList()
541 {
542 global $DIC;
543
544 $ilToolbar = $DIC['ilToolbar'];
545 $ilTabs = $DIC['ilTabs'];
546 $tpl = $DIC['tpl'];
547 $ilHelp = $DIC['ilHelp'];
548
549 $ilHelp->setScreenId("consultation_hours");
550
551 $this->setSubTabs();
552 $ilTabs->activateSubTab('cal_ch_app_bookings');
553
554 include_once './Services/Calendar/classes/ConsultationHours/class.ilConsultationHourBookingTableGUI.php';
555 $btable = new ilConsultationHourBookingTableGUI($this, 'bookingList', $this->getUserId());
557 $tpl->setContent($btable->getHTML());
558 }
559
563 protected function confirmDeleteBooking()
564 {
565 $this->confirmRejectBooking(false);
566 }
567
571 protected function confirmRejectBooking($a_send_notification = true)
572 {
573 global $DIC;
574
575 $ilTabs = $DIC['ilTabs'];
576 $tpl = $DIC['tpl'];
577
578 $this->setSubTabs();
579 $ilTabs->activateSubTab('cal_ch_app_bookings');
580
581 include_once('./Services/Utilities/classes/class.ilConfirmationGUI.php');
582
583 $confirm = new ilConfirmationGUI();
584 $confirm->setFormAction($this->ctrl->getFormAction($this));
585
586 if ($a_send_notification) {
587 ilUtil::sendInfo($this->lng->txt('cal_ch_cancel_booking_info'));
588 $confirm->setHeaderText($this->lng->txt('cal_ch_cancel_booking_sure'));
589 $confirm->setConfirm($this->lng->txt('cal_ch_reject_booking'), 'rejectBooking');
590 } else {
591 ilUtil::sendInfo($this->lng->txt('cal_ch_delete_booking_info'));
592 $confirm->setHeaderText($this->lng->txt('cal_ch_delete_booking_sure'));
593 $confirm->setConfirm($this->lng->txt('cal_ch_delete_booking'), 'deleteBooking');
594 }
595
596 $confirm->setCancel($this->lng->txt('cancel'), 'bookingList');
597
598 include_once 'Services/Calendar/classes/class.ilCalendarEntry.php';
599 foreach ((array) $_REQUEST['bookuser'] as $bookuser) {
600 $ids = explode('_', $bookuser);
601
602 include_once './Services/Calendar/classes/class.ilCalendarEntry.php';
603 include_once './Services/User/classes/class.ilUserUtil.php';
604 $entry = new ilCalendarEntry($ids[0]);
605 $confirm->addItem(
606 'bookuser[]',
607 $bookuser,
609 $ids[1],
610 true,
611 false,
612 '',
613 true,
614 true
615 ) . ', ' . ilDatePresentation::formatDate($entry->getStart())
616 );
617 }
618 $tpl->setContent($confirm->getHTML());
619 }
620
624 protected function deleteBooking()
625 {
626 $this->rejectBooking(false);
627 }
628
633 protected function rejectBooking($a_send_notification = true)
634 {
635 global $DIC;
636
637 $ilCtrl = $DIC['ilCtrl'];
638
639 foreach ((array) $_REQUEST['bookuser'] as $bookuser) {
640 $ids = explode('_', $bookuser);
641
642 include_once './Services/Calendar/classes/ConsultationHours/class.ilConsultationHourUtils.php';
643 ilConsultationHourUtils::cancelBooking($ids[1], $ids[0], $a_send_notification);
644 }
645 if ($a_send_notification) {
646 ilUtil::sendSuccess($this->lng->txt('cal_ch_canceled_bookings'), true);
647 } else {
648 ilUtil::sendSuccess($this->lng->txt('cal_ch_deleted_bookings'), true);
649 }
650 $ilCtrl->redirect($this, 'bookingList');
651 }
652
658 protected function appointmentList()
659 {
660 global $DIC;
661
662 $ilToolbar = $DIC['ilToolbar'];
663 $ilHelp = $DIC['ilHelp'];
664 $ilTabs = $DIC['ilTabs'];
665
666 $ilHelp->setScreenId("consultation_hours");
667
668 $ilToolbar->setFormAction($this->ctrl->getFormAction($this));
669 $ilToolbar->addButton($this->lng->txt('cal_ch_add_sequence'), $this->ctrl->getLinkTarget($this, 'createSequence'));
670
671 $this->setSubTabs();
672 $ilTabs->activateSubTab('cal_ch_app_list');
673
674 include_once './Services/Calendar/classes/ConsultationHours/class.ilConsultationHoursTableGUI.php';
675 $tbl = new ilConsultationHoursTableGUI($this, 'appointmentList', $this->getUserId());
676 $tbl->parse();
677 $this->tpl->setContent($tbl->getHTML());
678 }
679
684 protected function createSequence()
685 {
686 $this->initFormSequence(self::MODE_CREATE);
687
688 $this->booking = new ilBookingEntry();
689 $this->form->getItemByPostVar('bo')->setValue($this->booking->getNumberOfBookings());
690 $this->form->getItemByPostVar('ap')->setValue(1);
691 $this->form->getItemByPostVar('du')->setMinutes(15);
692 $this->form->getItemByPostVar('st')->setDate(
693 new ilDateTime(mktime(8, 0, 0, date('n', time()), date('d', time()), date('Y', time())), IL_CAL_UNIX)
694 );
695
696 $this->tpl->setContent($this->form->getHTML());
697 }
698
704 protected function initFormSequence($a_mode)
705 {
706 include_once './Services/Form/classes/class.ilPropertyFormGUI.php';
707
708 include_once('./Services/YUI/classes/class.ilYuiUtil.php');
710
711 $this->form = new ilPropertyFormGUI();
712 $this->form->setFormAction($this->ctrl->getFormAction($this));
713
714 switch ($a_mode) {
716 $this->form->setTitle($this->lng->txt('cal_ch_add_sequence'));
717 $this->form->addCommandButton('saveSequence', $this->lng->txt('save'));
718 $this->form->addCommandButton('appointmentList', $this->lng->txt('cancel'));
719 break;
720
721 /*
722 case self::MODE_UPDATE:
723 $this->form->setTitle($this->lng->txt('cal_ch_edit_sequence'));
724 $this->form->addCommandButton('updateSequence', $this->lng->txt('save'));
725 $this->form->addCommandButton('appointmentList', $this->lng->txt('cancel'));
726 break;
727 */
728
729 case self::MODE_MULTI:
730 $this->form->setTitle($this->lng->txt('cal_ch_multi_edit_sequence'));
731 $this->form->addCommandButton('updateMulti', $this->lng->txt('save'));
732 $this->form->addCommandButton('appointmentList', $this->lng->txt('cancel'));
733 break;
734 }
735
736 // in case of existing groups show a selection
737 include_once './Services/Calendar/classes/ConsultationHours/class.ilConsultationHourGroups.php';
739 $group = new ilSelectInputGUI($this->lng->txt('cal_ch_grp_selection'), 'grp');
740 $group->setOptions($options);
741 $group->setRequired(false);
742 $this->form->addItem($group);
743 }
744
745 // Title
746 $ti = new ilTextInputGUI($this->lng->txt('title'), 'ti');
747 $ti->setSize(32);
748 $ti->setMaxLength(128);
749 $ti->setRequired(true);
750 $this->form->addItem($ti);
751
752 if ($a_mode != self::MODE_MULTI) {
753 // Start
754 include_once './Services/Form/classes/class.ilDateTimeInputGUI.php';
755 $dur = new ilDateTimeInputGUI($this->lng->txt('cal_start'), 'st');
756 $dur->setShowTime(true);
757 $dur->setRequired(true);
758 $this->form->addItem($dur);
759
760 // Duration
761 $du = new ilDurationInputGUI($this->lng->txt('cal_ch_duration'), 'du');
762 $du->setShowMinutes(true);
763 $du->setShowHours(true);
764 $this->form->addItem($du);
765
766 // Number of appointments
767 $nu = new ilNumberInputGUI($this->lng->txt('cal_ch_num_appointments'), 'ap');
768 $nu->setInfo($this->lng->txt('cal_ch_num_appointments_info'));
769 $nu->setSize(2);
770 $nu->setMaxLength(2);
771 $nu->setRequired(true);
772 $nu->setMinValue(1);
773 $this->form->addItem($nu);
774
775 // Recurrence
776 include_once('./Services/Calendar/classes/Form/class.ilRecurrenceInputGUI.php');
777 $rec = new ilRecurrenceInputGUI($this->lng->txt('cal_recurrences'), 'frequence');
778 $rec->setEnabledSubForms(
779 array(
783 )
784 );
785 $this->form->addItem($rec);
786 }
787
788 // Number of bookings
789 $nu = new ilNumberInputGUI($this->lng->txt('cal_ch_num_bookings'), 'bo');
790 $nu->setSize(2);
791 $nu->setMaxLength(2);
792 $nu->setMinValue(1);
793 $nu->setRequired(true);
794 $this->form->addItem($nu);
795
796 // Deadline
797 $dead = new ilDurationInputGUI($this->lng->txt('cal_ch_deadline'), 'dead');
798 $dead->setInfo($this->lng->txt('cal_ch_deadline_info'));
799 $dead->setShowMinutes(false);
800 $dead->setShowHours(true);
801 $dead->setShowDays(true);
802 $this->form->addItem($dead);
803
804 // Location
805 $lo = new ilTextInputGUI($this->lng->txt('cal_where'), 'lo');
806 $lo->setSize(32);
807 $lo->setMaxLength(128);
808 $this->form->addItem($lo);
809
810 // Description
811 $de = new ilTextAreaInputGUI($this->lng->txt('description'), 'de');
812 $de->setRows(10);
813 $de->setCols(60);
814 $this->form->addItem($de);
815
816 // Target Object
817 $tgt = new ilTextInputGUI($this->lng->txt('cal_ch_target_object'), 'tgt');
818 $tgt->setInfo($this->lng->txt('cal_ch_target_object_info'));
819 $tgt->setSize(16);
820 $tgt->setMaxLength(128);
821 $this->form->addItem($tgt);
822 }
823
828 protected function saveSequence()
829 {
830 global $DIC;
831
832 $ilObjDataCache = $DIC['ilObjDataCache'];
833
834 $this->initFormSequence(self::MODE_CREATE);
835
836 if ($this->form->checkInput()) {
837 $this->form->setValuesByPost();
838
839 $booking = new ilBookingEntry();
840 $booking->setObjId($this->getUserId());
841 $booking->setNumberOfBookings($this->form->getInput('bo'));
842
843 $deadline = $this->form->getInput('dead');
844 $deadline = $deadline['dd'] * 24 + $deadline['hh'];
845 $booking->setDeadlineHours($deadline);
846
847 // consultation hour group
848 include_once './Services/Calendar/classes/ConsultationHours/class.ilConsultationHourGroups.php';
850 $booking->setBookingGroup((int) $this->form->getInput('grp'));
851 }
852
853 $tgt = explode(',', $this->form->getInput('tgt'));
854 $obj_ids = array();
855 foreach ((array) $tgt as $ref_id) {
856 if (!trim($ref_id)) {
857 continue;
858 }
859 $obj_id = $ilObjDataCache->lookupObjId($ref_id);
860 $type = ilObject::_lookupType($obj_id);
861 $valid_types = array('crs','grp');
862 if (!$obj_id or !in_array($type, $valid_types)) {
863 ilUtil::sendFailure($this->lng->txt('cal_ch_unknown_repository_object'));
864 $this->tpl->setContent($this->form->getHTML());
865 return;
866 }
867
868 $obj_ids[] = $obj_id;
869 }
870 $booking->setTargetObjIds($obj_ids);
871
872 $booking->save();
874
875 ilUtil::sendSuccess($this->lng->txt('settings_saved'), true);
876 $this->ctrl->redirect($this, 'appointmentList');
877 } else {
878 $this->form->setValuesByPost();
879 $this->tpl->setContent($this->form->getHTML());
880 }
881 }
882
889 {
890 include_once './Services/Calendar/classes/class.ilDateList.php';
891 $concurrent_dates = new ilDateList(ilDateList::TYPE_DATETIME);
892 $start = clone $this->form->getItemByPostVar('st')->getDate();
893 for ($i = 0; $i < $this->form->getItemByPostVar('ap')->getValue(); $i++) {
894 $concurrent_dates->add(clone $start);
895
896 $start->increment(ilDateTime::MINUTE, $this->form->getItemByPostVar('du')->getMinutes());
897 $start->increment(ilDateTime::HOUR, $this->form->getItemByPostVar('du')->getHours());
898 #$start = new ilDateTime(,IL_CAL_UNIX);
899 }
900
901 include_once './Services/Calendar/classes/class.ilCalendarUtil.php';
902 $def_cat = ilCalendarUtil::initDefaultCalendarByType(ilCalendarCategory::TYPE_CH, $this->getUserId(), $this->lng->txt('cal_ch_personal_ch'), true);
903
904 // Add calendar appointment for each
905 include_once './Services/Calendar/classes/class.ilCalendarCategoryAssignments.php';
906 include_once './Services/Calendar/classes/class.ilCalendarEntry.php';
907 include_once './Services/Calendar/classes/class.ilCalendarRecurrenceCalculator.php';
908 include_once './Services/Booking/classes/class.ilBookingPeriod.php';
909
910 $num_appointments = 0;
911 foreach ($concurrent_dates as $dt) {
912 if ($num_appointments >= self::MAX_APPOINTMENTS_PER_SEQUENCE) {
913 break;
914 }
915
916 $end = clone $dt;
917 $end->increment(ilDateTime::MINUTE, $this->form->getItemByPostVar('du')->getMinutes());
918 $end->increment(ilDateTime::HOUR, $this->form->getItemByPostVar('du')->getHours());
919
921 new ilBookingPeriod($dt, $end),
922 $this->form->getItemByPostVar('frequence')->getRecurrence()
923 );
924
925 // Calculate with one year limit
926 $limit = clone $dt;
927 $limit->increment(ilDateTime::YEAR, 1);
928
929 $date_list = $calc->calculateDateList($dt, $limit);
930
931 $num = 0;
932 foreach ($date_list as $app_start) {
933 $app_end = clone $app_start;
934 $app_end->increment(ilDateTime::MINUTE, $this->form->getItemByPostVar('du')->getMinutes());
935 $app_end->increment(ilDateTime::HOUR, $this->form->getItemByPostVar('du')->getHours());
936
937
938 $entry = new ilCalendarEntry();
939 $entry->setContextId($booking->getId());
940 $entry->setTitle($this->form->getInput('ti'));
941 $entry->setSubtitle("#consultationhour#"); // dynamic, see ilCalendarEntry
942 $entry->setDescription($this->form->getInput('de'));
943 $entry->setLocation($this->form->getInput('lo'));
944 $entry->setStart($app_start);
945 $entry->setEnd($app_end);
946
947 $entry->setTranslationType(IL_CAL_TRANSLATION_SYSTEM);
948 $entry->save();
949
950 $cat_assign = new ilCalendarCategoryAssignments($entry->getEntryId());
951 $cat_assign->addAssignment($def_cat->getCategoryID());
952
953 $num_appointments++;
954 }
955 }
956 }
957
962 protected function setTabs()
963 {
964 global $DIC;
965
966 $ilTabs = $DIC['ilTabs'];
967 $ilUser = $DIC['ilUser'];
968 $ilCtrl = $DIC['ilCtrl'];
969
970 $ilCtrl->setParameter($this, 'user_id', '');
971 $ilTabs->addTab('consultation_hours_' . $ilUser->getId(), $this->lng->txt('cal_ch_ch'), $this->ctrl->getLinkTarget($this, 'appointmentList'));
972
974 $ilCtrl->setParameter($this, 'user_id', $user_id);
975 $ilTabs->addTab('consultation_hours_' . $user_id, $this->lng->txt('cal_ch_ch') . ': ' . $login, $this->ctrl->getLinkTarget($this, 'appointmentList'));
976 }
977 $ilCtrl->setParameter($this, 'user_id', '');
978
979 $ilTabs->addTab('ch_settings', $this->lng->txt('settings'), $this->ctrl->getLinkTarget($this, 'settings'));
980
981 $ilTabs->activateTab('consultation_hours_' . $this->getUserId());
982 }
983
989 protected function setSubTabs()
990 {
991 global $DIC;
992
993 $ilTabs = $DIC['ilTabs'];
994 $ilCtrl = $DIC['ilCtrl'];
995
996 $ilCtrl->setParameter($this, 'user_id', $this->getUserId());
997 $ilTabs->addSubTab('cal_ch_app_list', $this->lng->txt('cal_ch_app_list'), $ilCtrl->getLinkTarget($this, 'appointmentList'));
998 $ilTabs->addSubTab('cal_ch_app_grp', $this->lng->txt('cal_ch_app_grp'), $ilCtrl->getLinkTarget($this, 'groupList'));
999 $ilTabs->addSubTab('cal_ch_app_bookings', $this->lng->txt('cal_ch_app_bookings'), $ilCtrl->getLinkTarget($this, 'bookingList'));
1000 }
1001
1005 public function edit()
1006 {
1007 global $DIC;
1008
1009 $ilTabs = $DIC['ilTabs'];
1010
1011 if (!isset($_REQUEST['apps'])) {
1012 ilUtil::sendFailure($this->lng->txt('select_one'));
1013 return $this->appointmentList();
1014 }
1015
1016 $this->initFormSequence(self::MODE_MULTI);
1017
1018 if ($_REQUEST['apps'] && !is_array($_REQUEST['apps'])) {
1019 $_REQUEST['apps'] = explode(';', $_REQUEST['apps']);
1020 }
1021
1022 $hidden = new ilHiddenInputGUI('apps');
1023 $hidden->setValue(implode(';', $_REQUEST['apps']));
1024 $this->form->addItem($hidden);
1025
1026 include_once 'Services/Calendar/classes/class.ilCalendarEntry.php';
1027 $first = $_REQUEST['apps'];
1028 $first = array_shift($_REQUEST['apps']);
1029 $entry = new ilCalendarEntry($first);
1030
1031 $this->form->getItemByPostVar('ti')->setValue($entry->getTitle());
1032 $this->form->getItemByPostVar('lo')->setValue($entry->getLocation());
1033 $this->form->getItemByPostVar('de')->setValue($entry->getDescription());
1034
1035 include_once 'Services/Booking/classes/class.ilBookingEntry.php';
1036 $booking = new ilBookingEntry($entry->getContextId());
1037
1038 $this->form->getItemByPostVar('bo')->setValue($booking->getNumberOfBookings());
1039
1040 $ref_ids = array();
1041 foreach ($booking->getTargetObjIds() as $obj_id) {
1042 $refs = ilObject::_getAllReferences($obj_id);
1043 $ref_ids[] = end($refs);
1044 }
1045 $this->form->getItemByPostVar('tgt')->setValue(implode(',', $ref_ids));
1046
1047 $deadline = $booking->getDeadlineHours();
1048 $this->form->getItemByPostVar('dead')->setDays(floor($deadline / 24));
1049 $this->form->getItemByPostVar('dead')->setHours($deadline % 24);
1050
1051 if ($booking->getBookingGroup()) {
1052 $this->form->getItemByPostVar('grp')->setValue($booking->getBookingGroup());
1053 }
1054
1055 $this->tpl->setContent($this->form->getHTML());
1056 }
1057
1062 protected function createNewBookingEntry(\ilPropertyFormGUI $validate_form)
1063 {
1064 global $DIC;
1065
1066 $obj_cache = $DIC['ilObjDataCache'];
1067
1068 $booking = new \ilBookingEntry();
1069 $booking->setObjId($this->user_id);
1070 $booking->setNumberOfBookings((int) $this->form->getInput('bo'));
1071
1072 $deadline = $this->form->getInput('dead');
1073 $deadline = $deadline['dd'] * 24 + $deadline['hh'];
1074 $booking->setDeadlineHours($deadline);
1075
1076 $tgt = explode(',', (string) $this->form->getInput('tgt'));
1077 $obj_ids = [];
1078 foreach ((array) $tgt as $ref_id) {
1079 if (!trim($ref_id)) {
1080 continue;
1081 }
1082 $obj_id = $obj_cache->lookupObjId($ref_id);
1083 $type = ilObject::_lookupType($obj_id);
1084 $valid_types = ['crs', 'grp'];
1085 if (!$obj_id or !in_array($type, $valid_types)) {
1086 ilUtil::sendFailure($this->lng->txt('cal_ch_unknown_repository_object'));
1087 return null;
1088 }
1089 $obj_ids[] = $obj_id;
1090 }
1091 $booking->setTargetObjIds($obj_ids);
1092
1094 $booking->setBookingGroup($this->form->getInput('grp'));
1095 }
1096 $booking->save();
1097 return $booking;
1098 }
1099
1105 {
1106 foreach ($appointments as $appointment_id) {
1107
1108 $booking_appointment = new \ilCalendarEntry($appointment_id);
1109 $booking_start = $booking_appointment->getStart();
1110 $booking_end = $booking_appointment->getEnd();
1111
1112 $deprecatedBooking = \ilBookingEntry::getInstanceByCalendarEntryId($appointment_id);
1113 if (!$deprecatedBooking instanceof \ilBookingEntry) {
1114 // @todo error handling
1115 continue;
1116 }
1117
1119 $deprecatedBooking,
1120 $booking_start,
1121 $booking_end
1122 );
1123 foreach ($relevant_appointments as $relevant_appointment_id) {
1124
1125 $entry = new \ilCalendarEntry($relevant_appointment_id);
1126 $entry->setContextId($booking->getId());
1127 $entry->setTitle($form->getInput('ti'));
1128 $entry->setLocation($form->getInput('lo'));
1129 $entry->setDescription($form->getInput('de'));
1130 $entry->update();
1131 }
1132 }
1133 }
1134
1139 protected function updateMulti()
1140 {
1141 global $DIC;
1142
1143 $ilObjDataCache = $DIC['ilObjDataCache'];
1144
1145 $this->initFormSequence(self::MODE_MULTI);
1146
1147 if ($this->form->checkInput()) {
1148
1149 $this->form->setValuesByPost();
1150 $apps = explode(';', (string) $_POST['apps']);
1151
1152 // create new booking
1153 $booking = $this->createNewBookingEntry($this->form);
1154 if (!$booking instanceof \ilBookingEntry) {
1155 $this->edit();
1156 return false;
1157 }
1158 $this->rewriteBookingIdsForAppointments($booking, $apps, $this->form);
1160
1161 ilUtil::sendSuccess($this->lng->txt('settings_saved'), true);
1162 $this->ctrl->redirect($this, 'appointmentList');
1163 }
1164 $this->tpl->setContent($this->form->getHTML());
1165 }
1166
1170 public function confirmDelete()
1171 {
1172 global $DIC;
1173
1174 $tpl = $DIC['tpl'];
1175
1176 if (!isset($_REQUEST['apps'])) {
1177 ilUtil::sendFailure($this->lng->txt('select_one'));
1178 return $this->appointmentList();
1179 }
1180
1181 include_once('./Services/Utilities/classes/class.ilConfirmationGUI.php');
1182
1183
1184 $this->ctrl->saveParameter($this, array('seed','app_id','dt'));
1185
1186 $confirm = new ilConfirmationGUI();
1187 $confirm->setFormAction($this->ctrl->getFormAction($this));
1188 $confirm->setHeaderText($this->lng->txt('cal_delete_app_sure'));
1189 $confirm->setCancel($this->lng->txt('cancel'), 'cancel');
1190
1191 include_once 'Services/Calendar/classes/class.ilCalendarEntry.php';
1192
1193 $bookings_available = array();
1194 foreach ((array) $_REQUEST['apps'] as $entry_id) {
1195 $entry = new ilCalendarEntry($entry_id);
1196 $confirm->addItem('apps[]', $entry_id, ilDatePresentation::formatDate($entry->getStart()) . ', ' . $entry->getTitle());
1197
1198 include_once './Services/Booking/classes/class.ilBookingEntry.php';
1200 $bookings_available[] = ilDatePresentation::formatDate($entry->getStart()) . ', ' . $entry->getTitle();
1201 }
1202 }
1203
1204 if ($bookings_available) {
1205 ilUtil::sendInfo($this->lng->txt('cal_ch_delete_app_booking_info') . '<br />' . implode('<br />', $bookings_available));
1206 }
1207
1208 $confirm->setConfirm($this->lng->txt('delete'), 'delete');
1209 $confirm->setCancel($this->lng->txt('cancel'), 'appointmentList');
1210
1211 $tpl->setContent($confirm->getHTML());
1212 }
1213
1217 public function delete()
1218 {
1219 if (!isset($_POST['apps'])) {
1220 ilUtil::sendFailure($this->lng->txt('select_one'));
1221 return $this->appointmentList();
1222 }
1223
1224 include_once 'Services/Calendar/classes/class.ilCalendarEntry.php';
1225 include_once 'Services/Calendar/classes/class.ilCalendarCategoryAssignments.php';
1226 foreach ($_POST['apps'] as $entry_id) {
1227 // cancel booking for users
1229 if ($booking) {
1230 foreach ($booking->getCurrentBookings($entry_id) as $user_id) {
1231 include_once './Services/Calendar/classes/ConsultationHours/class.ilConsultationHourUtils.php';
1233 }
1234 }
1235 // remove calendar entries
1236 include_once './Services/Calendar/classes/class.ilCalendarEntry.php';
1237 $entry = new ilCalendarEntry($entry_id);
1238 $entry->delete();
1239
1241 }
1242
1244
1245 ilUtil::sendSuccess($this->lng->txt('cal_deleted_app'), true);
1246 $this->ctrl->redirect($this, 'appointmentList');
1247 }
1248
1252 public function showProfile()
1253 {
1254 global $DIC;
1255
1256 $tpl = $DIC['tpl'];
1257 $ilTabs = $DIC['ilTabs'];
1258 $ilCtrl = $DIC['ilCtrl'];
1259
1260 $ilTabs->clearTargets();
1261
1262 $user_id = (int) $_GET['user'];
1263
1264 include_once 'Services/User/classes/class.ilPublicUserProfileGUI.php';
1265 $profile = new ilPublicUserProfileGUI($user_id);
1266 $profile->setBackUrl($this->getProfileBackUrl());
1267 $tpl->setContent($ilCtrl->getHTML($profile));
1268 }
1269
1275 protected function getProfileBackUrl()
1276 {
1277 // from repository
1278 if (isset($_REQUEST["ref_id"])) {
1279 $url = $this->ctrl->getLinkTargetByClass('ilCalendarMonthGUI');
1280 }
1281 // from panel
1282 elseif (isset($_GET['panel'])) {
1283 $url = $this->ctrl->getLinkTargetByClass('ilCalendarPresentationGUI');
1284 }
1285 // from appointments
1286 else {
1287 $url = $this->ctrl->getLinkTarget($this, 'appointmentList');
1288 }
1289 return $url;
1290 }
1291
1295 public function settings()
1296 {
1297 global $DIC;
1298
1299 $tpl = $DIC['tpl'];
1300 $ilTabs = $DIC['ilTabs'];
1301 $ilHelp = $DIC['ilHelp'];
1302
1303 $ilHelp->setScreenId("consultation_hours_settings");
1304 $ilTabs->activateTab('ch_settings');
1305
1306 $form = $this->initSettingsForm();
1307 $tpl->setContent($form->getHTML());
1308 }
1309
1314 protected function initSettingsForm()
1315 {
1316 global $DIC;
1317
1318 $ilDB = $DIC['ilDB'];
1319 $ilUser = $DIC['ilUser'];
1320
1321 include_once './Services/Form/classes/class.ilPropertyFormGUI.php';
1322
1323 $form = new ilPropertyFormGUI();
1324 $form->setFormAction($this->ctrl->getFormAction($this));
1325
1326 $mng = new ilTextInputGUI($this->lng->txt('cal_ch_manager'), 'mng');
1327 $mng->setInfo($this->lng->txt('cal_ch_manager_info'));
1328 $form->addItem($mng);
1329
1330 $mng->setValue(ilConsultationHourAppointments::getManager(true));
1331
1332 $form->setTitle($this->lng->txt('settings'));
1333 $form->addCommandButton('updateSettings', $this->lng->txt('save'));
1334 // $form->addCommandButton('appointmentList', $this->lng->txt('cancel'));
1335 return $form;
1336 }
1337
1341 public function updateSettings()
1342 {
1343 global $DIC;
1344
1345 $ilDB = $DIC['ilDB'];
1346 $ilCtrl = $DIC['ilCtrl'];
1347 $ilUser = $DIC['ilUser'];
1348 $tpl = $DIC['tpl'];
1349 $ilTabs = $DIC['ilTabs'];
1350
1351 $form = $this->initSettingsForm();
1352 if ($form->checkInput()) {
1353 $mng = $form->getInput('mng');
1355 ilUtil::sendSuccess($this->lng->txt('settings_saved'), true);
1356 $ilCtrl->redirect($this, 'settings');
1357 } else {
1358 $ilTabs->activateTab('ch_settings');
1359
1360 ilUtil::sendFailure($this->lng->txt('cal_ch_unknown_user'));
1361 $field = $form->getItemByPostVar('mng');
1362 $field->setValue($mng);
1363 $tpl->setContent($form->getHTML());
1364 return;
1365 }
1366 }
1367 }
1368}
$tpl
Definition: ilias.php:10
$users
Definition: authpage.php:44
$_GET["client_id"]
$_POST["username"]
$_SESSION["AccountId"]
An exception for terminatinating execution or to throw for unit testing.
const IL_CAL_TRANSLATION_SYSTEM
const IL_CAL_FREQ_MONTHLY
const IL_CAL_FREQ_WEEKLY
const IL_CAL_UNIX
const IL_CAL_DAY
Booking definition.
static lookupBookingsOfUser($a_app_ids, $a_usr_id, ilDateTime $start=null)
Lookup bookings if user.
static getInstanceByCalendarEntryId($a_id)
Get instance by calendar entry.
static removeObsoleteEntries()
Remove unused booking entries.
static lookupBookingsForAppointment($a_app_id)
Lookup booked users for appointment @global type $ilDB.
Booking period Used for calculation of recurring events.
static _deleteByAppointmentId($a_app_id)
Delete appointment assignment.
Model for a calendar entry.
Calculates an ilDateList for a given calendar entry and recurrence rule.
static initDefaultCalendarByType($a_type_id, $a_usr_id, $a_title, $a_create=false)
Init the default calendar for given type and user.
Confirmation screen class.
static getAppointmentIds($a_user_id, $a_context_id=null, $a_start=null, $a_type=null, $a_check_owner=true)
Get all appointment ids.
static getAppointmentIdsByGroup($a_user_id, $a_ch_group_id, ilDateTime $start=null)
Get appointment ids by consultation hour group.
static getManager($a_as_name=false, $a_full_name=false, $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($a_user_name)
Set consultation hour manager for current user.
static getGroupsOfUser($a_user_id)
Get a all groups of an user.
static getCountGroupsOfUser($a_user_id)
Get number of consultation hour groups @global type $ilDB.
static getGroupSelectOptions($a_user_id)
Get group selection options.
static findCalendarAppointmentsForBooking(\ilBookingEntry $booking, \ilDateTime $start, \ilDateTime $end)
static cancelBooking($a_usr_id, $a_app_id, $a_send_notification=true)
Cancel a booking.
static bookAppointment($a_usr_id, $a_app_id)
Book an appointment.
Consultation hours editor.
editGroup(ilPropertyFormGUI $form=null)
Edit group @global type $ilCtrl.
confirmDelete()
confirm delete for multiple entries
updateGroup()
Update group @global type $ilCtrl @global type $tpl @global type $ilTabs.
rejectBooking($a_send_notification=true)
rewriteBookingIdsForAppointments(\ilBookingEntry $booking, $appointments, \ilPropertyFormGUI $form)
appointmentList()
Show settings of consultation hours.
groupList()
Show consultation hour group @global type $ilToolbar.
edit()
Edit multiple sequence items.
confirmRejectBooking($a_send_notification=true)
Show delete booking confirmation.
addGroup(ilPropertyFormGUI $form=null)
Show add group form @global type $ilToolbar @global type $ilTabs.
showProfile()
show public profile of given user
sendInfoAboutUnassignedUsers($unassigned)
Send info message about unassigned users.
searchUsersForAppointments()
start searching for users
assignUsersToAppointments(array $users)
Assign users to multiple appointments.
bookingList()
Show list of bookings.
updateMulti()
Update multiple sequence items.
confirmDeleteBooking()
Show delete booking confirmation.
assignUsersToAppointment(array $users, $a_app=0, $a_redirect=true)
Assign users to an appointment.
initGroupForm($a_group_id=0)
Init new/update group form.
setSubTabs()
Set sub tabs @global type $ilTabs @global type $ilCtrl.
createNewBookingEntry(\ilPropertyFormGUI $validate_form)
createAppointments(ilBookingEntry $booking)
Create calendar appointments.
confirmDeleteGroup()
Confirm delete @global type $ilCtrl @global type $ilTabs.
getProfileBackUrl()
Build context-sensitive profile back url.
Consultation hours administration.
List of dates.
static formatDate(ilDateTime $date, $a_skip_day=false, $a_include_wd=false, $include_seconds=false)
Format a date @access public.
This class represents a date/time property in a property form.
@classDescription Date and time handling
This class represents a duration (typical hh:mm:ss) property in a property form.
This class represents a hidden form property in a property form.
This class represents a number property in a property form.
static _lookupFullname($a_user_id)
Lookup Full Name.
static _getAllReferences($a_id)
get all reference ids of object
static _lookupType($a_id, $a_reference=false)
lookup object type
This class represents a property form user interface.
GUI class for public user profile presentation.
This class represents an input GUI for recurring events/appointments (course events or calendar appoi...
This class represents a selection list property in a property form.
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, $a_user_image=false, $a_profile_link=false, $a_profile_back_link="", $a_force_first_lastname=false, $a_omit_login=false, $a_sortable=true, $a_return_data_array=false, $a_ctrl_path="ilpublicuserprofilegui")
Default behaviour is:
static sendFailure($a_info="", $a_keep=false)
Send Failure Message to Screen.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
static initDomEvent()
Init YUI DomEvent.
$login
Definition: cron.php:13
$i
Definition: disco.tpl.php:19
$tbl
Definition: example_048.php:81
const IL_CAL_FREQ_DAILY
Model of calendar entry recurrcences.
global $ilCtrl
Definition: ilias.php:18
$user
Definition: migrateto20.php:57
$GLOBALS['JPEG_Segment_Names']
Global Variable: XMP_tag_captions.
$ret
Definition: parser.php:6
$type
$url
if(isset($_POST['submit'])) $form
global $DIC
Definition: saml.php:7
$lng
global $ilDB
$ilUser
Definition: imgupload.php:18
$start
Definition: bench.php:8