Diff: STRATO-apps/wordpress_03/app/wp-includes/pomo/streams.php
Keine Baseline-Datei – Diff nur gegen leer.
1
-
1
+
<?php
2
+
/**
3
+
* Classes, which help reading streams of data from files.
4
+
* Based on the classes from Danilo Segan <danilo@kvota.net>
5
+
*
6
+
* @version $Id: streams.php 1157 2015-11-20 04:30:11Z dd32 $
7
+
* @package pomo
8
+
* @subpackage streams
9
+
*/
10
+
11
+
if ( ! class_exists( 'POMO_Reader', false ) ) :
12
+
#[AllowDynamicProperties]
13
+
class POMO_Reader {
14
+
15
+
public $endian = 'little';
16
+
public $_pos;
17
+
public $is_overloaded;
18
+
19
+
/**
20
+
* PHP5 constructor.
21
+
*/
22
+
public function __construct() {
23
+
if ( function_exists( 'mb_substr' )
24
+
&& ( (int) ini_get( 'mbstring.func_overload' ) & 2 ) // phpcs:ignore PHPCompatibility.IniDirectives.RemovedIniDirectives.mbstring_func_overloadDeprecated
25
+
) {
26
+
$this->is_overloaded = true;
27
+
} else {
28
+
$this->is_overloaded = false;
29
+
}
30
+
31
+
$this->_pos = 0;
32
+
}
33
+
34
+
/**
35
+
* PHP4 constructor.
36
+
*
37
+
* @deprecated 5.4.0 Use __construct() instead.
38
+
*
39
+
* @see POMO_Reader::__construct()
40
+
*/
41
+
public function POMO_Reader() {
42
+
_deprecated_constructor( self::class, '5.4.0', static::class );
43
+
self::__construct();
44
+
}
45
+
46
+
/**
47
+
* Sets the endianness of the file.
48
+
*
49
+
* @param string $endian Set the endianness of the file. Accepts 'big', or 'little'.
50
+
*/
51
+
public function setEndian( $endian ) { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid
52
+
$this->endian = $endian;
53
+
}
54
+
55
+
/**
56
+
* Reads a 32bit Integer from the Stream
57
+
*
58
+
* @return mixed The integer, corresponding to the next 32 bits from
59
+
* the stream of false if there are not enough bytes or on error
60
+
*/
61
+
public function readint32() {
62
+
$bytes = $this->read( 4 );
63
+
if ( 4 !== $this->strlen( $bytes ) ) {
64
+
return false;
65
+
}
66
+
$endian_letter = ( 'big' === $this->endian ) ? 'N' : 'V';
67
+
$int = unpack( $endian_letter, $bytes );
68
+
return reset( $int );
69
+
}
70
+
71
+
/**
72
+
* Reads an array of 32-bit Integers from the Stream
73
+
*
74
+
* @param int $count How many elements should be read
75
+
* @return mixed Array of integers or false if there isn't
76
+
* enough data or on error
77
+
*/
78
+
public function readint32array( $count ) {
79
+
$bytes = $this->read( 4 * $count );
80
+
if ( 4 * $count !== $this->strlen( $bytes ) ) {
81
+
return false;
82
+
}
83
+
$endian_letter = ( 'big' === $this->endian ) ? 'N' : 'V';
84
+
return unpack( $endian_letter . $count, $bytes );
85
+
}
86
+
87
+
/**
88
+
* @param string $input_string
89
+
* @param int $start
90
+
* @param int $length
91
+
* @return string
92
+
*/
93
+
public function substr( $input_string, $start, $length ) {
94
+
if ( $this->is_overloaded ) {
95
+
return mb_substr( $input_string, $start, $length, 'ascii' );
96
+
} else {
97
+
return substr( $input_string, $start, $length );
98
+
}
99
+
}
100
+
101
+
/**
102
+
* @param string $input_string
103
+
* @return int
104
+
*/
105
+
public function strlen( $input_string ) {
106
+
if ( $this->is_overloaded ) {
107
+
return mb_strlen( $input_string, 'ascii' );
108
+
} else {
109
+
return strlen( $input_string );
110
+
}
111
+
}
112
+
113
+
/**
114
+
* @param string $input_string
115
+
* @param int $chunk_size
116
+
* @return array
117
+
*/
118
+
public function str_split( $input_string, $chunk_size ) {
119
+
if ( ! function_exists( 'str_split' ) ) {
120
+
$length = $this->strlen( $input_string );
121
+
$out = array();
122
+
for ( $i = 0; $i < $length; $i += $chunk_size ) {
123
+
$out[] = $this->substr( $input_string, $i, $chunk_size );
124
+
}
125
+
return $out;
126
+
} else {
127
+
return str_split( $input_string, $chunk_size );
128
+
}
129
+
}
130
+
131
+
/**
132
+
* @return int
133
+
*/
134
+
public function pos() {
135
+
return $this->_pos;
136
+
}
137
+
138
+
/**
139
+
* @return true
140
+
*/
141
+
public function is_resource() {
142
+
return true;
143
+
}
144
+
145
+
/**
146
+
* @return true
147
+
*/
148
+
public function close() {
149
+
return true;
150
+
}
151
+
}
152
+
endif;
153
+
154
+
if ( ! class_exists( 'POMO_FileReader', false ) ) :
155
+
class POMO_FileReader extends POMO_Reader {
156
+
157
+
/**
158
+
* File pointer resource.
159
+
*
160
+
* @var resource|false
161
+
*/
162
+
public $_f;
163
+
164
+
/**
165
+
* @param string $filename
166
+
*/
167
+
public function __construct( $filename ) {
168
+
parent::__construct();
169
+
$this->_f = fopen( $filename, 'rb' );
170
+
}
171
+
172
+
/**
173
+
* PHP4 constructor.
174
+
*
175
+
* @deprecated 5.4.0 Use __construct() instead.
176
+
*
177
+
* @see POMO_FileReader::__construct()
178
+
*/
179
+
public function POMO_FileReader( $filename ) {
180
+
_deprecated_constructor( self::class, '5.4.0', static::class );
181
+
self::__construct( $filename );
182
+
}
183
+
184
+
/**
185
+
* @param int $bytes
186
+
* @return string|false Returns read string, otherwise false.
187
+
*/
188
+
public function read( $bytes ) {
189
+
return fread( $this->_f, $bytes );
190
+
}
191
+
192
+
/**
193
+
* @param int $pos
194
+
* @return bool
195
+
*/
196
+
public function seekto( $pos ) {
197
+
if ( -1 === fseek( $this->_f, $pos, SEEK_SET ) ) {
198
+
return false;
199
+
}
200
+
$this->_pos = $pos;
201
+
return true;
202
+
}
203
+
204
+
/**
205
+
* @return bool
206
+
*/
207
+
public function is_resource() {
208
+
return is_resource( $this->_f );
209
+
}
210
+
211
+
/**
212
+
* @return bool
213
+
*/
214
+
public function feof() {
215
+
return feof( $this->_f );
216
+
}
217
+
218
+
/**
219
+
* @return bool
220
+
*/
221
+
public function close() {
222
+
return fclose( $this->_f );
223
+
}
224
+
225
+
/**
226
+
* @return string
227
+
*/
228
+
public function read_all() {
229
+
return stream_get_contents( $this->_f );
230
+
}
231
+
}
232
+
endif;
233
+
234
+
if ( ! class_exists( 'POMO_StringReader', false ) ) :
235
+
/**
236
+
* Provides file-like methods for manipulating a string instead
237
+
* of a physical file.
238
+
*/
239
+
class POMO_StringReader extends POMO_Reader {
240
+
241
+
public $_str = '';
242
+
243
+
/**
244
+
* PHP5 constructor.
245
+
*/
246
+
public function __construct( $str = '' ) {
247
+
parent::__construct();
248
+
$this->_str = $str;
249
+
$this->_pos = 0;
250
+
}
251
+
252
+
/**
253
+
* PHP4 constructor.
254
+
*
255
+
* @deprecated 5.4.0 Use __construct() instead.
256
+
*
257
+
* @see POMO_StringReader::__construct()
258
+
*/
259
+
public function POMO_StringReader( $str = '' ) {
260
+
_deprecated_constructor( self::class, '5.4.0', static::class );
261
+
self::__construct( $str );
262
+
}
263
+
264
+
/**
265
+
* @param string $bytes
266
+
* @return string
267
+
*/
268
+
public function read( $bytes ) {
269
+
$data = $this->substr( $this->_str, $this->_pos, $bytes );
270
+
$this->_pos += $bytes;
271
+
if ( $this->strlen( $this->_str ) < $this->_pos ) {
272
+
$this->_pos = $this->strlen( $this->_str );
273
+
}
274
+
return $data;
275
+
}
276
+
277
+
/**
278
+
* @param int $pos
279
+
* @return int
280
+
*/
281
+
public function seekto( $pos ) {
282
+
$this->_pos = $pos;
283
+
if ( $this->strlen( $this->_str ) < $this->_pos ) {
284
+
$this->_pos = $this->strlen( $this->_str );
285
+
}
286
+
return $this->_pos;
287
+
}
288
+
289
+
/**
290
+
* @return int
291
+
*/
292
+
public function length() {
293
+
return $this->strlen( $this->_str );
294
+
}
295
+
296
+
/**
297
+
* @return string
298
+
*/
299
+
public function read_all() {
300
+
return $this->substr( $this->_str, $this->_pos, $this->strlen( $this->_str ) );
301
+
}
302
+
}
303
+
endif;
304
+
305
+
if ( ! class_exists( 'POMO_CachedFileReader', false ) ) :
306
+
/**
307
+
* Reads the contents of the file in the beginning.
308
+
*/
309
+
class POMO_CachedFileReader extends POMO_StringReader {
310
+
/**
311
+
* PHP5 constructor.
312
+
*/
313
+
public function __construct( $filename ) {
314
+
parent::__construct();
315
+
$this->_str = file_get_contents( $filename );
316
+
if ( false === $this->_str ) {
317
+
return false;
318
+
}
319
+
$this->_pos = 0;
320
+
}
321
+
322
+
/**
323
+
* PHP4 constructor.
324
+
*
325
+
* @deprecated 5.4.0 Use __construct() instead.
326
+
*
327
+
* @see POMO_CachedFileReader::__construct()
328
+
*/
329
+
public function POMO_CachedFileReader( $filename ) {
330
+
_deprecated_constructor( self::class, '5.4.0', static::class );
331
+
self::__construct( $filename );
332
+
}
333
+
}
334
+
endif;
335
+
336
+
if ( ! class_exists( 'POMO_CachedIntFileReader', false ) ) :
337
+
/**
338
+
* Reads the contents of the file in the beginning.
339
+
*/
340
+
class POMO_CachedIntFileReader extends POMO_CachedFileReader {
341
+
/**
342
+
* PHP5 constructor.
343
+
*/
344
+
public function __construct( $filename ) {
345
+
parent::__construct( $filename );
346
+
}
347
+
348
+
/**
349
+
* PHP4 constructor.
350
+
*
351
+
* @deprecated 5.4.0 Use __construct() instead.
352
+
*
353
+
* @see POMO_CachedIntFileReader::__construct()
354
+
*/
355
+
public function POMO_CachedIntFileReader( $filename ) {
356
+
_deprecated_constructor( self::class, '5.4.0', static::class );
357
+
self::__construct( $filename );
358
+
}
359
+
}
360
+
endif;
361
+