aboutsummaryrefslogtreecommitdiff
path: root/app/controllers
diff options
context:
space:
mode:
authorDavid Siegfried <david.siegfried>2022-08-23 15:13:51 +0200
committerJan-Hendrik Willms <tleilax+studip@gmail.com>2023-04-25 10:22:58 +0000
commitcc53ce79339421e6e7024b3b58ecd649e18cd853 (patch)
treed285c07ae7ebd8ffbd14c84f3875021a326cd42c /app/controllers
parent35ed31ce8e6f281a027df955b3251f5002875420 (diff)
set clipboard_id after login, closes #236biest-236-2
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/room_management/planning.php169
1 files changed, 66 insertions, 103 deletions
diff --git a/app/controllers/room_management/planning.php b/app/controllers/room_management/planning.php
index 81627e2..a8e8979 100644
--- a/app/controllers/room_management/planning.php
+++ b/app/controllers/room_management/planning.php
@@ -21,6 +21,28 @@
*/
class RoomManagement_PlanningController extends AuthenticatedController
{
+ public function before_filter(&$action, &$args)
+ {
+ parent::before_filter($action, $args);
+ $this->current_user = User::findCurrent();
+ }
+
+ private function setClipboard($selected_clipboard_id = null)
+ {
+ $this->selected_clipboard_id = Request::get('clipboard_id', $selected_clipboard_id);
+ if ($this->selected_clipboard_id) {
+ $_SESSION['selected_clipboard_id'] = $this->selected_clipboard_id;
+ } else {
+ $this->selected_clipboard_id = $_SESSION['selected_clipboard_id'];
+ }
+ $this->clipboards = Clipboard::getClipboardsForUser($GLOBALS['user']->id);
+
+ if (!$this->selected_clipboard_id && !empty($this->clipboards)) {
+ $this->selected_clipboard_id = $this->clipboards[0]->id;
+ $_SESSION['selected_clipboard_id'] = $this->selected_clipboard_id;
+ }
+ }
+
public function index_action($selected_clipboard_id = null)
{
PageLayout::setTitle(
@@ -30,16 +52,8 @@ class RoomManagement_PlanningController extends AuthenticatedController
if (Navigation::hasItem('/resources/planning/index')) {
Navigation::activateItem('/resources/planning/index');
}
- $selected_clipboard_id = Request::get('clipboard_id', $selected_clipboard_id);
-
- $this->no_clipboard = false;
- $this->no_rooms = false;
- if ($selected_clipboard_id) {
- $_SESSION['selected_clipboard_id'] = $selected_clipboard_id;
- } else {
- $selected_clipboard_id = $_SESSION['selected_clipboard_id'];
- }
+ $this->setClipboard($selected_clipboard_id);
$this->display_all_requests = Request::get('display_all_requests');
@@ -91,27 +105,26 @@ class RoomManagement_PlanningController extends AuthenticatedController
$dpicker->addElement(new WidgetElement($picker_html));
$sidebar->addWidget($dpicker);
- $clipboards = Clipboard::getClipboardsForUser($GLOBALS['user']->id);
- if (!empty($clipboards)) {
+ if (!empty($this->clipboards)) {
$clipboard_widget = new SelectWidget(
_('Individuelle Raumgruppen'),
$this->indexURL(),
'clipboard_id',
'get'
);
- foreach ($clipboards as $clipboard) {
+ foreach ($this->clipboards as $clipboard) {
$clipboard_widget->addElement(new SelectElement(
$clipboard->id,
$clipboard->name,
- $clipboard->id === $selected_clipboard_id
+ $clipboard->id === $this->selected_clipboard_id
), "clipboard_id-{$clipboard->id}");
}
$sidebar->addWidget($clipboard_widget);
}
$rooms = [];
- if ($selected_clipboard_id) {
- $clipboard = Clipboard::find($selected_clipboard_id);
+ if ($this->selected_clipboard_id) {
+ $clipboard = Clipboard::find($this->selected_clipboard_id);
$this->clipboard = $clipboard;
if ($clipboard) {
PageLayout::setTitle(
@@ -142,7 +155,7 @@ class RoomManagement_PlanningController extends AuthenticatedController
];
}
- $current_user = User::findCurrent();
+
$room_c = count($rooms);
$requestable_rooms_c = 0;
@@ -152,13 +165,13 @@ class RoomManagement_PlanningController extends AuthenticatedController
$this->booking_types = [0, 1, 2];
foreach ($rooms as $room) {
- if ($room->userHasRequestRights($current_user)) {
+ if ($room->userHasRequestRights($this->current_user)) {
$request_rights_c++;
}
- if ($room->userHasBookingRights($current_user)) {
+ if ($room->userHasBookingRights($this->current_user)) {
$booking_rights_c++;
}
- if ($room->userHasPermission($current_user, 'admin')) {
+ if ($room->userHasPermission($this->current_user, 'admin')) {
$admin_rights_c++;
}
if ($room->requestable) {
@@ -168,7 +181,7 @@ class RoomManagement_PlanningController extends AuthenticatedController
//Check the permissions for the room:
//The booking plan must be visible for the user.
$sufficient_permissions =
- $room->bookingPlanVisibleForUser($current_user);
+ $room->bookingPlanVisibleForUser($this->current_user);
if (!$sufficient_permissions) {
throw new AccessDeniedException(
sprintf(
@@ -270,16 +283,7 @@ class RoomManagement_PlanningController extends AuthenticatedController
Navigation::activateItem('/resources/planning/semestergroup_plan');
}
- $selected_clipboard_id = Request::get('clipboard_id', $selected_clipboard_id);
-
- $this->no_clipboard = false;
- $this->no_rooms = false;
-
- if ($selected_clipboard_id) {
- $_SESSION['selected_clipboard_id'] = $selected_clipboard_id;
- } else {
- $selected_clipboard_id = $_SESSION['selected_clipboard_id'];
- }
+ $this->setClipboard($selected_clipboard_id);
$this->display_all_requests = Request::get('display_all_requests');
@@ -312,8 +316,7 @@ class RoomManagement_PlanningController extends AuthenticatedController
);
$sidebar->addWidget($actions);
-
- if ($GLOBALS['user']->id && ($GLOBALS['user']->id != 'nobody')) {
+ if ($GLOBALS['user']->id && ($GLOBALS['user']->id !== 'nobody')) {
$views = new ViewsWidget();
$views->setTitle(_('Zeitfenster'));
$views->addLink(
@@ -388,29 +391,27 @@ class RoomManagement_PlanningController extends AuthenticatedController
);
$sidebar->addWidget($semester_selector);
- $clipboards = Clipboard::getClipboardsForUser($GLOBALS['user']->id);
- if (!empty($clipboards)) {
+ if (!empty($this->clipboards)) {
$clipboard_widget = new SelectWidget(
_('Individuelle Raumgruppen'),
$this->semester_planURL(),
'clipboard_id',
'get'
);
- foreach ($clipboards as $clipboard) {
+ foreach ($this->clipboards as $clipboard) {
$clipboard_widget->addElement(new SelectElement(
$clipboard->id,
$clipboard->name,
- $clipboard->id === $selected_clipboard_id
+ $clipboard->id === $this->selected_clipboard_id
), "clipboard_id-{$clipboard->id}");
}
$sidebar->addWidget($clipboard_widget);
}
//Check if a clipboard is selected:
- $selected_clipboard_id = $_SESSION['selected_clipboard_id'];
$rooms = [];
- if ($selected_clipboard_id) {
- $clipboard = Clipboard::find($selected_clipboard_id);
+ if ($this->selected_clipboard_id) {
+ $clipboard = Clipboard::find($this->selected_clipboard_id);
$this->clipboard = $clipboard;
if ($clipboard) {
PageLayout::setTitle(
@@ -430,30 +431,22 @@ class RoomManagement_PlanningController extends AuthenticatedController
return;
}
- //Generate the resources array for the fullcalendar scheduler plugin:
- $this->scheduler_resources = [];
- foreach ($room_ids as $room_id) {
- $room = Room::find($room_id);
- $this->scheduler_resources[] = [
- 'id' => $room->id,
- 'parent_name' => $room->building->name,
- 'title' => $room->name
- ];
- }
-
- $current_user = User::findCurrent();
-
$room_c = count($rooms);
$requestable_rooms_c = 0;
$booking_rights_c = 0;
$admin_rights_c = 0;
$this->booking_types = [0, 1, 2];
-
+ $this->scheduler_resources = [];
foreach ($rooms as $room) {
- if ($room->userHasBookingRights($current_user)) {
+ $this->scheduler_resources[] = [
+ 'id' => $room->id,
+ 'parent_name' => $room->building->name,
+ 'title' => $room->name
+ ];
+ if ($room->userHasBookingRights($this->current_user)) {
$booking_rights_c++;
}
- if ($room->userHasPermission($current_user, 'admin')) {
+ if ($room->userHasPermission($this->current_user, 'admin')) {
$admin_rights_c++;
}
if ($room->requestable) {
@@ -461,12 +454,11 @@ class RoomManagement_PlanningController extends AuthenticatedController
}
//Check the permissions for the room:
- if (!$room->bookingPlanVisibleForUser($current_user)) {
+ if (!$room->bookingPlanVisibleForUser($this->current_user)) {
throw new AccessDeniedException();
}
}
- $all_rooms_requestable = ($room_c == $requestable_rooms_c);
$all_rooms_booking_rights = ($room_c == $booking_rights_c);
$all_rooms_admin = ($room_c == $admin_rights_c);
if ($all_rooms_admin) {
@@ -486,14 +478,14 @@ class RoomManagement_PlanningController extends AuthenticatedController
_('Alle Anfragen anzeigen'),
$this->display_all_requests ? 'checked' : '',
$this->url_for(
- 'room_management/planning/semester_plan/' . $_SESSION['selected_clipboard_id'],
+ 'room_management/planning/semester_plan/' . $this->selected_clipboard_id,
[
'display_all_requests' => '1',
'semester_id' => Request::option('semester_id')
]
),
$this->url_for(
- 'room_management/planning/semester_plan/' . $_SESSION['selected_clipboard_id'],
+ 'room_management/planning/semester_plan/' . $this->selected_clipboard_id,
[
'semester_id' => Request::option('semester_id')
]
@@ -504,9 +496,7 @@ class RoomManagement_PlanningController extends AuthenticatedController
}
$booking_colour = ColourValue::find('Resources.BookingPlan.Booking.Bg');
- $simple_booking_exception_colour = ColourValue::find('Resources.BookingPlan.SimpleBookingWithExceptions.Bg');
$course_booking_colour = ColourValue::find('Resources.BookingPlan.CourseBooking.Bg');
- $course_booking_with_exceptions_colour = ColourValue::find('Resources.BookingPlan.CourseBookingWithExceptions.Bg');
$lock_colour = ColourValue::find('Resources.BookingPlan.Lock.Bg');
$preparation_colour = ColourValue::find('Resources.BookingPlan.PreparationTime.Bg');
$reservation_colour = ColourValue::find('Resources.BookingPlan.Reservation.Bg');
@@ -558,15 +548,10 @@ class RoomManagement_PlanningController extends AuthenticatedController
if (Navigation::hasItem('/resources/planning/copy_bookings')) {
Navigation::activateItem('/resources/planning/copy_bookings');
}
-
- //Check if the clipboard is selected:
- $selected_clipboard_id = $_SESSION['selected_clipboard_id'];
-
- $user = User::findCurrent();
-
+ $this->setClipboard($clipboard_id);
$this->clipboard = null;
- if ($selected_clipboard_id) {
- $this->clipboard = Clipboard::find($selected_clipboard_id);
+ if ($this->selected_clipboard_id) {
+ $this->clipboard = Clipboard::find($this->selected_clipboard_id);
} else {
$this->clipboard = Clipboard::find($clipboard_id);
if (!$clipboard_id) {
@@ -582,13 +567,11 @@ class RoomManagement_PlanningController extends AuthenticatedController
);
return;
}
- if ($this->clipboard->user_id != $GLOBALS['user']->id) {
+ if ($this->clipboard->user_id !== $GLOBALS['user']->id) {
throw new AccessDeniedException();
}
- PageLayout::setTitle(
- $this->clipboard->name . ': ' . _('Buchungen kopieren')
- );
+ PageLayout::setTitle($this->clipboard->name . ': ' . _('Buchungen kopieren'));
//Step 1: Room selection
$this->step = 1;
@@ -600,7 +583,7 @@ class RoomManagement_PlanningController extends AuthenticatedController
$this->rooms = [];
$this->available_room_ids = [];
foreach ($unfiltered_rooms as $room) {
- if ($room->userHasPermission($user, 'autor')) {
+ if ($room->userHasPermission($this->current_user, 'autor')) {
$this->rooms[] = $room;
$this->available_room_ids[] = $room->id;
}
@@ -704,7 +687,6 @@ class RoomManagement_PlanningController extends AuthenticatedController
$unfiltered_bookings = [];
foreach ($this->selected_rooms as $room) {
- $room_bookings = [];
if ($this->sem_week_selected) {
$selected_week_begin = $this->source_semester->vorles_beginn;
if ($this->selected_sem_week > 1) {
@@ -848,7 +830,6 @@ class RoomManagement_PlanningController extends AuthenticatedController
$available_booking_c = 0;
foreach ($this->selected_bookings as $booking) {
- $begin_sem_week_number = 0;
if ($this->sem_week_selected) {
$begin_sem_week_number = $this->selected_sem_week +
$this->source_semester->getSemWeekNumber($booking->begin) - 1;
@@ -868,7 +849,6 @@ class RoomManagement_PlanningController extends AuthenticatedController
}
$begin_week_day = date('N', $booking->begin);
$begin_time = explode(':', date('H:i:s', $booking->begin));
- $end_time = explode(':', date('H:i:s', $booking->end));
//Calculate the duration (begin-end-difference):
$booking_begin = new DateTime();
@@ -1061,14 +1041,7 @@ class RoomManagement_PlanningController extends AuthenticatedController
Navigation::activateItem('/resources/planning/booking_comments');
}
- $selected_clipboard_id = Request::get('clipboard_id', $selected_clipboard_id);
- $this->standalone = false;
-
- if ($selected_clipboard_id) {
- $_SESSION['selected_clipboard_id'] = $selected_clipboard_id;
- } else {
- $selected_clipboard_id = $_SESSION['selected_clipboard_id'];
- }
+ $this->setClipboard($selected_clipboard_id);
//Get the selected date or use the current date, if none specified:
$this->date = Request::getDateTime('date', 'd.m.Y', null, null, new DateTime());
@@ -1085,9 +1058,7 @@ class RoomManagement_PlanningController extends AuthenticatedController
$sidebar = Sidebar::get();
//Add the date selection widget:
- $date_search = new SearchWidget(
- $this->url_for('room_management/planning/booking_comments')
- );
+ $date_search = new SearchWidget($this->url_for('room_management/planning/'));
$date_search->setTitle(_('Datum'));
$date_search->setMethod('get');
$date_search->addNeedle(
@@ -1102,23 +1073,19 @@ class RoomManagement_PlanningController extends AuthenticatedController
$sidebar->addWidget($date_search);
//Add clipboard widget:
- $clipboards = Clipboard::getClipboardsForUser($GLOBALS['user']->id);
- if (!empty($clipboards)) {
- if (!$selected_clipboard_id) {
- //Select the first clipboard so that the user doesn't have to select one first:
- $selected_clipboard_id = $clipboards[0]->id;
- }
+
+ if (!empty($this->clipboards)) {
$clipboard_widget = new SelectWidget(
_('Individuelle Raumgruppen'),
$this->booking_commentsURL(),
'clipboard_id',
'get'
);
- foreach ($clipboards as $clipboard) {
+ foreach ($this->clipboards as $clipboard) {
$clipboard_widget->addElement(new SelectElement(
$clipboard->id,
$clipboard->name,
- $clipboard->id === $selected_clipboard_id
+ $clipboard->id === $this->selected_clipboard_id
), "clipboard_id-{$clipboard->id}");
}
$sidebar->addWidget($clipboard_widget);
@@ -1126,8 +1093,8 @@ class RoomManagement_PlanningController extends AuthenticatedController
$this->current_user = User::findCurrent();
$this->room_ids = [];
- if ($selected_clipboard_id) {
- $clipboard = Clipboard::find($selected_clipboard_id);
+ if ($this->selected_clipboard_id) {
+ $clipboard = Clipboard::find($this->selected_clipboard_id);
$this->clipboard = $clipboard;
if ($clipboard) {
PageLayout::setTitle(
@@ -1237,7 +1204,6 @@ class RoomManagement_PlanningController extends AuthenticatedController
$interval_end = new DateTime();
$interval_end->setTimestamp($interval->end);
$begin_weekday = date('N', $interval->begin);
- $end_weekday = date('N', $interval->end);
if ($interval_begin->format('Ymd') != $interval_end->format('Ymd')) {
//The interval is spread over several days.
@@ -1370,10 +1336,7 @@ class RoomManagement_PlanningController extends AuthenticatedController
$template = $factory->open('booking_comments_html_export_frame.php');
- $template->set_attribute(
- 'data',
- $this->data
- );
+ $template->set_attribute('data', $this->data);
$template->set_attribute('date', $this->date);
$html = $template->render();