فهرست منبع

[ZF-8111] Zend_Validate_File:

- fixed a problem with late static binding at PHP 5.2


git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@18659 44c647ce-9c0f-0410-b52a-842ac1e357ba
thomas 16 سال پیش
والد
کامیت
93568e0b4a

+ 27 - 0
library/Zend/Validate/File/IsCompressed.php

@@ -83,4 +83,31 @@ class Zend_Validate_File_IsCompressed extends Zend_Validate_File_MimeType
 
         $this->setMimeType($mimetype);
     }
+
+    /**
+     * Throws an error of the given type
+     * Duplicates parent method due to OOP Problem with late static binding in PHP 5.2
+     *
+     * @param  string $file
+     * @param  string $errorType
+     * @return false
+     */
+    protected function _throw($file, $errorType)
+    {
+        $this->_value = $file['name'];
+        switch($errorType) {
+            case Zend_Validate_File_MimeType::FALSE_TYPE :
+                $errorType = self::FALSE_TYPE;
+                break;
+            case Zend_Validate_File_MimeType::NOT_DETECTED :
+                $errorType = self::NOT_DETECTED;
+                break;
+            case Zend_Validate_File_MimeType::NOT_READABLE :
+                $errorType = self::NOT_READABLE;
+                break;
+        }
+
+        $this->_error($errorType);
+        return false;
+    }
 }

+ 27 - 0
library/Zend/Validate/File/IsImage.php

@@ -87,4 +87,31 @@ class Zend_Validate_File_IsImage extends Zend_Validate_File_MimeType
 
         $this->setMimeType($mimetype);
     }
+
+    /**
+     * Throws an error of the given type
+     * Duplicates parent method due to OOP Problem with late static binding in PHP 5.2
+     *
+     * @param  string $file
+     * @param  string $errorType
+     * @return false
+     */
+    protected function _throw($file, $errorType)
+    {
+        $this->_value = $file['name'];
+        switch($errorType) {
+            case Zend_Validate_File_MimeType::FALSE_TYPE :
+                $errorType = self::FALSE_TYPE;
+                break;
+            case Zend_Validate_File_MimeType::NOT_DETECTED :
+                $errorType = self::NOT_DETECTED;
+                break;
+            case Zend_Validate_File_MimeType::NOT_READABLE :
+                $errorType = self::NOT_READABLE;
+                break;
+        }
+
+        $this->_error($errorType);
+        return false;
+    }
 }

+ 20 - 0
tests/Zend/Validate/File/IsCompressedTest.php

@@ -156,6 +156,26 @@ class Zend_Validate_File_IsCompressedTest extends PHPUnit_Framework_TestCase
         $this->assertEquals('image/gif,text,jpg,to,zip,ti', $validator->getMimeType());
         $this->assertEquals(array('image/gif', 'text', 'jpg', 'to', 'zip', 'ti'), $validator->getMimeType(true));
     }
+
+    /**
+     * @ZF-8111
+     */
+    public function testErrorMessages()
+    {
+        $files = array(
+            'name'     => 'picture.jpg',
+            'type'     => 'image/jpeg',
+            'size'     => 200,
+            'tmp_name' => dirname(__FILE__) . '/_files/picture.jpg',
+            'error'    => 0
+        );
+
+        $validator = new Zend_Validate_File_IsCompressed('test/notype');
+        $validator->enableHeaderCheck();
+        $this->assertFalse($validator->isValid(dirname(__FILE__) . '/_files/picture.jpg', $files));
+        $error = $validator->getMessages();
+        $this->assertTrue(array_key_exists('fileIsCompressedFalseType', $error));
+    }
 }
 
 // Call Zend_Validate_File_MimeTypeTest::main() if this source file is executed directly.

+ 20 - 0
tests/Zend/Validate/File/IsImageTest.php

@@ -156,6 +156,26 @@ class Zend_Validate_File_IsImageTest extends PHPUnit_Framework_TestCase
         $this->assertEquals('image/gif,text,jpg,to,zip,ti', $validator->getMimeType());
         $this->assertEquals(array('image/gif', 'text', 'jpg', 'to', 'zip', 'ti'), $validator->getMimeType(true));
     }
+
+    /**
+     * @ZF-8111
+     */
+    public function testErrorMessages()
+    {
+        $files = array(
+            'name'     => 'picture.jpg',
+            'type'     => 'image/jpeg',
+            'size'     => 200,
+            'tmp_name' => dirname(__FILE__) . '/_files/picture.jpg',
+            'error'    => 0
+        );
+
+        $validator = new Zend_Validate_File_IsImage('test/notype');
+        $validator->enableHeaderCheck();
+        $this->assertFalse($validator->isValid(dirname(__FILE__) . '/_files/picture.jpg', $files));
+        $error = $validator->getMessages();
+        $this->assertTrue(array_key_exists('fileIsImageFalseType', $error));
+    }
 }
 
 // Call Zend_Validate_File_IsImage::main() if this source file is executed directly.