PluginProbe ʕ •ᴥ•ʔ
Matomo Analytics – Powerful, Privacy-First Insights for WordPress / 1.3.1
Matomo Analytics – Powerful, Privacy-First Insights for WordPress v1.3.1
5.11.1 5.11.0 5.10.2 5.10.1 trunk 1.0.2 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.3.0 1.3.1 1.3.2 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.1.0 4.1.1 4.1.2 4.1.3 4.10.0 4.11.0 4.12.0 4.13.0 4.13.2 4.13.3 4.13.4 4.13.5 4.14.0 4.14.1 4.14.2 4.15.0 4.15.1 4.15.2 4.15.3 4.2.0 4.3.0 4.3.1 4.4.1 4.4.2 4.5.0 4.6.0 5.0.1 5.0.2 5.0.3 5.0.4 5.0.5 5.0.6 5.0.7 5.0.8 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.10.0 5.2.0 5.2.1 5.2.2 5.3.0 5.3.1 5.3.2 5.3.3 5.6.0 5.6.1 5.7.0 5.7.1 5.8.0 5.8.1 5.8.2
matomo / app / libs / Zend / Validate / File / Hash.php
matomo / app / libs / Zend / Validate / File Last commit date
Count.php 6 years ago Crc32.php 6 years ago ExcludeExtension.php 6 years ago ExcludeMimeType.php 6 years ago Exists.php 6 years ago Extension.php 6 years ago FilesSize.php 6 years ago Hash.php 6 years ago ImageSize.php 6 years ago IsCompressed.php 6 years ago IsImage.php 6 years ago Md5.php 6 years ago MimeType.php 6 years ago NotExists.php 6 years ago Sha1.php 6 years ago Size.php 6 years ago Upload.php 6 years ago WordCount.php 6 years ago
Hash.php
195 lines
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: Hash.php 23775 2011-03-01 17:25:24Z ralph $
20 */
21
22 /**
23 * @see Zend_Validate_Abstract
24 */
25 // require_once 'Zend/Validate/Abstract.php';
26
27 /**
28 * Validator for the hash of given files
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 */
35 class Zend_Validate_File_Hash extends Zend_Validate_Abstract
36 {
37 /**
38 * @const string Error constants
39 */
40 const DOES_NOT_MATCH = 'fileHashDoesNotMatch';
41 const NOT_DETECTED = 'fileHashHashNotDetected';
42 const NOT_FOUND = 'fileHashNotFound';
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 hashes",
49 self::NOT_DETECTED => "A hash could not be evaluated for the given file",
50 self::NOT_FOUND => "File '%value%' is not readable or does not exist"
51 );
52
53 /**
54 * Hash of the file
55 *
56 * @var string
57 */
58 protected $_hash;
59
60 /**
61 * Sets validator options
62 *
63 * @param string|array $options
64 * @return void
65 */
66 public function __construct($options)
67 {
68 if ($options instanceof Zend_Config) {
69 $options = $options->toArray();
70 } elseif (is_scalar($options)) {
71 $options = array('hash1' => $options);
72 } elseif (!is_array($options)) {
73 // require_once 'Zend/Validate/Exception.php';
74 throw new Zend_Validate_Exception('Invalid options to validator provided');
75 }
76
77 if (1 < func_num_args()) {
78 $options['algorithm'] = func_get_arg(1);
79 }
80
81 $this->setHash($options);
82 }
83
84 /**
85 * Returns the set hash values as array, the hash as key and the algorithm the value
86 *
87 * @return array
88 */
89 public function getHash()
90 {
91 return $this->_hash;
92 }
93
94 /**
95 * Sets the hash for one or multiple files
96 *
97 * @param string|array $options
98 * @return Zend_Validate_File_Hash Provides a fluent interface
99 */
100 public function setHash($options)
101 {
102 $this->_hash = null;
103 $this->addHash($options);
104
105 return $this;
106 }
107
108 /**
109 * Adds the hash for one or multiple files
110 *
111 * @param string|array $options
112 * @return Zend_Validate_File_Hash Provides a fluent interface
113 */
114 public function addHash($options)
115 {
116 if (is_string($options)) {
117 $options = array($options);
118 } else if (!is_array($options)) {
119 // require_once 'Zend/Validate/Exception.php';
120 throw new Zend_Validate_Exception("False parameter given");
121 }
122
123 $known = hash_algos();
124 if (!isset($options['algorithm'])) {
125 $algorithm = 'crc32';
126 } else {
127 $algorithm = $options['algorithm'];
128 unset($options['algorithm']);
129 }
130
131 if (!in_array($algorithm, $known)) {
132 // require_once 'Zend/Validate/Exception.php';
133 throw new Zend_Validate_Exception("Unknown algorithm '{$algorithm}'");
134 }
135
136 foreach ($options as $value) {
137 $this->_hash[$value] = $algorithm;
138 }
139
140 return $this;
141 }
142
143 /**
144 * Defined by Zend_Validate_Interface
145 *
146 * Returns true if and only if the given file confirms the set hash
147 *
148 * @param string $value Filename to check for hash
149 * @param array $file File data from Zend_File_Transfer
150 * @return boolean
151 */
152 public function isValid($value, $file = null)
153 {
154 // Is file readable ?
155 // require_once 'Zend/Loader.php';
156 if (!Zend_Loader::isReadable($value)) {
157 return $this->_throw($file, self::NOT_FOUND);
158 }
159
160 $algos = array_unique(array_values($this->_hash));
161 $hashes = array_unique(array_keys($this->_hash));
162 foreach ($algos as $algorithm) {
163 $filehash = hash_file($algorithm, $value);
164 if ($filehash === false) {
165 return $this->_throw($file, self::NOT_DETECTED);
166 }
167
168 foreach($hashes as $hash) {
169 if ($filehash === $hash) {
170 return true;
171 }
172 }
173 }
174
175 return $this->_throw($file, self::DOES_NOT_MATCH);
176 }
177
178 /**
179 * Throws an error of the given type
180 *
181 * @param string $file
182 * @param string $errorType
183 * @return false
184 */
185 protected function _throw($file, $errorType)
186 {
187 if ($file !== null) {
188 $this->_value = $file['name'];
189 }
190
191 $this->_error($errorType);
192 return false;
193 }
194 }
195