source: trunk/library/Zend/Validate/File/ExcludeExtension.php @ 5146

Revision 5146, 2.9 KB checked in by wmerlotto, 12 years ago (diff)

Ticket #2305 - Enviando alteracoes, desenvolvidas internamente na Prognus. Library: adicionando arquivos.

Line 
1<?php
2/**
3 * Zend Framework
4 *
5 * LICENSE
6 *
7 * This source file is subject to the new BSD license that is bundled
8 * with this package in the file LICENSE.txt.
9 * It is also available through the world-wide-web at this URL:
10 * http://framework.zend.com/license/new-bsd
11 * If you did not receive a copy of the license and are unable to
12 * obtain it through the world-wide-web, please send an email
13 * to license@zend.com so we can send you a copy immediately.
14 *
15 * @category  Zend
16 * @package   Zend_Validate
17 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
18 * @license   http://framework.zend.com/license/new-bsd     New BSD License
19 * @version   $Id: ExcludeExtension.php 22668 2010-07-25 14:50:46Z thomas $
20 */
21
22/**
23 * @see Zend_Validate_Abstract
24 */
25require_once 'Zend/Validate/File/Extension.php';
26
27/**
28 * Validator for the excluding file extensions
29 *
30 * @category  Zend
31 * @package   Zend_Validate
32 * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
33 * @license   http://framework.zend.com/license/new-bsd     New BSD License
34 */
35class Zend_Validate_File_ExcludeExtension extends Zend_Validate_File_Extension
36{
37    /**
38     * @const string Error constants
39     */
40    const FALSE_EXTENSION = 'fileExcludeExtensionFalse';
41    const NOT_FOUND       = 'fileExcludeExtensionNotFound';
42
43    /**
44     * @var array Error message templates
45     */
46    protected $_messageTemplates = array(
47        self::FALSE_EXTENSION => "File '%value%' has a false extension",
48        self::NOT_FOUND       => "File '%value%' is not readable or does not exist",
49    );
50
51    /**
52     * Defined by Zend_Validate_Interface
53     *
54     * Returns true if and only if the fileextension of $value is not included in the
55     * set extension list
56     *
57     * @param  string  $value Real file to check for extension
58     * @param  array   $file  File data from Zend_File_Transfer
59     * @return boolean
60     */
61    public function isValid($value, $file = null)
62    {
63        // Is file readable ?
64        require_once 'Zend/Loader.php';
65        if (!Zend_Loader::isReadable($value)) {
66            return $this->_throw($file, self::NOT_FOUND);
67        }
68
69        if ($file !== null) {
70            $info['extension'] = substr($file['name'], strrpos($file['name'], '.') + 1);
71        } else {
72            $info = pathinfo($value);
73        }
74
75        $extensions = $this->getExtension();
76
77        if ($this->_case and (!in_array($info['extension'], $extensions))) {
78            return true;
79        } else if (!$this->_case) {
80            $found = false;
81            foreach ($extensions as $extension) {
82                if (strtolower($extension) == strtolower($info['extension'])) {
83                    $found = true;
84                }
85            }
86
87            if (!$found) {
88                return true;
89            }
90        }
91
92        return $this->_throw($file, self::FALSE_EXTENSION);
93    }
94}
Note: See TracBrowser for help on using the repository browser.