From 2ed3db16c437face7935f151d3859de3254eba3d Mon Sep 17 00:00:00 2001
From: Jan-Hendrik Willms <tleilax+studip@gmail.com>
Date: Fri, 25 Oct 2024 06:15:21 +0000
Subject: [PATCH] exportpdf no longer breaks when an embedded stud.ip file does
 not exist, fixes #4765

Closes #4765

Merge request studip/studip!3552
---
 lib/classes/exportdocument/ExportPDF.php | 22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/lib/classes/exportdocument/ExportPDF.php b/lib/classes/exportdocument/ExportPDF.php
index f676c4516c8..1b2ec7798b9 100644
--- a/lib/classes/exportdocument/ExportPDF.php
+++ b/lib/classes/exportdocument/ExportPDF.php
@@ -319,21 +319,19 @@ class ExportPDF extends TCPDF implements ExportDocument
                 } catch (Exception $e) {
                     $convurl = '';
                 }
-            } else if (mb_stripos($url, 'dispatch.php/document/download') !== false) {
-                if (preg_match('#([a-f0-9]{32})#', $url, $matches)) {
-                    $file_ref = FileRef::find($matches[1]);
-                    $folder = $file_ref->folder->getTypedFolder();
-                    if($folder->isFileDownloadable($file_ref->id, $GLOBALS['user']->id)) {
-                        $convurl = $file_ref->file->getPath();
-                    }
-                }
-            } else if (mb_stripos($url, 'download') !== false
-                    || mb_stripos($url, 'sendfile.php') !== false) {
+            } elseif (
+                mb_stripos($url, 'dispatch.php/document/download') !== false
+                || mb_stripos($url, 'download') !== false
+                || mb_stripos($url, 'sendfile.php') !== false
+            ) {
                 //// get file id
                 if (preg_match('#([a-f0-9]{32})#', $url, $matches)) {
                     $file_ref = FileRef::find($matches[1]);
-                    $folder = $file_ref->folder->getTypedFolder();
-                    if($folder->isFileDownloadable($file_ref->id, $GLOBALS['user']->id)) {
+                    $folder = isset($file_ref->folder) ? $file_ref->folder->getTypedFolder() : null;
+                    if (
+                        isset($folder)
+                        && $folder->isFileDownloadable($file_ref->id, $GLOBALS['user']->id)
+                    ) {
                         $convurl = $file_ref->file->getPath();
                     } else {
                         $convurl = Assets::image_path('messagebox/exception.png');
-- 
GitLab