Skip to content

Commit 163890c

Browse files
committed
Fix the format conversion not happening due to outdated data
1 parent 87ed949 commit 163890c

File tree

6 files changed

+19
-11
lines changed

6 files changed

+19
-11
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public function __invoke(ServerRequestInterface $request, array $variables): Res
2828
{
2929
$file = Helper::fetchObjectFromRequestParameter($variables['id'], File::class);
3030

31-
FileProcessor::getInstance()->generateWebpVariant($file);
31+
$file = FileProcessor::getInstance()->generateWebpVariant($file);
3232
$file = FileProcessor::getInstance()->convertImageFormat($file);
3333
$file = FileProcessor::getInstance()->stripExif($file);
3434
FileProcessor::getInstance()->generateThumbnails($file);

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,10 @@ public function __invoke(ServerRequestInterface $request, array $variables): Res
138138
$thumbnailFormats = $processor->getThumbnailFormats();
139139
if ($thumbnailFormats !== []) {
140140
$generateThumbnails = true;
141+
} else if (\IMAGE_CONVERT_FORMAT !== 'keep' || \IMAGE_STRIP_EXIF) {
142+
// The action to generate thumbnails implicitly handles the
143+
// format conversion and EXIF removal.
144+
$generateThumbnails = true;
141145
}
142146
}
143147

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,9 @@ private function regenerateExistingThumbnails(File $file): void
167167
}
168168

169169
try {
170-
FileProcessor::getInstance()->generateWebpVariant($file);
170+
$file = FileProcessor::getInstance()->generateWebpVariant($file);
171+
$file = FileProcessor::getInstance()->convertImageFormat($file);
172+
$file = FileProcessor::getInstance()->stripExif($file);
171173
FileProcessor::getInstance()->generateThumbnails($file);
172174
} catch (DamagedImage $e) {
173175
logThrowable($e);

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ public function __invoke(): File
3636
$pathnameWebp,
3737
$this->getNewFilename(),
3838
);
39-
$command();
39+
$newFile = $command();
4040

41-
return new File($this->file->fileID);
41+
return $newFile;
4242
}
4343

4444
private function getNewFilename(): string

wcfsetup/install/files/lib/system/file/processor/FileProcessor.class.php

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,7 @@ public function canAdopt(IFileProcessor $fileProcessor, File $file, array $conte
152152
return $fileProcessor->canAdopt($file, $context);
153153
}
154154

155-
public function generateWebpVariant(File $file): void
155+
public function generateWebpVariant(File $file): File
156156
{
157157
$canGenerateThumbnail = match ($file->mimeType) {
158158
'image/jpeg', 'image/png' => true,
@@ -166,13 +166,13 @@ public function generateWebpVariant(File $file): void
166166
]);
167167
}
168168

169-
return;
169+
return $file;
170170
}
171171

172172
if ($file->fileHashWebp !== null) {
173173
$pathname = $file->getPathnameWebp();
174174
if (\file_exists($pathname) && \hash_file('sha256', $pathname) === $file->fileHashWebp) {
175-
return;
175+
return $file;
176176
}
177177
}
178178

@@ -186,7 +186,7 @@ public function generateWebpVariant(File $file): void
186186
if ($filename === null) {
187187
$imageAdapter = ImageHandler::getInstance()->getAdapter();
188188
if (!$imageAdapter->checkMemoryLimit($file->width, $file->height, $file->mimeType)) {
189-
return;
189+
return $file;
190190
}
191191

192192
try {
@@ -196,7 +196,7 @@ public function generateWebpVariant(File $file): void
196196
} catch (ImageNotProcessable $e) {
197197
logThrowable($e);
198198

199-
return;
199+
return $file;
200200
}
201201

202202
$filename = FileUtil::getTemporaryFilename(extension: 'webp');
@@ -209,7 +209,7 @@ public function generateWebpVariant(File $file): void
209209
throw $e;
210210
}
211211

212-
return;
212+
return $file;
213213
}
214214
}
215215

@@ -223,6 +223,8 @@ public function generateWebpVariant(File $file): void
223223
\assert($pathname !== null);
224224

225225
\rename($filename, $pathname);
226+
227+
return $file;
226228
}
227229

228230
public function generateThumbnails(File $file): void

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ public function execute()
5252
$damagedFileIDs = [];
5353
foreach ($this->objectList->getObjects() as $file) {
5454
try {
55-
FileProcessor::getInstance()->generateWebpVariant($file);
55+
$file = FileProcessor::getInstance()->generateWebpVariant($file);
5656
$file = FileProcessor::getInstance()->convertImageFormat($file);
5757
$file = FileProcessor::getInstance()->stripExif($file);
5858
FileProcessor::getInstance()->generateThumbnails($file);

0 commit comments

Comments
 (0)