|
Moodle
2.2.1
http://www.collinsharper.com
|
00001 <?php 00025 require_once 'Zend/Validate/File/MimeType.php'; 00026 00035 class Zend_Validate_File_ExcludeMimeType extends Zend_Validate_File_MimeType 00036 { 00037 const FALSE_TYPE = 'fileExcludeMimeTypeFalse'; 00038 const NOT_DETECTED = 'fileExcludeMimeTypeNotDetected'; 00039 const NOT_READABLE = 'fileExcludeMimeTypeNotReadable'; 00040 00052 public function isValid($value, $file = null) 00053 { 00054 if ($file === null) { 00055 $file = array( 00056 'type' => null, 00057 'name' => $value 00058 ); 00059 } 00060 00061 // Is file readable ? 00062 require_once 'Zend/Loader.php'; 00063 if (!Zend_Loader::isReadable($value)) { 00064 return $this->_throw($file, self::NOT_READABLE); 00065 } 00066 00067 $mimefile = $this->getMagicFile(); 00068 if (class_exists('finfo', false)) { 00069 $const = defined('FILEINFO_MIME_TYPE') ? FILEINFO_MIME_TYPE : FILEINFO_MIME; 00070 if (!empty($mimefile)) { 00071 $mime = new finfo($const, $mimefile); 00072 } else { 00073 $mime = new finfo($const); 00074 } 00075 00076 if (!empty($mime)) { 00077 $this->_type = $mime->file($value); 00078 } 00079 unset($mime); 00080 } 00081 00082 if (empty($this->_type)) { 00083 if (function_exists('mime_content_type') && ini_get('mime_magic.magicfile')) { 00084 $this->_type = mime_content_type($value); 00085 } elseif ($this->_headerCheck) { 00086 $this->_type = $file['type']; 00087 } 00088 } 00089 00090 if (empty($this->_type)) { 00091 return $this->_throw($file, self::NOT_DETECTED); 00092 } 00093 00094 $mimetype = $this->getMimeType(true); 00095 if (in_array($this->_type, $mimetype)) { 00096 return $this->_throw($file, self::FALSE_TYPE); 00097 } 00098 00099 $types = explode('/', $this->_type); 00100 $types = array_merge($types, explode('-', $this->_type)); 00101 foreach($mimetype as $mime) { 00102 if (in_array($mime, $types)) { 00103 return $this->_throw($file, self::FALSE_TYPE); 00104 } 00105 } 00106 00107 return true; 00108 } 00109 }