[BUGFIX] Avoid unnecessary generation of processed files
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Classes / Resource / Processing / AbstractGraphicalTask.php
1 <?php
2 namespace TYPO3\CMS\Core\Resource\Processing;
3
4 /*
5 * This file is part of the TYPO3 CMS project.
6 *
7 * It is free software; you can redistribute it and/or modify it under
8 * the terms of the GNU General Public License, either version 2
9 * of the License, or any later version.
10 *
11 * For the full copyright and license information, please read the
12 * LICENSE.txt file that was distributed with this source code.
13 *
14 * The TYPO3 project - inspiring people to share!
15 */
16
17 use TYPO3\CMS\Core\Resource;
18 use TYPO3\CMS\Core\Utility;
19
20 /**
21 * Abstract base implementation of a task.
22 *
23 * If you extend this class, make sure that you redefine the member variables $type and $name
24 * or set them in the constructor. Otherwise your task won't be recognized by the system and several
25 * things will fail.
26 */
27 abstract class AbstractGraphicalTask extends AbstractTask {
28
29 /**
30 * @var string
31 */
32 protected $targetFileExtension;
33
34 /**
35 * Returns the name the processed file should have
36 * in the filesystem.
37 *
38 * @return string
39 */
40 public function getTargetFilename() {
41 return $this->getSourceFile()->getNameWithoutExtension()
42 . '_' . $this->getConfigurationChecksum()
43 . '.' . $this->getTargetFileExtension();
44 }
45
46 /**
47 * Determines the file extension the processed file
48 * should have in the filesystem.
49 *
50 * @return string
51 */
52 public function getTargetFileExtension() {
53 if (!isset($this->targetFileExtension)) {
54 $this->targetFileExtension = $this->determineTargetFileExtension();
55 }
56
57 return $this->targetFileExtension;
58 }
59
60 /**
61 * Gets the file extension the processed file should
62 * have in the filesystem by either using the configuration
63 * setting, or the extension of the original file.
64 *
65 * @return string
66 */
67 protected function determineTargetFileExtension() {
68 if (!empty($this->configuration['fileExtension'])) {
69 $targetFileExtension = $this->configuration['fileExtension'];
70 } else {
71 // explanation for "thumbnails_png"
72 // Bit0: If set, thumbnails from non-jpegs will be 'png', otherwise 'gif' (0=gif/1=png).
73 // Bit1: Even JPG's will be converted to png or gif (2=gif/3=png)
74
75 $targetFileExtensionConfiguration = $GLOBALS['TYPO3_CONF_VARS']['GFX']['thumbnails_png'];
76 if ($this->getSourceFile()->getExtension() === 'jpg' || $this->getSourceFile()->getExtension() === 'jpeg') {
77 if ($targetFileExtensionConfiguration == 2) {
78 $targetFileExtension = 'gif';
79 } elseif ($targetFileExtensionConfiguration == 3) {
80 $targetFileExtension = 'png';
81 } else {
82 $targetFileExtension = 'jpg';
83 }
84 } else {
85 // check if a png or a gif should be created
86 if ($targetFileExtensionConfiguration == 1 || $this->getSourceFile()->getExtension() === 'png') {
87 $targetFileExtension = 'png';
88 } else {
89 // thumbnails_png is "0"
90 $targetFileExtension = 'gif';
91 }
92 }
93 }
94
95 return $targetFileExtension;
96 }
97
98 }