$mime) { if (strtoupper(substr($filename, -strlen($ext)-1)) == strtoupper('.'.$ext)) { return $mime; } } return false; } public static function getDescription($file, $filenames=array(__DIR__.'/filetypes.local', __DIR__.'/filetypes.conf')) { // TODO: Make it multi-lang $inis = array(); foreach ($filenames as $num => $filename) { $inis[$num] = !file_exists($filename) ? array() : parse_ini_file($filename, true, INI_SCANNER_RAW); if (!isset($inis[$num]['OidHeader'])) $inis[$num]['OidHeader'] = array(); if (!isset($inis[$num]['GuidHeader'])) $inis[$num]['GuidHeader'] = array(); if (!isset($inis[$num]['FileExtension'])) $inis[$num]['FileExtension'] = array(); if (!isset($inis[$num]['MimeType'])) $inis[$num]['MimeType'] = array(); } if (is_readable($file)) { $h = fopen($file, 'r'); $line = trim(fgets($h, 128)); if ((substr($line,0,1) == '[') && ($line[strlen($line)-1] == ']')) { $line = substr($line, 1, strlen($line)-2); foreach ($inis as $ini) { if (isset($ini['OidHeader'][$line])) return $ini['OidHeader'][$line]; } foreach ($inis as $ini) { if (isset($ini['GuidHeader'][$line])) return $ini['GuidHeader'][$line]; } } fclose($h); } foreach ($inis as $ini) { foreach ($ini['FileExtension'] as $ext => $name) { if (strtoupper(substr($file, -strlen($ext)-1)) == strtoupper('.'.$ext)) { return $name; } } } $mime = false; if (function_exists('mime_content_type')) { $mime = @mime_content_type($file); } if (!$mime) { $mime = self::getMimeType($file); } if ($mime) { foreach ($inis as $ini) { if (isset($ini['MimeType'][$mime])) return $ini['MimeType'][$mime]; } } foreach ($inis as $ini) { if (isset($ini['Static']['LngUnknown'])) { return $ini['Static']['LngUnknown']; } } return 'Unknown'; } }