From b0bf0e4119a43f546b90364eec57f91e2b42d3d3 Mon Sep 17 00:00:00 2001
From: Carsten  Rose <carsten.rose@math.uzh.ch>
Date: Sat, 16 Mar 2019 16:59:08 +0100
Subject: [PATCH] Catch exception on filesize(), return '-' for non existing
 files.

---
 extension/Source/core/helper/HelperFile.php | 14 +++++++++-----
 extension/Source/core/report/Report.php     |  5 +++--
 2 files changed, 12 insertions(+), 7 deletions(-)

diff --git a/extension/Source/core/helper/HelperFile.php b/extension/Source/core/helper/HelperFile.php
index 6eb7a14ad..c7957d1e3 100644
--- a/extension/Source/core/helper/HelperFile.php
+++ b/extension/Source/core/helper/HelperFile.php
@@ -108,20 +108,24 @@ class HelperFile {
      * @throws UserFormException
      */
     public static function getFileStat($pathFileName) {
-        $vars = array();
+        $vars = [VAR_FILE_MIME_TYPE => '-', VAR_FILE_SIZE => '-'];
 
         if (empty($pathFileName)) {
-            return array();
+            return $vars;
         }
 
         $pathFileName = self::correctRelativePathFileName($pathFileName);
 
         if (!file_exists($pathFileName)) {
-            return array();
+            return $vars;
         }
 
-        $vars[VAR_FILE_MIME_TYPE] = self::getMimeType($pathFileName);
-        $vars[VAR_FILE_SIZE] = filesize($pathFileName);
+        try {
+            $vars[VAR_FILE_MIME_TYPE] = self::getMimeType($pathFileName);
+            $vars[VAR_FILE_SIZE] = filesize($pathFileName);
+        } catch (Exception $e) {
+            // do nothing
+        }
 
         return $vars;
     }
diff --git a/extension/Source/core/report/Report.php b/extension/Source/core/report/Report.php
index a2fab3e25..b472874f8 100644
--- a/extension/Source/core/report/Report.php
+++ b/extension/Source/core/report/Report.php
@@ -837,7 +837,8 @@ class Report {
                 break;
 
             case COLUMN_FILE_SIZE:
-                $content .= filesize($columnValue);
+                $arr = HelperFile::getFileStat($columnValue);
+                $content .= $arr[VAR_FILE_SIZE] ?? '-';
                 break;
 
             case COLUMN_NL2BR:
@@ -1328,7 +1329,7 @@ class Report {
         if ($defaultDownload !== '') {
             // Action 'Download' needs to be specified at the beginning
 //            $columnValue = $defaultDownload . "|" . $columnValue;
-            $columnValue .= $defaultDownload . "|" ;
+            $columnValue .= $defaultDownload . "|";
         }
 
         if ($defaultMode !== '') {
-- 
GitLab