[ Index ] |
PHP Cross Reference of moodle-2.8 |
[Summary view] [Print] [Text view]
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_File_Hash 24 */ 25 require_once 'Zend/Validate/File/Hash.php'; 26 27 /** 28 * Validator for the md5 hash of given files 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_Md5 extends Zend_Validate_File_Hash 36 { 37 /** 38 * @const string Error constants 39 */ 40 const DOES_NOT_MATCH = 'fileMd5DoesNotMatch'; 41 const NOT_DETECTED = 'fileMd5NotDetected'; 42 const NOT_FOUND = 'fileMd5NotFound'; 43 44 /** 45 * @var array Error message templates 46 */ 47 protected $_messageTemplates = array( 48 self::DOES_NOT_MATCH => "File '%value%' does not match the given md5 hashes", 49 self::NOT_DETECTED => "A md5 hash could not be evaluated for the given file", 50 self::NOT_FOUND => "File '%value%' could not be found", 51 ); 52 53 /** 54 * Hash of the file 55 * 56 * @var string 57 */ 58 protected $_hash; 59 60 /** 61 * Sets validator options 62 * 63 * $hash is the hash we accept for the file $file 64 * 65 * @param string|array $options 66 * @return void 67 */ 68 public function __construct($options) 69 { 70 if ($options instanceof Zend_Config) { 71 $options = $options->toArray(); 72 } elseif (is_scalar($options)) { 73 $options = array('hash1' => $options); 74 } elseif (!is_array($options)) { 75 require_once 'Zend/Validate/Exception.php'; 76 throw new Zend_Validate_Exception('Invalid options to validator provided'); 77 } 78 79 $this->setMd5($options); 80 } 81 82 /** 83 * Returns all set md5 hashes 84 * 85 * @return array 86 */ 87 public function getMd5() 88 { 89 return $this->getHash(); 90 } 91 92 /** 93 * Sets the md5 hash for one or multiple files 94 * 95 * @param string|array $options 96 * @param string $algorithm (Deprecated) Algorithm to use, fixed to md5 97 * @return Zend_Validate_File_Hash Provides a fluent interface 98 */ 99 public function setHash($options) 100 { 101 if (!is_array($options)) { 102 $options = (array) $options; 103 } 104 105 $options['algorithm'] = 'md5'; 106 parent::setHash($options); 107 return $this; 108 } 109 110 /** 111 * Sets the md5 hash for one or multiple files 112 * 113 * @param string|array $options 114 * @return Zend_Validate_File_Hash Provides a fluent interface 115 */ 116 public function setMd5($options) 117 { 118 $this->setHash($options); 119 return $this; 120 } 121 122 /** 123 * Adds the md5 hash for one or multiple files 124 * 125 * @param string|array $options 126 * @param string $algorithm (Deprecated) Algorithm to use, fixed to md5 127 * @return Zend_Validate_File_Hash Provides a fluent interface 128 */ 129 public function addHash($options) 130 { 131 if (!is_array($options)) { 132 $options = (array) $options; 133 } 134 135 $options['algorithm'] = 'md5'; 136 parent::addHash($options); 137 return $this; 138 } 139 140 /** 141 * Adds the md5 hash for one or multiple files 142 * 143 * @param string|array $options 144 * @return Zend_Validate_File_Hash Provides a fluent interface 145 */ 146 public function addMd5($options) 147 { 148 $this->addHash($options); 149 return $this; 150 } 151 152 /** 153 * Defined by Zend_Validate_Interface 154 * 155 * Returns true if and only if the given file confirms the set hash 156 * 157 * @param string $value Filename to check for hash 158 * @param array $file File data from Zend_File_Transfer 159 * @return boolean 160 */ 161 public function isValid($value, $file = null) 162 { 163 // Is file readable ? 164 require_once 'Zend/Loader.php'; 165 if (!Zend_Loader::isReadable($value)) { 166 return $this->_throw($file, self::NOT_FOUND); 167 } 168 169 $hashes = array_unique(array_keys($this->_hash)); 170 $filehash = hash_file('md5', $value); 171 if ($filehash === false) { 172 return $this->_throw($file, self::NOT_DETECTED); 173 } 174 175 foreach($hashes as $hash) { 176 if ($filehash === $hash) { 177 return true; 178 } 179 } 180 181 return $this->_throw($file, self::DOES_NOT_MATCH); 182 } 183 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:29:05 2014 | Cross-referenced by PHPXref 0.7.1 |