• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • Examples
  • File List

E:/E/GEAMP/www/openbiz/openbiz/others/Zend/Validate/File/ExcludeMimeType.php

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 ($mime !== false) {
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 }

Generated on Thu Apr 19 2012 17:01:18 for openbiz by  doxygen 1.7.2