PageRenderTime 184ms CodeModel.GetById 81ms app.highlight 5ms RepoModel.GetById 95ms app.codeStats 0ms

/concreteOLD/libraries/3rdparty/Zend/Validate/File/Exists.php

https://bitbucket.org/selfeky/xclusivescardwebsite
PHP | 203 lines | 95 code | 24 blank | 84 comment | 19 complexity | c887da921b1b93d7e623af9ffc7eac44 MD5 | raw file
  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-2011 Zend Technologies USA Inc. (http://www.zend.com)
 18 * @license   http://framework.zend.com/license/new-bsd     New BSD License
 19 * @version   $Id: Exists.php 23775 2011-03-01 17:25:24Z ralph $
 20 */
 21
 22/**
 23 * @see Zend_Validate_Abstract
 24 */
 25require_once 'Zend/Validate/Abstract.php';
 26
 27/**
 28 * Validator which checks if the file already exists in the directory
 29 *
 30 * @category  Zend
 31 * @package   Zend_Validate
 32 * @copyright  Copyright (c) 2005-2011 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_Exists extends Zend_Validate_Abstract
 36{
 37    /**
 38     * @const string Error constants
 39     */
 40    const DOES_NOT_EXIST = 'fileExistsDoesNotExist';
 41
 42    /**
 43     * @var array Error message templates
 44     */
 45    protected $_messageTemplates = array(
 46        self::DOES_NOT_EXIST => "File '%value%' does not exist",
 47    );
 48
 49    /**
 50     * Internal list of directories
 51     * @var string
 52     */
 53    protected $_directory = '';
 54
 55    /**
 56     * @var array Error message template variables
 57     */
 58    protected $_messageVariables = array(
 59        'directory' => '_directory'
 60    );
 61
 62    /**
 63     * Sets validator options
 64     *
 65     * @param  string|array|Zend_Config $directory
 66     * @return void
 67     */
 68    public function __construct($directory = array())
 69    {
 70        if ($directory instanceof Zend_Config) {
 71            $directory = $directory->toArray();
 72        } else if (is_string($directory)) {
 73            $directory = explode(',', $directory);
 74        } else if (!is_array($directory)) {
 75            require_once 'Zend/Validate/Exception.php';
 76            throw new Zend_Validate_Exception ('Invalid options to validator provided');
 77        }
 78
 79        $this->setDirectory($directory);
 80    }
 81
 82    /**
 83     * Returns the set file directories which are checked
 84     *
 85     * @param  boolean $asArray Returns the values as array, when false an concated string is returned
 86     * @return string
 87     */
 88    public function getDirectory($asArray = false)
 89    {
 90        $asArray   = (bool) $asArray;
 91        $directory = (string) $this->_directory;
 92        if ($asArray) {
 93            $directory = explode(',', $directory);
 94        }
 95
 96        return $directory;
 97    }
 98
 99    /**
100     * Sets the file directory which will be checked
101     *
102     * @param  string|array $directory The directories to validate
103     * @return Zend_Validate_File_Extension Provides a fluent interface
104     */
105    public function setDirectory($directory)
106    {
107        $this->_directory = null;
108        $this->addDirectory($directory);
109        return $this;
110    }
111
112    /**
113     * Adds the file directory which will be checked
114     *
115     * @param  string|array $directory The directory to add for validation
116     * @return Zend_Validate_File_Extension Provides a fluent interface
117     */
118    public function addDirectory($directory)
119    {
120        $directories = $this->getDirectory(true);
121
122        if (is_string($directory)) {
123            $directory = explode(',', $directory);
124        } else if (!is_array($directory)) {
125            require_once 'Zend/Validate/Exception.php';
126            throw new Zend_Validate_Exception ('Invalid options to validator provided');
127        }
128
129        foreach ($directory as $content) {
130            if (empty($content) || !is_string($content)) {
131                continue;
132            }
133
134            $directories[] = trim($content);
135        }
136        $directories = array_unique($directories);
137
138        // Sanity check to ensure no empty values
139        foreach ($directories as $key => $dir) {
140            if (empty($dir)) {
141                unset($directories[$key]);
142            }
143        }
144
145        $this->_directory = implode(',', $directories);
146
147        return $this;
148    }
149
150    /**
151     * Defined by Zend_Validate_Interface
152     *
153     * Returns true if and only if the file already exists in the set directories
154     *
155     * @param  string  $value Real file to check for existance
156     * @param  array   $file  File data from Zend_File_Transfer
157     * @return boolean
158     */
159    public function isValid($value, $file = null)
160    {
161        $directories = $this->getDirectory(true);
162        if (($file !== null) and (!empty($file['destination']))) {
163            $directories[] = $file['destination'];
164        } else if (!isset($file['name'])) {
165            $file['name'] = $value;
166        }
167
168        $check = false;
169        foreach ($directories as $directory) {
170            if (empty($directory)) {
171                continue;
172            }
173
174            $check = true;
175            if (!file_exists($directory . DIRECTORY_SEPARATOR . $file['name'])) {
176                return $this->_throw($file, self::DOES_NOT_EXIST);
177            }
178        }
179
180        if (!$check) {
181            return $this->_throw($file, self::DOES_NOT_EXIST);
182        }
183
184        return true;
185    }
186
187    /**
188     * Throws an error of the given type
189     *
190     * @param  string $file
191     * @param  string $errorType
192     * @return false
193     */
194    protected function _throw($file, $errorType)
195    {
196        if ($file !== null) {
197            $this->_value = $file['name'];
198        }
199
200        $this->_error($errorType);
201        return false;
202    }
203}