From d0353afbc018457b4355038c397f441fa86a4aac Mon Sep 17 00:00:00 2001 From: Jan-Hendrik Willms Date: Mon, 8 Jan 2024 08:09:54 +0000 Subject: fixes #3611 Closes #3611 Merge request studip/studip!2504 --- app/controllers/course/room_requests.php | 31 ++++++----- app/views/course/room_requests/new_request.php | 63 ++++++++++----------- .../request_find_available_properties.php | 64 +++++++++++----------- .../room_requests/request_find_matching_rooms.php | 8 +-- app/views/course/timesrooms/_roomRequest.php | 2 +- lib/models/Folder.php | 22 +++++--- lib/models/resources/ResourceRequest.class.php | 16 +++--- templates/i18n/textarea.php | 2 +- 8 files changed, 105 insertions(+), 103 deletions(-) diff --git a/app/controllers/course/room_requests.php b/app/controllers/course/room_requests.php index 1f06afe..42628c8 100644 --- a/app/controllers/course/room_requests.php +++ b/app/controllers/course/room_requests.php @@ -265,9 +265,9 @@ class Course_RoomRequestsController extends AuthenticatedController // selected room and its category $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']; + $this->selected_room_category_id = $this->selected_room->category_id ?? $_SESSION[$request_id]['room_category_id'] ?? null; - $_SESSION[$request_id]['room_category_id'] = $_SESSION[$request_id]['room_category_id'] ?: $this->selected_room->category_id; + $_SESSION[$request_id]['room_category_id'] = $_SESSION[$request_id]['room_category_id'] ?? $this->selected_room->category_id ?? null; // after selecting a room, go to next step or stay here if no room was selected at all if (Request::submitted('select_room')) { @@ -367,9 +367,9 @@ class Course_RoomRequestsController extends AuthenticatedController $this->available_properties = $this->category->getRequestableProperties(); // properties, like 'Sitzplätze', 'behindertengerecht' etc - $this->selected_properties = $_SESSION[$request_id]['selected_properties']; - $this->preparation_time = $_SESSION[$request_id]['preparation_time']; - $this->comment = $_SESSION[$request_id]['comment']; + $this->selected_properties = $_SESSION[$request_id]['selected_properties'] ?? null; + $this->preparation_time = $_SESSION[$request_id]['preparation_time'] ?? null; + $this->comment = $_SESSION[$request_id]['comment'] ?? null; $this->request->category_id = $_SESSION[$request_id]['room_category_id']; // finally we want to show a summary @@ -412,11 +412,11 @@ class Course_RoomRequestsController extends AuthenticatedController $this->course = Course::find($this->course_id); $this->selected_properties['seats'] = $_SESSION[$request_id]['selected_properties']['seats'] - ?: $this->course->admission_turnout + ?? $this->course->admission_turnout ?: Config::get()->RESOURCES_ROOM_REQUEST_DEFAULT_SEATS; - $this->preparation_time = $_SESSION[$request_id]['preparation_time']; - $this->comment = $_SESSION[$request_id]['comment']; + $this->preparation_time = $_SESSION[$request_id]['preparation_time'] ?? null; + $this->comment = $_SESSION[$request_id]['comment'] ?? null; // when searching for a room name, list found room if ($_SESSION[$request_id]['room_name'] !== '') { @@ -562,20 +562,23 @@ class Course_RoomRequestsController extends AuthenticatedController } $this->request = new RoomRequest($this->request_id); - $this->request->setRangeFields($_SESSION[$this->request_id]['range'], $_SESSION[$this->request_id]['range_ids']); + $this->request->setRangeFields( + $_SESSION[$this->request_id]['range'] ?? '', + $_SESSION[$this->request_id]['range_ids'] ?? [] + ); - $this->selected_room_category = ResourceCategory::find($_SESSION[$request_id]['room_category_id'] ?: $this->request->category_id); + $this->selected_room_category = ResourceCategory::find($_SESSION[$request_id]['room_category_id'] ?? $this->request->category_id); - $this->selected_room = Resource::find($_SESSION[$request_id]['room_id'] ?: $this->request->resource_id); + $this->selected_room = Resource::find($_SESSION[$request_id]['room_id'] ?? $this->request->resource_id); - $this->room_id = $_SESSION[$request_id]['room_id'] ?: $this->request->resource_id; + $this->room_id = $_SESSION[$request_id]['room_id'] ?? $this->request->resource_id; $this->available_properties = $this->selected_room_category->getRequestableProperties(); - $this->selected_properties = $_SESSION[$request_id]['selected_properties'] ?: []; + $this->selected_properties = $_SESSION[$request_id]['selected_properties'] ?? []; $this->request_properties = $this->request->properties; // either properties from stored request or those from session - if ($this->request_properties && !$_SESSION[$request_id]['selected_properties']) { + if ($this->request_properties && empty($_SESSION[$request_id]['selected_properties'])) { foreach ($this->request_properties as $property) { $this->selected_properties[$property->name] = $property->state; } diff --git a/app/views/course/room_requests/new_request.php b/app/views/course/room_requests/new_request.php index 948db05..87d338d 100644 --- a/app/views/course/room_requests/new_request.php +++ b/app/views/course/room_requests/new_request.php @@ -15,18 +15,17 @@ - - - + + -
-
- -
+
+ + - - -render_partial('course/room_requests/_new_request_form_footer', ['step' => $step]) ?> + + render_partial('course/room_requests/_new_request_form_footer', ['step' => $step]) ?> diff --git a/app/views/course/room_requests/request_find_available_properties.php b/app/views/course/room_requests/request_find_available_properties.php index ea0767f..0b434ed 100644 --- a/app/views/course/room_requests/request_find_available_properties.php +++ b/app/views/course/room_requests/request_find_available_properties.php @@ -59,7 +59,7 @@ toHtmlInput( - $selected_properties[$property->name], + $selected_properties[$property->name] ?? '', 'selected_properties[' . htmlReady($property->name) . ']', true, false @@ -80,42 +80,40 @@ - - - - - + + + + diff --git a/app/views/course/room_requests/request_find_matching_rooms.php b/app/views/course/room_requests/request_find_matching_rooms.php index a474ab2..01f42a4 100644 --- a/app/views/course/room_requests/request_find_matching_rooms.php +++ b/app/views/course/room_requests/request_find_matching_rooms.php @@ -61,7 +61,7 @@ toHtmlInput( - $selected_properties[$property->name], + $selected_properties[$property->name] ?? '', 'selected_properties[' . htmlReady($property->name) . ']', true, false, @@ -74,11 +74,11 @@ - +
@@ -124,11 +124,11 @@ -
-
+ + render_partial('course/room_requests/_new_request_form_footer', ['step' => $step, 'search_by' => 'roomname']) ?> diff --git a/app/views/course/timesrooms/_roomRequest.php b/app/views/course/timesrooms/_roomRequest.php index 2351fde..989fccb 100644 --- a/app/views/course/timesrooms/_roomRequest.php +++ b/app/views/course/timesrooms/_roomRequest.php @@ -107,7 +107,7 @@ - id) : ?> + id) : ?> render_partial('course/room_requests/_request.php', ['request' => $rr]); ?> diff --git a/lib/models/Folder.php b/lib/models/Folder.php index 630a157..b2e8886 100644 --- a/lib/models/Folder.php +++ b/lib/models/Folder.php @@ -222,11 +222,13 @@ class Folder extends SimpleORMap implements FeedbackRange [$course_topic->seminar_id] ); - foreach ($topic_folders as $folder) { - if ($folder['data_content']['topic_id'] === $topic_id) { - $ret[] = $folder; + $ret = array_filter( + $topic_folders, + function (Folder $folder) use ($topic_id): bool { + return isset($folder->data_content) + && $folder->data_content['topic_id'] === $topic_id; } - } + ); } return $ret; } @@ -241,7 +243,7 @@ class Folder extends SimpleORMap implements FeedbackRange */ public static function findByTermin_id($termin_id) { - $course_date = CourseDate::find($termin_id); + $course_date = CourseDate::find($termin_id); $ret = []; if ($course_date) { $date_folders = self::findBySQL( @@ -249,11 +251,13 @@ class Folder extends SimpleORMap implements FeedbackRange [$course_date->range_id] ); - foreach ($date_folders as $folder) { - if ($folder['data_content']['termin_id'] === $termin_id) { - $ret[] = $folder; + $ret = array_filter( + $date_folders, + function (Folder $folder) use ($termin_id): bool { + return isset($folder->data_content['termin_id']) + && $folder->data_content['termin_id'] === $termin_id; } - } + ); } return $ret; } diff --git a/lib/models/resources/ResourceRequest.class.php b/lib/models/resources/ResourceRequest.class.php index 10c06fb..6200127 100644 --- a/lib/models/resources/ResourceRequest.class.php +++ b/lib/models/resources/ResourceRequest.class.php @@ -1189,8 +1189,8 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen $interval['range'] = ResourceRequestAppointment::class; $interval['range_id'] = $appointment->appointment_id; - $interval['booked_room'] = $date->room_booking ? $date->room_booking->resource_id : null; - $interval['booking_id'] = $date->room_booking ? $date->room_booking->id : null; + $interval['booked_room'] = $date->room_booking->resource_id ?? null; + $interval['booking_id'] = $date->room_booking->id ?? null; } $time_intervals[] = $interval; @@ -1214,8 +1214,8 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen if ($with_range) { $interval['range'] = CourseDate::class; $interval['range_id'] = $this->termin_id; - $interval['booked_room'] = $this->date->room_booking ? $this->date->room_booking->resource_id: null; - $interval['booking_id'] = $this->date->room_booking ? $this->date->room_booking->id : null; + $interval['booked_room'] = $this->date->room_booking->resource_id ?? null; + $interval['booking_id'] = $this->date->room_booking->id ?? null; } return [$interval]; } elseif ($this->metadate_id) { @@ -1238,8 +1238,8 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen if ($with_range) { $interval['range'] = CourseDate::class; $interval['range_id'] = $date->id; - $interval['booked_room'] = $date->room_booking->resource_id; - $interval['booking_id'] = $date->room_booking->id; + $interval['booked_room'] = $date->room_booking->resource_id ?? null; + $interval['booking_id'] = $date->room_booking->id ?? null; } $time_intervals[] = $interval; } @@ -1265,8 +1265,8 @@ class ResourceRequest extends SimpleORMap implements PrivacyObject, Studip\Calen if ($with_range) { $interval['range'] = CourseDate::class; $interval['range_id'] = $date->id; - $interval['booked_room'] = $date->room_booking ? $date->room_booking->resource_id: null; - $interval['booking_id'] = $date->room_booking ? $date->room_booking->id : null; + $interval['booked_room'] = $date->room_booking->resource_id ?? null; + $interval['booking_id'] = $date->room_booking->id ?? null; } $time_intervals[] = $interval; } diff --git a/templates/i18n/textarea.php b/templates/i18n/textarea.php index 17f9721..6d3dff8 100644 --- a/templates/i18n/textarea.php +++ b/templates/i18n/textarea.php @@ -13,7 +13,7 @@ } // Remove required attribute if no text has been set - if (isset($attr['required']) && !$attr['value']) { + if (isset($attr['required']) && empty($attr['value'])) { unset($attr['required']); } } -- cgit v1.0