3e9b000ed44937cb6a383ef669e49c03969861e2
[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, \TYPO3\CMS\Core\Utility;
18
19 /**
20 * Abstract base implementation of a task.
21 *
22 * If you extend this class, make sure that you redefine the member variables $type and $name
23 * or set them in the constructor. Otherwise your task won't be recognized by the system and several
24 * things will fail.
25 *
26 */
27 abstract class AbstractGraphicalTask extends AbstractTask {
28
29 /**
30 * @var string
31 */
32 protected $targetFileExtension;
33
34 /**
35 * Sets parameters needed in the checksum. Can be overridden to add additional parameters to the checksum.
36 * This should include all parameters that could possibly vary between different task instances, e.g. the
37 * TYPO3 image configuration in TYPO3_CONF_VARS[GFX] for graphic processing tasks.
38 *
39 * @return array
40 */
41 protected function getChecksumData() {
42 return array_merge(
43 parent::getChecksumData(),
44 array(serialize($GLOBALS['TYPO3_CONF_VARS']['GFX']))
45 );
46 }
47
48 /**
49 * Returns the name the processed file should have
50 * in the filesystem.
51 *
52 * @return string
53 */
54 public function getTargetFilename() {
55 return $this->getSourceFile()->getNameWithoutExtension()
56 . '_' . $this->getConfigurationChecksum()
57 . '.' . $this->getTargetFileExtension();
58 }
59
60 /**
61 * Determines the file extension the processed file
62 * should have in the filesystem.
63 *
64 * @return string
65 */
66 public function getTargetFileExtension() {
67 if (!isset($this->targetFileExtension)) {
68 $this->targetFileExtension = $this->determineTargetFileExtension();
69 }
70
71 return $this->targetFileExtension;
72 }
73
74 /**
75 * Gets the file extension the processed file should
76 * have in the filesystem by either using the configuration
77 * setting, or the extension of the original file.
78 *
79 * @return string
80 */
81 protected function determineTargetFileExtension() {
82 if (!empty($this->configuration['fileExtension'])) {
83 $targetFileExtension = $this->configuration['fileExtension'];
84 } else {
85 // explanation for "thumbnails_png"
86 // Bit0: If set, thumbnails from non-jpegs will be 'png', otherwise 'gif' (0=gif/1=png).
87 // Bit1: Even JPG's will be converted to png or gif (2=gif/3=png)
88
89 $targetFileExtensionConfiguration = $GLOBALS['TYPO3_CONF_VARS']['GFX']['thumbnails_png'];
90 if ($this->getSourceFile()->getExtension() === 'jpg' || $this->getSourceFile()->getExtension() === 'jpeg') {
91 if ($targetFileExtensionConfiguration == 2) {
92 $targetFileExtension = 'gif';
93 } elseif ($targetFileExtensionConfiguration == 3) {
94 $targetFileExtension = 'png';
95 } else {
96 $targetFileExtension = 'jpg';
97 }
98 } else {
99 // check if a png or a gif should be created
100 if ($targetFileExtensionConfiguration == 1 || $this->getSourceFile()->getExtension() === 'png') {
101 $targetFileExtension = 'png';
102 } else {
103 // thumbnails_png is "0"
104 $targetFileExtension = 'gif';
105 }
106 }
107 }
108
109 return $targetFileExtension;
110 }
111
112 }