b7f7d10f7f21adb6c112bab8f87c9b247c25bc1a
[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
17 use TYPO3\CMS\Core\Type\TypeInterface;
18
19 /**
20 * A SPL FileInfo class providing general information related to a file.
21 */
22 class FileInfo extends \SplFileInfo implements TypeInterface {
23
24 /**
25 * Return the mime type of a file.
26 *
27 * @return string|bool Returns the mime type or FALSE if the mime type could not be discovered
28 */
29 public function getMimeType() {
30 $mimeType = FALSE;
31 if ($this->isFile()) {
32 if (function_exists('finfo_file')) {
33 $fileInfo = new \finfo();
34 $mimeType = $fileInfo->file($this->getPathname(), FILEINFO_MIME_TYPE);
35 } elseif (function_exists('mime_content_type')) {
36 $mimeType = mime_content_type($this->getPathname());
37 }
38 }
39
40 if (isset($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS'][self::class]['mimeTypeGuessers'])
41 && is_array($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS'][self::class]['mimeTypeGuesser'])
42 ) {
43 foreach ($GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS'][self::class]['mimeTypeGuesser'] as $mimeTypeGuesser) {
44 $hookParameters = array(
45 'mimeType' => &$mimeType
46 );
47
48 \TYPO3\CMS\Core\Utility\GeneralUtility::callUserFunction(
49 $mimeTypeGuesser,
50 $hookParameters,
51 $this
52 );
53 }
54 }
55
56 return $mimeType;
57 }
58 }