From ae5bfb6d37478e1a19aabe01ffb2ef2bb00236ad Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Wed, 12 Jun 2024 09:25:17 +0000
Subject: [PATCH] fixes #4279, fixes #4281

Closes #4279 and #4281

Merge request studip/studip!3100
---
 app/controllers/course/room_requests.php     |  8 +++---
 app/views/materialien/files/add_dokument.php | 28 +++++++++++---------
 lib/models/AuxLockRule.php                   |  2 +-
 3 files changed, 22 insertions(+), 16 deletions(-)

diff --git a/app/controllers/course/room_requests.php b/app/controllers/course/room_requests.php
index 2a12c9b3b97..838fd872018 100644
--- a/app/controllers/course/room_requests.php
+++ b/app/controllers/course/room_requests.php
@@ -583,9 +583,11 @@ class Course_RoomRequestsController extends AuthenticatedController
             $this->request->store();
 
             //Store the properties:
-            foreach ($_SESSION[$request_id]['selected_properties'] as $name => $state) {
-                if (!empty($state)) {
-                    $this->request->setProperty($name, $state);
+            if (isset($_SESSION[$request_id]['selected_properties'])) {
+                foreach ($_SESSION[$request_id]['selected_properties'] as $name => $state) {
+                    if (!empty($state)) {
+                        $this->request->setProperty($name, $state);
+                    }
                 }
             }
 
diff --git a/app/views/materialien/files/add_dokument.php b/app/views/materialien/files/add_dokument.php
index 3b706e90b47..f398130cf6f 100644
--- a/app/views/materialien/files/add_dokument.php
+++ b/app/views/materialien/files/add_dokument.php
@@ -1,21 +1,21 @@
-<form class="default" action="<?= $controller->action_link('add_dokument', $origin,  $range_type, $range_id, $mvvfile_id) ?>" method="post" data-dialog="size=auto">
-    <input type="hidden" name="mvvfile_id" id="mvvfile_id" value="<?= htmlReady($mvvfile_id) ?>">
-    <input type="hidden" name="range_id" id="range_id" value="<?= htmlReady($range_id) ?>">
-    <input type="hidden" name="range_type" id="range_type" value="<?= htmlReady($range_type) ?>">
-
-
+<form class="default" action="<?= $controller->action_link('add_dokument', $origin ?? null,  $range_type ?? null, $range_id ?? null, $mvvfile_id ?? null) ?>" method="post" data-dialog="size=auto">
+    <input type="hidden" name="mvvfile_id" id="mvvfile_id" value="<?= htmlReady($mvvfile_id ?? '') ?>">
+    <input type="hidden" name="range_id" id="range_id" value="<?= htmlReady($range_id ?? null) ?>">
+    <input type="hidden" name="range_type" id="range_type" value="<?= htmlReady($range_type ?? null) ?>">
 
     <label>
         <?= _('Jahr') ?>
-        <input name="doc_year" type="text" value="<?= htmlReady($doc_year) ?>"<?= $perm->disable('year') ?>>
+        <input name="doc_year" type="text" value="<?= htmlReady($doc_year ?? '') ?>"<?= $perm->disable('year') ?>>
     </label>
 
-    <input type="hidden" name="doc_type" value="<?= $doc_type ?>">
+    <input type="hidden" name="doc_type" value="<?= htmlReady($doc_type ?? '') ?>">
     <label>
         <?= _('Art der Datei') ?>
         <select name="doc_type"<?= $perm->haveFieldPerm('type') ? '' : ' disable' ?>>
         <? foreach ($GLOBALS['MVV_DOCUMENTS']['TYPE']['values'] as $key => $entry) : ?>
-            <option value="<?= $key ?>"<?= $key == $doc_type ? ' selected' : '' ?>><?= htmlReady($entry['name']) ?></option>
+            <option value="<?= htmlReady($key) ?>"<?= isset($doc_type) && $key == $doc_type ? ' selected' : '' ?>>
+                <?= htmlReady($entry['name']) ?>
+            </option>
         <? endforeach; ?>
         </select>
     </label>
@@ -93,7 +93,9 @@
         <?= _('Kategoriezuordnung') ?>
         <select name="doc_cat">
         <? foreach ($GLOBALS['MVV_DOCUMENTS']['CATEGORY']['values'] as $key => $entry) : ?>
-            <option value="<?= $key ?>"<?= $key == $doc_cat ? ' selected' : '' ?>><?= htmlReady($entry['name']) ?></option>
+            <option value="<?= htmlReady($key) ?>"<?= isset($doc_cat) && $key == $doc_cat ? ' selected' : '' ?>>
+                <?= htmlReady($entry['name']) ?>
+            </option>
         <? endforeach; ?>
         </select>
     </label>
@@ -103,13 +105,15 @@
         <select id="mvv-files-tags" multiple name="doc_tags[]">
             <option value=""></option>
         <? foreach ($GLOBALS['MVV_DOCUMENTS']['TAG']['values'] as $key => $entry) : ?>
-            <option value="<?= $key ?>"<?= $key == in_array($key, explode(';', $doc_tags))? ' selected' : '' ?>><?= htmlReady($entry['name']) ?></option>
+            <option value="<?= htmlReady($key) ?>"<?= $key == in_array($key, explode(';', $doc_tags ?? ''))? ' selected' : '' ?>>
+                <?= htmlReady($entry['name']) ?>
+            </option>
         <? endforeach; ?>
         </select>
     </label>
 
     <label>
-        <input name="doc_extvisible" type="checkbox" value="1" <?= $doc_extvisible?'checked':''; ?>>
+        <input name="doc_extvisible" type="checkbox" value="1" <?= !empty($doc_extvisible) ? 'checked' : '' ?>>
         <?= _('Sichtbarkeit nach außen') ?>
     </label>
 
diff --git a/lib/models/AuxLockRule.php b/lib/models/AuxLockRule.php
index abd3327bb5f..f5ebfacee8d 100644
--- a/lib/models/AuxLockRule.php
+++ b/lib/models/AuxLockRule.php
@@ -164,7 +164,7 @@ class AuxLockRule extends SimpleORMap
             foreach ($this->datafields as $field => $useless_value_pls_refactor) {
 
                 // if standard get it from the mapping else get it from the datafield
-                if ($mapping[$field]) {
+                if (!empty($mapping[$field])) {
                     $result['head'][$field] = $head_mapping[$field];
                     $new[$field] = htmlReady($mapping[$field]);
                 } else {
-- 
GitLab