MimeTypeIcon.php 1.71 KiB
<?php
/*
 * Copyright (C) 2015 IRSTEA
 * All rights reserved.
 */
namespace Irstea\FileUploadBundle\Utils;
/**
 * Description of MimeTypeIcon
 * @author Guillaume Perréal <guillaume.perreal@irstea.fr>
final class MimeTypeIcon
    private static $icons = [
        'application/x-gzip' => 'zip',
        'application/vnd.oasis.opendocument.text' => 'word',
        'application/vnd.oasis.opendocument.spreadsheet' => 'excel',
        'application/vnd.oasis.opendocument.presentation' => 'powerpoint',
        'application/vnd.oasis.opendocument.graphics' => 'image',
        'application/vnd.ms-excel' => 'excel',
        'application/vnd.ms-powerpoint' => 'powerpoint',
        'application/msword' => 'word',
        'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => 'excel',
        'application/vnd.openxmlformats-officedocument.presentationml.presentation' => 'powerpoint',
        'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => 'word',
        'application/pdf' => 'pdf',
        'application/zip' => 'archive',
        'application/x-rar-compressed' => 'archive',
        'application/x-gtar' => 'archive',
        'application/x-gzip' => 'archive',
        'application/x-tar' => 'archive'
    /**
     * @param string $mimeType
     * @return string|null
    public static function getMimeTypeIcon($mimeType)
        if(!is_string($mimeType)) {
            return null;
        if(isset(self::$icons[$mimeType])) {
            return self::$icons[$mimeType];
        $matches = [];
        if(preg_match('@^(text|audio|video|image)/@', $mimeType, $matches)) {
            return $matches[1];
        return null;