Skip to content

Commit 9db9f76

Browse files
committed
Fix the replacement of converted images
1 parent 8bac3d3 commit 9db9f76

File tree

3 files changed

+27
-4
lines changed

3 files changed

+27
-4
lines changed

wcfsetup/install/files/lib/system/endpoint/controller/core/files/GenerateThumbnails.class.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ public function __invoke(ServerRequestInterface $request, array $variables): Res
2929
$file = Helper::fetchObjectFromRequestParameter($variables['id'], File::class);
3030

3131
$file = FileProcessor::getInstance()->generateWebpVariant($file);
32-
$file = FileProcessor::getInstance()->convertImageFormat($file);
3332
$file = FileProcessor::getInstance()->stripExif($file);
33+
$file = FileProcessor::getInstance()->convertImageFormat($file);
3434
FileProcessor::getInstance()->generateThumbnails($file);
3535

3636
$thumbnails = [];
@@ -42,7 +42,7 @@ public function __invoke(ServerRequestInterface $request, array $variables): Res
4242
}
4343

4444
return new JsonResponse([
45-
'filename' => 'test.bin',// $file->filename,
45+
'filename' => $file->filename,
4646
'fileSize' => $file->fileSize,
4747
'mimeType' => $file->mimeType,
4848
'thumbnails' => $thumbnails,

wcfsetup/install/files/lib/system/file/command/ReplaceFileSource.class.php

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,29 @@ private function replaceSource(): File
121121
\unlink($this->file->getPathname());
122122
}
123123

124+
// Move the WebP thumbnail to the new location.
125+
$webpVariant = $this->file->getPathnameWebp();
126+
if ($webpVariant !== null) {
127+
if ($updatedFile->mimeType === 'image/webp') {
128+
// The file might be missing if it was used to replace the
129+
// original version with it.
130+
@\unlink($webpVariant);
131+
132+
(new FileEditor($updatedFile))->update([
133+
'fileHashWebp' => null,
134+
]);
135+
$updatedFile = new File($updatedFile->fileID);
136+
} else {
137+
$newWebpVariant = $updatedFile->getPathnameWebp();
138+
\assert($newWebpVariant !== null);
139+
140+
\rename(
141+
$webpVariant,
142+
$newWebpVariant,
143+
);
144+
}
145+
}
146+
124147
WCF::getDB()->commitTransaction();
125148
$committed = true;
126149

@@ -168,8 +191,8 @@ private function regenerateExistingThumbnails(File $file): void
168191

169192
try {
170193
$file = FileProcessor::getInstance()->generateWebpVariant($file);
171-
$file = FileProcessor::getInstance()->convertImageFormat($file);
172194
$file = FileProcessor::getInstance()->stripExif($file);
195+
$file = FileProcessor::getInstance()->convertImageFormat($file);
173196
FileProcessor::getInstance()->generateThumbnails($file);
174197
} catch (DamagedImage $e) {
175198
logThrowable($e);

wcfsetup/install/files/lib/system/worker/FileRebuildDataWorker.class.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ public function execute()
5353
foreach ($this->objectList->getObjects() as $file) {
5454
try {
5555
$file = FileProcessor::getInstance()->generateWebpVariant($file);
56-
$file = FileProcessor::getInstance()->convertImageFormat($file);
5756
$file = FileProcessor::getInstance()->stripExif($file);
57+
$file = FileProcessor::getInstance()->convertImageFormat($file);
5858
FileProcessor::getInstance()->generateThumbnails($file);
5959
} catch (DamagedImage $e) {
6060
logThrowable($e);

0 commit comments

Comments
 (0)