Вход Регистрация
Файл: library/Zend/Validate/File/ExcludeMimeType.php
Строк: 101
<?php
/**
 * Zend Framework
 *
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled
 * with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://framework.zend.com/license/new-bsd
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@zend.com so we can send you a copy immediately.
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 * @version   $Id: ExcludeMimeType.php 21935 2010-04-18 16:21:35Z thomas $
 */

/**
 * @see Zend_Validate_File_MimeType
 */
require_once 'Zend/Validate/File/MimeType.php';

/**
 * Validator for the mime type of a file
 *
 * @category  Zend
 * @package   Zend_Validate
 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 */
class Zend_Validate_File_ExcludeMimeType extends Zend_Validate_File_MimeType
{
    const 
FALSE_TYPE   'fileExcludeMimeTypeFalse';
    const 
NOT_DETECTED 'fileExcludeMimeTypeNotDetected';
    const 
NOT_READABLE 'fileExcludeMimeTypeNotReadable';

    
/**
     * Defined by Zend_Validate_Interface
     *
     * Returns true if the mimetype of the file does not matche the given ones. Also parts
     * of mimetypes can be checked. If you give for example "image" all image
     * mime types will not be accepted like "image/gif", "image/jpeg" and so on.
     *
     * @param  string $value Real file to check for mimetype
     * @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($fileself::NOT_READABLE);
        }

        
$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 (!empty(
$mime)) {
                
$this->_type $mime->file($value);
            }
            unset(
$mime);
        }

        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)) {
            return 
$this->_throw($fileself::NOT_DETECTED);
        }

        
$mimetype $this->getMimeType(true);
        if (
in_array($this->_type$mimetype)) {
            return 
$this->_throw($fileself::FALSE_TYPE);
        }

        
$types explode('/'$this->_type);
        
$types array_merge($typesexplode('-'$this->_type));
        foreach(
$mimetype as $mime) {
            if (
in_array($mime$types)) {
                return 
$this->_throw($fileself::FALSE_TYPE);
            }
        }

        return 
true;
    }
}
Онлайн: 0
Реклама