Merge pull request #2741 from ADmad/2.5-mimetype

Added regex support to Validation::mimeType().
This commit is contained in:
Mark Story 2014-02-17 10:10:48 -05:00
commit c325a93998
2 changed files with 14 additions and 3 deletions

View file

@ -2356,11 +2356,14 @@ class ValidationTest extends CakeTestCase {
public function testMimeType() {
$image = CORE_PATH . 'Cake' . DS . 'Test' . DS . 'test_app' . DS . 'webroot' . DS . 'img' . DS . 'cake.power.gif';
$File = new File($image, false);
$this->skipIf(!$File->mime(), 'Cannot determine mimeType');
$this->assertTrue(Validation::mimeType($image, array('image/gif')));
$this->assertTrue(Validation::mimeType(array('tmp_name' => $image), array('image/gif')));
$this->assertTrue(Validation::mimeType(array('tmp_name' => $image), '#image/.+#'));
$this->assertTrue(Validation::mimeType($image, array('image/GIF')));
$this->assertFalse(Validation::mimeType($image, array('image/GIF')));
$this->assertFalse(Validation::mimeType($image, array('image/png')));
$this->assertFalse(Validation::mimeType(array('tmp_name' => $image), array('image/png')));
}

View file

@ -925,10 +925,10 @@ class Validation {
}
/**
* Checks the mime type of a file. Comparison is case sensitive.
* Checks the mime type of a file.
*
* @param string|array $check
* @param array $mimeTypes to check for
* @param array|string $mimeTypes Array of mime types or regex pattern to check.
* @return boolean Success
* @throws CakeException when mime type can not be determined.
*/
@ -943,6 +943,14 @@ class Validation {
if ($mime === false) {
throw new CakeException(__d('cake_dev', 'Can not determine the mimetype.'));
}
if (is_string($mimeTypes)) {
return self::_check($mime, $mimeTypes);
}
foreach ($mimeTypes as $key => $val) {
$mimeTypes[$key] = strtolower($val);
}
return in_array($mime, $mimeTypes);
}