diff options
| author | Philipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de> | 2024-06-17 06:59:12 +0000 |
|---|---|---|
| committer | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2024-06-17 06:59:12 +0000 |
| commit | a815a566e2fb858f692eb15950fc538d45231e0a (patch) | |
| tree | ee8639cb2cd373cad0f59312077c75e9788fcbc1 /lib/filesystem/PermissionEnabledFolder.php | |
| parent | 9d7610060f6b6befdb11ee559447d1e3d0b01a5c (diff) | |
Resolve "Selbst hochgeladene Dateien in Ordnern ohne Lesezugriff schlecht sichtbar"
Closes #2954
Merge request studip/studip!1997
Diffstat (limited to 'lib/filesystem/PermissionEnabledFolder.php')
| -rw-r--r-- | lib/filesystem/PermissionEnabledFolder.php | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/lib/filesystem/PermissionEnabledFolder.php b/lib/filesystem/PermissionEnabledFolder.php index d41ebe3..c286c53 100644 --- a/lib/filesystem/PermissionEnabledFolder.php +++ b/lib/filesystem/PermissionEnabledFolder.php @@ -118,6 +118,27 @@ class PermissionEnabledFolder extends StandardFolder } /** + * @return FileType[] + */ + public function getFiles() + { + return array_filter(parent::getFiles(), function($file) { + return $this->isFileVisible($file->getFileRef(), $GLOBALS['user']->id); + }); + } + + /** + * Determines if a user may see the file. + * @param FileRef|string $fileref_or_id + * @param string $user_id + * @return bool + */ + public function isFileVisible($fileref_or_id, $user_id) + { + return $this->isReadable($user_id); + } + + /** * @param $fileref_or_id * @param $user_id * @return bool @@ -127,7 +148,7 @@ class PermissionEnabledFolder extends StandardFolder $fileref = FileRef::toObject($fileref_or_id); if (is_object($fileref)) { - if ($this->isVisible($user_id) && $this->isReadable($user_id)) { + if ($this->isVisible($user_id) && $this->isFileVisible($fileref, $user_id)) { return $fileref->terms_of_use->isDownloadable($this->range_id, $this->range_type, true, $user_id); } } |
