mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-08 04:18:52 +00:00
[ticket/13031] Slightly change behavior of choose_mime_type and add unit tests
The mime type 'application/octet-stream' will still always be overwritten by proper guesses. However, guesses with guessers that have a higher priority will now overwrite previous guesses even if the mime types of these guesses had a slash in them. PHPBB3-13031
This commit is contained in:
parent
d31ff51785
commit
21029e9fd2
2 changed files with 25 additions and 4 deletions
|
@ -131,22 +131,22 @@ class guesser
|
|||
* Choose the best mime type based on the current mime type and the guess
|
||||
* If a guesser returns nulls or application/octet-stream, we will keep
|
||||
* the current guess. Guesses with a slash inside them will be favored over
|
||||
* already existing without slashes. However, any guess that will pass the
|
||||
* first check will always overwrite the default application/octet-stream.
|
||||
* already existing ones. However, any guess that will pass the first check
|
||||
* will always overwrite the default application/octet-stream.
|
||||
*
|
||||
* @param string $mime_type The current mime type
|
||||
* @param string $guess The current mime type guess
|
||||
*
|
||||
* @return string The best mime type based on current mime type and guess
|
||||
*/
|
||||
protected function choose_mime_type($mime_type, $guess)
|
||||
public function choose_mime_type($mime_type, $guess)
|
||||
{
|
||||
if ($guess === null || $guess == 'application/octet-stream')
|
||||
{
|
||||
return $mime_type;
|
||||
}
|
||||
|
||||
if ((strpos($mime_type, '/') === false || $mime_type == 'application/octet-stream') && strpos($guess, '/') !== false)
|
||||
if ($mime_type == 'application/octet-stream' || strpos($guess, '/') !== false)
|
||||
{
|
||||
$mime_type = $guess;
|
||||
}
|
||||
|
|
|
@ -206,4 +206,25 @@ class guesser_test extends \phpbb_test_case
|
|||
$this->assertInstanceOf('\phpbb\mimetype\content_guesser', $guessers[0]);
|
||||
$this->assertInstanceOf('\phpbb\mimetype\extension_guesser', $guessers[3]);
|
||||
}
|
||||
|
||||
public function data_choose_mime_type()
|
||||
{
|
||||
return array(
|
||||
array('application/octet-stream', 'application/octet-stream', null),
|
||||
array('application/octet-stream', 'application/octet-stream', 'application/octet-stream'),
|
||||
array('binary', 'application/octet-stream', 'binary'),
|
||||
array('image/jpeg', 'application/octet-stream', 'image/jpeg'),
|
||||
array('image/jpeg', 'binary', 'image/jpeg'),
|
||||
array('image/jpeg', 'image/jpg', 'image/jpeg'),
|
||||
array('image/jpeg', 'image/jpeg', 'binary'),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider data_choose_mime_type
|
||||
*/
|
||||
public function test_choose_mime_type($expected, $mime_type, $guess)
|
||||
{
|
||||
$this->assertSame($expected, $this->guesser->choose_mime_type($mime_type, $guess));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue