Seditio Source
Root |
./othercms/xenForo 2.2.8/src/XF/Data/FileType.php
<?php

namespace XF\Data;

class
FileType
{
    const
WORD = 'word';
    const
POWERPOINT = 'powerpoint';
    const
PDF = 'pdf';
    const
MUSIC = 'music';
    const
AUDIO = 'audio';
    const
CODE = 'code';
    const
ARCHIVE = 'archive';
    const
EXCEL = 'excel';
    const
CSV = 'csv';
    const
TSV = 'spreadsheet';
    const
VIDEO = 'video';
    const
IMAGE = 'image';
    const
DOWNLOAD = 'download';
    const
TEXT = 'alt'; // because FA doesn't have `fa-file-text`

   
public function getExtensionMap(): array
    {
        return [
           
'7z' => self::ARCHIVE,
           
'aac' => self::MUSIC,
           
'afdesign' => self::IMAGE,
           
'afphoto' => self::IMAGE,
           
'ai' => self::IMAGE,
           
'aif' => self::AUDIO,
           
'avi' => self::VIDEO,
           
'bat' => self::CODE,
           
'bmp' => self::IMAGE,
           
'c' => self::CODE,
           
'cnf' => self::CODE,
           
'conf' => self::CODE,
           
'cpp' => self::CODE,
           
'cs' => self::CODE,
           
'css' => self::CODE,
           
'csv' => self::CSV,
           
'diff' => self::TEXT,
           
'doc' => self::WORD,
           
'docx' => self::WORD,
           
'dot' => self::WORD,
           
'dotx' => self::WORD,
           
'eps' => self::IMAGE,
           
'fla' => self::MUSIC,
           
'flac' => self::MUSIC,
           
'flv' => self::VIDEO,
           
'gif' => self::IMAGE,
           
'gz' => self::ARCHIVE,
           
'h' => self::CODE,
           
'htm' => self::CODE,
           
'html' => self::CODE,
           
'iff' => self::IMAGE,
           
'ini' => self::CODE,
           
'java' => self::CODE,
           
'jpe' => self::IMAGE,
           
'jpeg' => self::IMAGE,
           
'jpg' => self::IMAGE,
           
'js' => self::CODE,
           
'json' => self::CODE,
           
'less' => self::CODE,
           
'lha' => self::ARCHIVE,
           
'log' => self::TEXT,
           
'm' => self::CODE,
           
'm4a' => self::MUSIC,
           
'm4v' => self::VIDEO,
           
'mid' => self::MUSIC,
           
'midi' => self::MUSIC,
           
'mkv' => self::VIDEO,
           
'mov' => self::VIDEO,
           
'mp3' => self::MUSIC,
           
'mp4' => self::VIDEO,
           
'mpeg' => self::VIDEO,
           
'mpg' => self::VIDEO,
           
'ogg' => self::MUSIC,
           
'part' => self::DOWNLOAD,
           
'patch' => self::TEXT,
           
'pdf' => self::PDF,
           
'php' => self::CODE,
           
'pkg' => self::ARCHIVE,
           
'pl' => self::CODE,
           
'png' => self::IMAGE,
           
'pps' => self::POWERPOINT,
           
'ppsx' => self::POWERPOINT,
           
'ppt' => self::POWERPOINT,
           
'pptx' => self::POWERPOINT,
           
'psd' => self::IMAGE,
           
'py' => self::CODE,
           
'rar' => self::ARCHIVE,
           
'rtf' => self::TEXT,
           
'sh' => self::CODE,
           
'spreadsheet' => self::TSV,
           
'sql' => self::CODE,
           
'svg' => self::IMAGE,
           
'swift' => self::CODE,
           
'tar' => self::ARCHIVE,
           
'tga' => self::IMAGE,
           
'tgz' => self::ARCHIVE,
           
'tif' => self::IMAGE,
           
'tiff' => self::IMAGE,
           
'torrent' => self::DOWNLOAD,
           
'txt' => self::TEXT,
           
'vb' => self::CODE,
           
'vob' => self::VIDEO,
           
'wav' => self::AUDIO,
           
'wma' => self::MUSIC,
           
'wmv' => self::VIDEO,
           
'xls' => self::EXCEL,
           
'xlsx' => self::EXCEL,
           
'xlt' => self::EXCEL,
           
'xltx' => self::EXCEL,
           
'xml' => self::CODE,
           
'zip' => self::ARCHIVE,
        ];
    }

   
/**
     * @param string $extension
     *
     * @return string
     */
   
public function getFileType(string $extension)
    {
       
$extension = strtolower($extension);
       
$map = $this->getExtensionMap();

        return
$map[$extension] ?? '';
    }

   
/**
     * Get a FontAwesome icon (name) for the given file extension
     *
     * @param string $extension
     *
     * @return string
     */
   
public function getIcon(string $extension): string
   
{
       
$icon = 'fa-file';

        if (
$type = $this->getFileType($extension))
        {
           
$icon .= '-' . $type;
        }

        return
$icon;
    }
}