1a10361a0c8fbbe7877e48802549fd986e23ad53
[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 = array(
25 'element' => array('', 'The name of the element', 'string', true),
26 'errorMessage' => array('', 'The error message', 'array', true),
27 'types' => array('', '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 * @see TYPO3\CMS\Form\Domain\Property\TypeConverter::convertFrom
42 *
43 * @param mixed $value
44 * @return void
45 */
46 public function isValid($value)
47 {
48 $allowedTypes = strtolower($this->options['types']);
49 $allowedMimeTypes = GeneralUtility::trimExplode(', ', $allowedTypes);
50 $fileMimeType = strtolower($value['type']);
51 if (!in_array($fileMimeType, $allowedMimeTypes, true)) {
52 $this->addError(
53 $this->renderMessage(
54 $this->options['errorMessage'][0],
55 $this->options['errorMessage'][1],
56 'error'
57 ),
58 1442006702
59 );
60 }
61 }
62
63 /**
64 * Substitute makers in the message text
65 * Overrides the abstract
66 *
67 * @param string $message Message text with markers
68 * @return string Message text with substituted markers
69 */
70 public function substituteMarkers($message)
71 {
72 $message = str_replace('%allowedTypes', implode(',', $this->options['types']), $message);
73 return $message;
74 }
75 }