From 3624e4537bf7aba360aadd4213f0231740f8e65f Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Fri, 15 Mar 2024 15:30:42 +0000
Subject: [PATCH] fixes #3793

Closes #3793

Merge request studip/studip!2671
---
 lib/filesystem/CoursePublicFolder.php             | 2 +-
 lib/filesystem/HiddenFolder.php                   | 2 +-
 lib/filesystem/TimedFolder.php                    | 4 ++--
 templates/filesystem/date_folder/edit.php         | 2 +-
 templates/filesystem/timed_folder/description.php | 5 ++---
 templates/filesystem/timed_folder/edit.php        | 8 ++++----
 6 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/lib/filesystem/CoursePublicFolder.php b/lib/filesystem/CoursePublicFolder.php
index a86b251744f..463fe19940e 100644
--- a/lib/filesystem/CoursePublicFolder.php
+++ b/lib/filesystem/CoursePublicFolder.php
@@ -59,7 +59,7 @@ class CoursePublicFolder extends StandardFolder
      */
     public function hasWorldwideAccess()
     {
-        return (bool) $this->folderdata['data_content']['worldwide_access'];
+        return !empty($this->folderdata['data_content']['worldwide_access']);
     }
 
 
diff --git a/lib/filesystem/HiddenFolder.php b/lib/filesystem/HiddenFolder.php
index 460b8523569..b29f5fb57a7 100644
--- a/lib/filesystem/HiddenFolder.php
+++ b/lib/filesystem/HiddenFolder.php
@@ -107,7 +107,7 @@ class HiddenFolder extends PermissionEnabledFolder
     public function __get($attribute)
     {
         if ($attribute === 'download_allowed') {
-            return $this->folderdata['data_content']['download_allowed'];
+            return !empty($this->folderdata['data_content']['download_allowed']);
         }
         return $this->folderdata[$attribute];
     }
diff --git a/lib/filesystem/TimedFolder.php b/lib/filesystem/TimedFolder.php
index f2c66dbf3e1..442c084aa1b 100644
--- a/lib/filesystem/TimedFolder.php
+++ b/lib/filesystem/TimedFolder.php
@@ -123,8 +123,8 @@ class TimedFolder extends PermissionEnabledFolder
             $this->folderdata['data_content']['permission'] = $this->permission;
         }
 
-        $this->start_time = intval($this->folderdata['data_content']['start_time']);
-        $this->end_time = intval($this->folderdata['data_content']['end_time']);
+        $this->start_time = intval($this->folderdata['data_content']['start_time'] ?? 0);
+        $this->end_time = intval($this->folderdata['data_content']['end_time'] ?? 0);
 
         $this->must_have_perm = 'tutor';
     }
diff --git a/templates/filesystem/date_folder/edit.php b/templates/filesystem/date_folder/edit.php
index d31f592d87c..7618e21cb1f 100644
--- a/templates/filesystem/date_folder/edit.php
+++ b/templates/filesystem/date_folder/edit.php
@@ -10,7 +10,7 @@ $dates = CourseDate::findByRange_id($folder->range_id);
         </option>
     <? endif; ?>
     <? foreach ($dates as $one_date): ?>
-        <option <?= @$date->id === $one_date->id ? 'selected' : '' ?> value="<?= htmlReady($one_date->id) ?>">
+        <option <?= isset($date) && $date->id === $one_date->id ? 'selected' : '' ?> value="<?= htmlReady($one_date->id) ?>">
             <?= htmlReady(CourseDateFolder::formatDate($one_date)) ?>
         </option>
     <? endforeach; ?>
diff --git a/templates/filesystem/timed_folder/description.php b/templates/filesystem/timed_folder/description.php
index 1be92e6ea11..ae5bd9e744c 100644
--- a/templates/filesystem/timed_folder/description.php
+++ b/templates/filesystem/timed_folder/description.php
@@ -22,12 +22,11 @@
     </strong>
     <br>
 <? endif ?>
-<? if ($folder->data_content['permission']  == 3) : ?>
+<? if (isset($folder->data_content['permission']) && $folder->data_content['permission'] == 3): ?>
     <div>
         <?= _("Dieser Ordner ist ein Hausaufgabenordner. Es können nur Dateien eingestellt werden.") ?>
     </div>
-<? endif ?>
-<? if ($folder->data_content['permission']  == 5) : ?>
+<? elseif (isset($folder->data_content['permission']) && $folder->data_content['permission'] == 5): ?>
     <div>
         <?= _('Ein Ordner für Materialien, welche nur zum Download zu Verfügung gestellt werden sollen.') ?>
     </div>
diff --git a/templates/filesystem/timed_folder/edit.php b/templates/filesystem/timed_folder/edit.php
index 0502fe1b838..d5dc6e37295 100644
--- a/templates/filesystem/timed_folder/edit.php
+++ b/templates/filesystem/timed_folder/edit.php
@@ -1,7 +1,7 @@
 <label>
     <?= _('Sichtbar ab') ?>
     <input type="text" name="start_time" id="start_time" data-datetime-picker
-           value="<?= $folder->data_content['start_time'] ?
+           value="<?= !empty($folder->data_content['start_time']) ?
                date('d.m.Y H:i', $folder->data_content['start_time']) :
                _('unbegrenzt') ?>"
            placeholder="<?= _('unbegrenzt') ?>">
@@ -9,15 +9,15 @@
 <label>
     <?= _('Sichtbar bis') ?>
     <input type="text" name="end_time" id="end_time" data-datetime-picker
-           value="<?= $folder->data_content['end_time'] ? date('d.m.Y H:i', $folder->data_content['end_time']) :
+           value="<?= !empty($folder->data_content['end_time']) ? date('d.m.Y H:i', $folder->data_content['end_time']) :
                _('unbegrenzt') ?>"
            placeholder="<?= _('unbegrenzt') ?>">
 </label>
 <label>
-    <input name="perm_read" type="checkbox" value="1" <? if ($folder->data_content['permission'] & 4) echo 'checked'; ?>>
+    <input name="perm_read" type="checkbox" value="1" <? if (isset($folder->data_content['permission']) && $folder->data_content['permission'] & 4) echo 'checked'; ?>>
     <strong>r</strong> - <?= _('Lesen (Dateien können heruntergeladen werden)') ?>
 </label>
 <label>
-    <input name="perm_write" type="checkbox" value="1" <? if ($folder->data_content['permission'] & 2) echo 'checked'; ?>>
+    <input name="perm_write" type="checkbox" value="1" <? if (isset($folder->data_content['permission']) && $folder->data_content['permission'] & 2) echo 'checked'; ?>>
     <strong>w</strong> - <?= _('Schreiben (Dateien können hochgeladen werden)') ?>
 </label>
-- 
GitLab