[TASK] Remove old language labels in EXT:setup
[Packages/TYPO3.CMS.git] / typo3 / sysext / form / Classes / Domain / Validator / FileAllowedTypesValidator.php
1 <?php
2 namespace TYPO3\CMS\Form\Domain\Validator;
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\Utility\GeneralUtility;
18
19 class FileAllowedTypesValidator extends AbstractValidator
20 {
21 /**
22 * @var array
23 */
24 protected $supportedOptions = [
25 'element' => ['', 'The name of the element', 'string', true],
26 'errorMessage' => ['', 'The error message', 'array', true],
27 'types' => ['', 'The allowed file types', 'string', true],
28 ];
29
30 /**
31 * Constant for localisation
32 *
33 * @var string
34 */
35 const LOCALISATION_OBJECT_NAME = 'tx_form_system_validate_fileallowedtypes';
36
37 /**
38 * Check if the file mime type is allowed.
39 *
40 * The mime type is set in the propertymapper
41 *
42 * @see TYPO3\CMS\Form\Domain\Property\TypeConverter::convertFrom
43 *
44 * @param array $value
45 * @return void
46 */
47 public function isValid($value)
48 {
49 $allowedTypes = strtolower($this->options['types']);
50 $allowedMimeTypes = GeneralUtility::trimExplode(',', $allowedTypes, true);
51 $fileMimeType = !empty($value['type']) ? strtolower($value['type']) : '';
52
53 if (!in_array($fileMimeType, $allowedMimeTypes, true)) {
54 $this->addError(
55 $this->renderMessage(
56 $this->options['errorMessage'][0],
57 $this->options['errorMessage'][1],
58 'error'
59 ),
60 1442006702
61 );
62 }
63 }
64
65 /**
66 * Substitute makers in the message text
67 * Overrides the abstract
68 *
69 * @param string $message Message text with markers
70 * @return string Message text with substituted markers
71 */
72 public function substituteMarkers($message)
73 {
74 $allowedTypes = strtolower($this->options['types']);
75 $allowedMimeTypes = GeneralUtility::trimExplode(',', $allowedTypes);
76 $allowedTypesStringForDisplay = implode(', ', $allowedMimeTypes);
77 $message = str_replace('%allowedTypes', $allowedTypesStringForDisplay, $message);
78
79 return $message;
80 }
81 }