[TASK] Remove blank line between docblock and the documented element
[Packages/TYPO3.CMS.git] / typo3 / sysext / core / Classes / Type / File / FileInfo.php
1 <?php
2 namespace TYPO3\CMS\Core\Type\File;
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 use TYPO3\CMS\Core\Type\TypeInterface;
17
18 /**
19 * A SPL FileInfo class providing general information related to a file.
20 */
21 class FileInfo extends \SplFileInfo implements TypeInterface
22 {
23 /**
24 * Return the mime type of a file.
25 *
26 * @return string|bool Returns the mime type or FALSE if the mime type could not be discovered
27 */
28 public function getMimeType()
29 {
30 $mimeType = false;
31 if ($this->isFile()) {
32 $fileExtensionToMimeTypeMapping = $GLOBALS['TYPO3_CONF_VARS']['SYS']['FileInfo']['fileExtensionToMimeType'];
33 $lowercaseFileExtension = strtolower($this->getExtension());
34 if (!empty($fileExtensionToMimeTypeMapping[$lowercaseFileExtension])) {
35 $mimeType = $fileExtensionToMimeTypeMapping[$lowercaseFileExtension];
36 } else {
37 if (function_exists('finfo_file')) {
38 $fileInfo = new \finfo();
39 $mimeType = $fileInfo->file($this->getPathname(), FILEINFO_MIME_TYPE);
40 } elseif (function_exists('mime_content_type')) {
41 $mimeType = mime_content_type($this->getPathname());
42 }
43 }
44 }
45
46 if (isset($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS'][\TYPO3\CMS\Core\Type\File\FileInfo::class]['mimeTypeGuessers'])
47 && is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS'][\TYPO3\CMS\Core\Type\File\FileInfo::class]['mimeTypeGuesser'])
48 ) {
49 foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS'][\TYPO3\CMS\Core\Type\File\FileInfo::class]['mimeTypeGuesser'] as $mimeTypeGuesser) {
50 $hookParameters = array(
51 'mimeType' => &$mimeType
52 );
53
54 \TYPO3\CMS\Core\Utility\GeneralUtility::callUserFunction(
55 $mimeTypeGuesser,
56 $hookParameters,
57 $this
58 );
59 }
60 }
61
62 return $mimeType;
63 }
64 }