diff options
Diffstat (limited to 'includes/controller/rooms_controller.php')
-rw-r--r-- | includes/controller/rooms_controller.php | 171 |
1 files changed, 96 insertions, 75 deletions
diff --git a/includes/controller/rooms_controller.php b/includes/controller/rooms_controller.php index bba38bb5..d6da9709 100644 --- a/includes/controller/rooms_controller.php +++ b/includes/controller/rooms_controller.php @@ -1,7 +1,7 @@ <?php -use Engelsystem\ShiftsFilterRenderer; + use Engelsystem\ShiftsFilter; -use Engelsystem\ShiftCalendarRenderer; +use Engelsystem\ShiftsFilterRenderer; /** * Room controllers for managing everything room related. @@ -9,93 +9,114 @@ use Engelsystem\ShiftCalendarRenderer; /** * View a room with its shifts. + * + * @return array */ -function room_controller() { - global $privileges; - - if (! in_array('view_rooms', $privileges)) { - redirect(page_link_to()); - } - - - $room = load_room(); - - if($room['show'] != 'Y' && !in_array('admin_rooms', $privileges)) { - redirect(page_link_to()); - } - - $all_shifts = Shifts_by_room($room); - $days = []; - foreach ($all_shifts as $shift) { - $day = date("Y-m-d", $shift['start']); - if (! in_array($day, $days)) { - $days[] = $day; +function room_controller() +{ + global $privileges; + + if (!in_array('view_rooms', $privileges)) { + redirect(page_link_to()); } - } - - $shiftsFilter = new ShiftsFilter(true, [ - $room['RID'] - ], AngelType_ids()); - $selected_day = date("Y-m-d"); - if (! empty($days)) { - $selected_day = $days[0]; - } - if (isset($_REQUEST['shifts_filter_day'])) { - $selected_day = $_REQUEST['shifts_filter_day']; - } - $shiftsFilter->setStartTime(parse_date("Y-m-d H:i", $selected_day . ' 00:00')); - $shiftsFilter->setEndTime(parse_date("Y-m-d H:i", $selected_day . ' 23:59')); - - $shiftsFilterRenderer = new ShiftsFilterRenderer($shiftsFilter); - $shiftsFilterRenderer->enableDaySelection($days); - - $shiftCalendarRenderer = shiftCalendarRendererByShiftFilter($shiftsFilter); - - return [ - $room['Name'], - Room_view($room, $shiftsFilterRenderer, $shiftCalendarRenderer) - ]; + + $request = request(); + $room = load_room(false); + if ($room['show'] != 'Y' && !in_array('admin_rooms', $privileges)) { + redirect(page_link_to()); + } + + $all_shifts = Shifts_by_room($room); + $days = []; + foreach ($all_shifts as $shift) { + $day = date('Y-m-d', $shift['start']); + if (!in_array($day, $days)) { + $days[] = $day; + } + } + + $shiftsFilter = new ShiftsFilter( + true, + [$room['RID']], + AngelType_ids() + ); + $selected_day = date('Y-m-d'); + if (!empty($days)) { + $selected_day = $days[0]; + } + if ($request->has('shifts_filter_day')) { + $selected_day = $request->input('shifts_filter_day'); + } + $shiftsFilter->setStartTime(parse_date('Y-m-d H:i', $selected_day . ' 00:00')); + $shiftsFilter->setEndTime(parse_date('Y-m-d H:i', $selected_day . ' 23:59')); + + $shiftsFilterRenderer = new ShiftsFilterRenderer($shiftsFilter); + $shiftsFilterRenderer->enableDaySelection($days); + + $shiftCalendarRenderer = shiftCalendarRendererByShiftFilter($shiftsFilter); + + return [ + $room['Name'], + Room_view($room, $shiftsFilterRenderer, $shiftCalendarRenderer) + ]; } /** * Dispatch different room actions. + * + * @return array */ -function rooms_controller() { - if (! isset($_REQUEST['action'])) { - $_REQUEST['action'] = 'list'; - } - - switch ($_REQUEST['action']) { - default: - case 'list': - redirect(page_link_to('admin_rooms')); - case 'view': - return room_controller(); - } +function rooms_controller() +{ + $request = request(); + $action = $request->input('action'); + if (!$request->has('action')) { + $action = 'list'; + } + + switch ($action) { + case 'view': + return room_controller(); + case 'list': + default: + redirect(page_link_to('admin_rooms')); + } } -function room_link($room) { - return page_link_to('rooms') . '&action=view&room_id=' . $room['RID']; +/** + * @param array $room + * @return string + */ +function room_link($room) +{ + return page_link_to('rooms', ['action' => 'view', 'room_id' => $room['RID']]); } -function room_edit_link($room) { - return page_link_to('admin_rooms') . '&show=edit&id=' . $room['RID']; +/** + * @param array $room + * @return string + */ +function room_edit_link($room) +{ + return page_link_to('admin_rooms', ['show' => 'edit', 'id' => $room['RID']]); } /** * Loads room by request param room_id + * + * @param bool $onlyVisible + * @return array */ -function load_room() { - if (! test_request_int('room_id')) { - redirect(page_link_to()); - } - - $room = Room($_REQUEST['room_id']); - if ($room == null) { - redirect(page_link_to()); - } - - return $room; -} +function load_room($onlyVisible = true) +{ + if (!test_request_int('room_id')) { + redirect(page_link_to()); + } -?>
\ No newline at end of file + $room = Room(request()->input('room_id'), $onlyVisible); + if ($room == null) { + redirect(page_link_to()); + } + + return $room; +} |