/** * */ public function testHasParameters() { $this->assertFalse(MIME_Type::hasParameters('text/plain')); $this->assertFalse(MIME_Type::hasParameters('text/*')); $this->assertFalse(MIME_Type::hasParameters('*/*')); $this->assertTrue(MIME_Type::hasParameters('text/xml;description=test')); $this->assertTrue(MIME_Type::hasParameters('text/xml;one=test;two=three')); }
/** * Autodetect a file's MIME-type * * This function may be called staticly. * * @param string $file Path to the file to get the type of * @param bool $params Append MIME parameters if true * @return string $file's MIME-type on success, PEAR_Error otherwise * @since 1.0.0beta1 * @static */ function autoDetect($file, $params = false) { @(include_once 'System/Command.php'); if (function_exists('mime_content_type')) { $type = mime_content_type($file); } else { if (class_exists('System_Command')) { $type = MIME_Type::_fileAutoDetect($file); } else { return PEAR::raiseError("Sorry, can't autodetect; you need the mime_magic extension or System_Command and 'file' installed to use this function."); } } // _fileAutoDetect() may have returned an error. if (PEAR::isError($type)) { return $type; } // Don't return an empty string if (!$type || !strlen($type)) { return PEAR::raiseError("Sorry, couldn't determine file type."); } // Strip parameters if present & requested if (MIME_Type::hasParameters($type) && !$params) { $type = MIME_Type::stripParameters($type); } return $type; }
/** * Handles a detected MIME type and modifies it if necessary. * * @param string $type MIME Type of a file * @param bool $params Append MIME parameters if true * * @return string $file's MIME-type on success, PEAR_Error otherwise * @static */ function _handleDetection($type, $params) { // _fileAutoDetect() may have returned an error. if (PEAR::isError($type)) { return $type; } // Don't return an empty string if (!$type || !strlen($type)) { return PEAR::raiseError("Sorry, couldn't determine file type."); } // Strip parameters if present & requested if (MIME_Type::hasParameters($type) && !$params) { $type = MIME_Type::stripParameters($type); } return $type; }
/** * Autodetect a file's MIME-type * * This function may be called staticly. * * @param string $file Path to the file to get the type of * @param string $custom_mime An optional custom 'default' value, mostly used for the filetype sent by the users' browser * @param bool $params Append MIME parameters if true * @return string $file's MIME-type on success, false boolean otherwise * @since 1.0.0beta1 * @static */ function autoDetect($file, $custom_mime = null, $custom_ext = null, $params = false) { if (function_exists('mime_content_type')) { $type = mime_content_type($file); if ($type == "application/octet-stream" || $type == "application/unknown") { if (!empty($custom_mime)) { $type = $custom_mime; } elseif (!empty($custom_ext)) { $type = MIME_Helper::convertExtensionToMime($custom_ext); } } } elseif (!empty($custom_mime)) { $type = $custom_mime; } else { $type = MIME_Type::_fileAutoDetect($file); } // _fileAutoDetect() may have returned an error. if ($type === false) { return $type; } //return PEAR::raiseError("Sorry, can't autodetect; you need the mime_magic extension or System_Command and 'file' installed to use this function."); if (!MIME_Helper::convertMimeToExtension($type)) { $type = MIME_Helper::convertExtensionToMime($custom_mime); } // flv (Flash Video format) files need exceptional handling (for now I'll provide a fictional mimetype) if ($custom_ext == "flv") { $type = "video/x-flv"; } // Don't return an empty string if (!$type || !strlen($type)) { //return PEAR::raiseError("Sorry, couldn't determine file type."); return false; } // Strip parameters if present & requested if (MIME_Type::hasParameters($type) && !$params) { $type = MIME_Type::stripParameters($type); } return $type; }