Explorar el Código

[ZF-9686] Zend_Validate:

- made finfo object persistent

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@21859 44c647ce-9c0f-0410-b52a-842ac1e357ba
thomas hace 15 años
padre
commit
8bd1105238

+ 2 - 3
library/Zend/Validate/File/MimeType.php

@@ -332,7 +332,7 @@ class Zend_Validate_File_MimeType extends Zend_Validate_Abstract
         $mimefile = $this->getMagicFile();
         if (class_exists('finfo', false)) {
             $const = defined('FILEINFO_MIME_TYPE') ? FILEINFO_MIME_TYPE : FILEINFO_MIME;
-            if (!empty($mimefile) && !empty($this->_finfo)) {
+            if (!empty($mimefile) && empty($this->_finfo)) {
                 $this->_finfo = @finfo_open($const, $mimefile);
             }
 
@@ -340,11 +340,10 @@ class Zend_Validate_File_MimeType extends Zend_Validate_Abstract
                 $this->_finfo = @finfo_open($const);
             }
 
+            $this->_type = null;
             if ($this->_finfo !== false) {
                 $this->_type = finfo_file($this->_finfo, $value);
             }
-
-            unset($this->_finfo);
         }
 
         if (empty($this->_type) &&

+ 41 - 0
tests/Zend/Validate/File/MimeTypeTest.php

@@ -199,6 +199,47 @@ class Zend_Validate_File_MimeTypeTest extends PHPUnit_Framework_TestCase
         $this->assertTrue($validator->getHeaderCheck());
         $this->assertEquals('image/gif,image/jpg', $validator->getMimeType());
     }
+
+    /**
+     * @group ZF-9686
+     */
+    public function testDualValidation()
+    {
+        $valuesExpected = array(
+            array('image', true),
+        );
+
+        $filetest = dirname(__FILE__) . '/_files/picture.jpg';
+        $files = array(
+            'name'     => 'picture.jpg',
+            'type'     => 'image/jpg',
+            'size'     => 200,
+            'tmp_name' => $filetest,
+            'error'    => 0
+        );
+
+        foreach ($valuesExpected as $element) {
+            $options   = array_shift($element);
+            $expected  = array_shift($element);
+            $validator = new Zend_Validate_File_MimeType($options);
+            $validator->enableHeaderCheck();
+            $this->assertEquals(
+                $expected,
+                $validator->isValid($filetest, $files),
+                "Test expected " . var_export($expected, 1) . " with " . var_export($options, 1)
+                . "\nMessages: " . var_export($validator->getMessages(), 1)
+            );
+
+            $validator = new Zend_Validate_File_MimeType($options);
+            $validator->enableHeaderCheck();
+            $this->assertEquals(
+                $expected,
+                $validator->isValid($filetest, $files),
+                "Test expected " . var_export($expected, 1) . " with " . var_export($options, 1)
+                . "\nMessages: " . var_export($validator->getMessages(), 1)
+            );
+        }
+    }
 }
 
 // Call Zend_Validate_File_MimeTypeTest::main() if this source file is executed directly.