diff --git a/lib/mime.inc.php b/lib/mime.inc.php new file mode 100644 index 0000000..d570418 --- /dev/null +++ b/lib/mime.inc.php @@ -0,0 +1,106 @@ +db; + $bOfficeDocument = false; + + // application/msword seems to be set by all Office documents + if ($sMimeType == "application/msword") { + $bOfficeDocument = true; + } + + if ($bOfficeDocument || (!$sMimeType)) { + // check by file extension + $sExtension = KTMime::stripAllButExtension($sFileName); + $sql->query(array("SELECT id FROM " . $default->mimetypes_table . " WHERE LOWER(filetypes) = ?", $sExtension));/*ok*/ + if ($sql->next_record()) { + return $sql->f("id"); + } + } + + // get the mime type id + if (isset($sMimeType)) { + $sql->query(array("SELECT id FROM " . $default->mimetypes_table . " WHERE mimetypes = ?", $sMimeType));/*ok*/ + if ($sql->next_record()) { + return $sql->f("id"); + } + } + + //otherwise return the default mime type + return KTMime::getDefaultMimeTypeID(); + } + + /** + * Get the default mime type, which is text/plain + * + * @return int default mime type + * + */ + function getDefaultMimeTypeID() { + global $default; + $sql = $default->db; + $sql->query("SELECT id FROM " . $default->mimetypes_table . " WHERE mimetypes = 'text/plain'");/*ok*/ + $sql->next_record(); + //get the mime type id + return $sql->f("id"); + } + + function getMimeTypeName($iMimeTypeID) { + global $default; + $sql = $default->db; + $sql->query(array("SELECT mimetypes FROM " . $default->mimetypes_table . " WHERE id = ?", $iMimeTypeID));/*ok*/ + if ($sql->next_record()) { + return $sql->f("mimetypes"); + } + return "application/octet-stream"; + } + + /** + * Try well-defined methods for getting the MIME type for a file on disk. + * First try PECL's Fileinfo library, then try mime_content_type() builtin. + * If neither are available, returns NULL. + * + * @param string file on disk + * @return string mime time for given filename, or NULL + */ + function getMimeTypeFromFile($sFileName) { + if (extension_loaded('fileinfo')) { + $res = finfo_open(FILEINFO_MIME); + $sType = finfo_file($res, $sFileName); + } + + if (!$sType && function_exists('mime_content_type')) { + $sType = @mime_content_type($sFileName); + } + + if ($sType) { + return preg_replace('/;.*$/', '', $sType); + } + + return NULL; + } + + /** + * Strip all but the extension from a file. For instance, input of + * 'foo.tif' would return 'tif'. + * + * @param string filename + * @return string extension for given file, without filename itself + */ + function stripAllButExtension($sFileName) { + return strtolower(substr($sFileName, strpos($sFileName, ".")+1, strlen($sFileName) - strpos($sFileName, "."))); + } +}