Преглед изворни кода

[GENERIC/ZF-7860] Zend_Validate_File:

- changed mimetype validation for dependend validators using PHP5.3
- simplified code

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@18147 44c647ce-9c0f-0410-b52a-842ac1e357ba
thomas пре 16 година
родитељ
комит
ac77b1dc82

+ 20 - 7
library/Zend/Validate/File/ExcludeMimeType.php

@@ -64,14 +64,27 @@ class Zend_Validate_File_ExcludeMimeType extends Zend_Validate_File_MimeType
             return $this->_throw($file, self::NOT_READABLE);
         }
 
-        if (class_exists('finfo', false) && defined('MAGIC')) {
-            $mime = new finfo(FILEINFO_MIME);
-            $this->_type = $mime->file($value);
+        $mimefile = $this->getMagicFile();
+        if (class_exists('finfo', false)) {
+            $const = defined('FILEINFO_MIME_TYPE') ? FILEINFO_MIME_TYPE : FILEINFO_MIME;
+            if (!empty($mimefile)) {
+                $mime = new finfo($const, $mimefile);
+            } else {
+                $mime = new finfo($const);
+            }
+
+            if ($mime !== false) {
+                $this->_type = $mime->file($value);
+            }
             unset($mime);
-        } elseif (function_exists('mime_content_type') && ini_get('mime_magic.magicfile')) {
-            $this->_type = mime_content_type($value);
-        } elseif ($this->_headerCheck) {
-            $this->_type = $file['type'];
+        }
+
+        if (empty($this->_type)) {
+            if (function_exists('mime_content_type') && ini_get('mime_magic.magicfile')) {
+                $this->_type = mime_content_type($value);
+            } elseif ($this->_headerCheck) {
+                $this->_type = $file['type'];
+            }
         }
 
         if (empty($this->_type)) {

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

@@ -83,58 +83,4 @@ class Zend_Validate_File_IsCompressed extends Zend_Validate_File_MimeType
 
         $this->setMimeType($mimetype);
     }
-
-    /**
-     * Defined by Zend_Validate_Interface
-     *
-     * Returns true if and only if the file is compression with the set compression types
-     *
-     * @param  string  $value Real file to check for compression
-     * @param  array   $file  File data from Zend_File_Transfer
-     * @return boolean
-     */
-    public function isValid($value, $file = null)
-    {
-        if ($file === null) {
-            $file = array(
-                'type' => null,
-                'name' => $value
-            );
-        }
-
-        // Is file readable ?
-        require_once 'Zend/Loader.php';
-        if (!Zend_Loader::isReadable($value)) {
-            return $this->_throw($file, self::NOT_READABLE);
-        }
-
-        if (class_exists('finfo', false) && defined('MAGIC')) {
-            $mime = new finfo(FILEINFO_MIME);
-            $this->_type = $mime->file($value);
-            unset($mime);
-        } elseif (function_exists('mime_content_type') && ini_get('mime_magic.magicfile')) {
-            $this->_type = mime_content_type($value);
-        } elseif ($this->_headerCheck) {
-            $this->_type = $file['type'];
-        }
-
-        if (empty($this->_type)) {
-            return $this->_throw($file, self::NOT_DETECTED);
-        }
-
-        $compressions = $this->getMimeType(true);
-        if (in_array($this->_type, $compressions)) {
-            return true;
-        }
-
-        $types = explode('/', $this->_type);
-        $types = array_merge($types, explode('-', $this->_type));
-        foreach ($compressions as $mime) {
-            if (in_array($mime, $types)) {
-                return true;
-            }
-        }
-
-        return $this->_throw($file, self::FALSE_TYPE);
-    }
 }

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

@@ -87,58 +87,4 @@ class Zend_Validate_File_IsImage extends Zend_Validate_File_MimeType
 
         $this->setMimeType($mimetype);
     }
-
-    /**
-     * Defined by Zend_Validate_Interface
-     *
-     * Returns true if and only if the file is compression with the set compression types
-     *
-     * @param  string  $value Real file to check for compression
-     * @param  array   $file  File data from Zend_File_Transfer
-     * @return boolean
-     */
-    public function isValid($value, $file = null)
-    {
-        if ($file === null) {
-            $file = array(
-                'type' => null,
-                'name' => $value
-            );
-        }
-
-        // Is file readable ?
-        require_once 'Zend/Loader.php';
-        if (!Zend_Loader::isReadable($value)) {
-            return $this->_throw($file, self::NOT_READABLE);
-        }
-
-        if (class_exists('finfo', false) && defined('MAGIC')) {
-            $mime = new finfo(FILEINFO_MIME);
-            $this->_type = $mime->file($value);
-            unset($mime);
-        } elseif (function_exists('mime_content_type') && ini_get('mime_magic.magicfile')) {
-            $this->_type = mime_content_type($value);
-        } elseif ($this->_headerCheck) {
-            $this->_type = $file['type'];
-        }
-
-        if (empty($this->_type)) {
-            return $this->_throw($file, self::NOT_DETECTED);
-        }
-
-        $compressions = $this->getMimeType(true);
-        if (in_array($this->_type, $compressions)) {
-            return true;
-        }
-
-        $types = explode('/', $this->_type);
-        $types = array_merge($types, explode('-', $this->_type));
-        foreach($compressions as $mime) {
-            if (in_array($mime, $types)) {
-                return true;
-            }
-        }
-
-        return $this->_throw($file, self::FALSE_TYPE);
-    }
 }