[ Index ]

PHP Cross Reference of moodle-2.8

title

Body

[close]

/lib/zend/Zend/Validate/File/ -> Exists.php (source)

   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 [email protected] 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$
  20   */
  21  
  22  /**
  23   * @see Zend_Validate_Abstract
  24   */
  25  require_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-2010 Zend Technologies USA Inc. (http://www.zend.com)
  33   * @license   http://framework.zend.com/license/new-bsd     New BSD License
  34   */
  35  class 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  }


Generated: Fri Nov 28 20:29:05 2014 Cross-referenced by PHPXref 0.7.1