From 5770d0d7fa3e4f3f52e5bd8cefc73673f7940bca Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Wed, 22 May 2024 07:03:28 +0000
Subject: [PATCH] add more and more checks (the controller needs some serious
 rework), fixes #4010

Closes #4010

Merge request studip/studip!2863
---
 app/controllers/course/room_requests.php                    | 4 ++--
 app/views/course/room_requests/_new_request_form_footer.php | 5 +----
 lib/models/resources/ResourceCategory.class.php             | 2 +-
 3 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/app/controllers/course/room_requests.php b/app/controllers/course/room_requests.php
index 3ce117ce76f..2a12c9b3b97 100644
--- a/app/controllers/course/room_requests.php
+++ b/app/controllers/course/room_requests.php
@@ -254,7 +254,7 @@ class Course_RoomRequestsController extends AuthenticatedController
         $this->selected_room = Resource::find($_SESSION[$request_id]['room_id'] ?: $this->request->resource_id);
 
         $this->selected_room_category_id = $this->selected_room->category_id ?? $_SESSION[$request_id]['room_category_id'] ?? null;
-        $this->category = ResourceCategory::find($this->selected_room_category_id);
+        $this->category = $this->selected_room_category_id ? ResourceCategory::find($this->selected_room_category_id) : null;
 
         $_SESSION[$request_id]['room_category_id'] = $_SESSION[$request_id]['room_category_id'] ?? $this->selected_room->category_id ?? null;
 
@@ -546,7 +546,7 @@ class Course_RoomRequestsController extends AuthenticatedController
 
         $_SESSION[$request_id]['search_by'] = $this->selected_room ? 'roomname' : 'category';
         $_SESSION[$request_id]['room_category_id'] = $this->selected_room_category->id;
-        $_SESSION[$request_id]['room_id'] = $this->selected_room->id;
+        $_SESSION[$request_id]['room_id'] = $this->selected_room ? $this->selected_room->id : '';
     }
 
     public function store_request_action($request_id)
diff --git a/app/views/course/room_requests/_new_request_form_footer.php b/app/views/course/room_requests/_new_request_form_footer.php
index 0bad0763b63..0d5046747bc 100644
--- a/app/views/course/room_requests/_new_request_form_footer.php
+++ b/app/views/course/room_requests/_new_request_form_footer.php
@@ -27,10 +27,7 @@
         <? if (
             (
                 $step === 1
-                && (
-                    !isset($_SESSION[$request_id]['room_category_id'])
-                    || $_SESSION[$request_id]['room_category_id'] !== '0'
-                )
+                && !empty($_SESSION[$request_id]['room_category_id'])
             )
             || $step === 2
         ) : ?>
diff --git a/lib/models/resources/ResourceCategory.class.php b/lib/models/resources/ResourceCategory.class.php
index f4ae14d5a7e..766a5f61f97 100644
--- a/lib/models/resources/ResourceCategory.class.php
+++ b/lib/models/resources/ResourceCategory.class.php
@@ -85,7 +85,7 @@ class ResourceCategory extends SimpleORMap
     public static function find($id)
     {
         $all = self::findAll();
-        return $all[$id] ?: null;
+        return $all[$id] ?? null;
     }
 
     /**
-- 
GitLab