Fix deletion of file uploads
authorMarcel Werk <burntime@woltlab.com>
Wed, 25 Oct 2023 13:59:58 +0000 (15:59 +0200)
committerMarcel Werk <burntime@woltlab.com>
Wed, 25 Oct 2023 13:59:58 +0000 (15:59 +0200)
see #5693

wcfsetup/install/files/lib/system/option/FileOptionType.class.php

index f85614096639f2d54fd796448101455786f4549e..8ac23f4947027e6936139476b1dca841f9c61409 100644 (file)
@@ -50,11 +50,13 @@ class FileOptionType extends AbstractOptionType
         $files = $this->uploadHandlers[$option->optionName]->getFiles();
         $file = \reset($files);
 
+        $packageDir = PackageCache::getInstance()->getPackage($option->packageID)->getAbsolutePackageDir();
+
         // check if file has been uploaded
         if (!$file->getFilename()) {
             // if checkbox is checked, remove file
             if ($newValue) {
-                @\unlink($option->optionValue);
+                @\unlink($packageDir . $option->optionValue);
 
                 return '';
             }
@@ -63,13 +65,13 @@ class FileOptionType extends AbstractOptionType
             return $option->optionValue;
         } elseif ($option->optionValue) {
             // delete old file first
-            @\unlink($option->optionValue);
+            @\unlink($packageDir . $option->optionValue);
         }
 
         // determine location the file will be stored at
         $relativeFileLocation = ($option->filelocation ?: $option->optionName) . '.' . $file->getFileExtension();
 
-        $fileLocation = PackageCache::getInstance()->getPackage($option->packageID)->getAbsolutePackageDir() . $relativeFileLocation;
+        $fileLocation = $packageDir . $relativeFileLocation;
 
         // save file
         $file->moveUploadedFile($fileLocation);