PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.1-beta
Jetpack – WP Security, Backup, Speed, & Growth v16.1-beta
16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / vendor / wp-php-toolkit / bytestream / ReadStream / class-transformedreadstream.php
jetpack / vendor / wp-php-toolkit / bytestream / ReadStream Last commit date
class-basebytereadstream.php 1 week ago class-deflatereadstream.php 1 week ago class-filereadstream.php 1 week ago class-inflatereadstream.php 1 week ago class-limitedbytereadstream.php 1 week ago class-transformedreadstream.php 1 week ago interface-bytereadstream.php 1 week ago
class-transformedreadstream.php
125 lines
1 <?php
2
3 namespace WordPress\ByteStream\ReadStream;
4
5 use ArrayAccess;
6 use ReturnTypeWillChange;
7 use WordPress\ByteStream\ByteStreamException;
8 use WordPress\ByteStream\ByteTransformer\ByteTransformer;
9
10 class TransformedReadStream extends BaseByteReadStream implements ArrayAccess {
11
12 /**
13 * @var ByteReadStream
14 */
15 private $reader;
16
17 /**
18 * @var ByteTransformer[]
19 */
20 private $filters = array();
21
22 private $filters_flushed = false;
23
24 public function __construct( ByteReadStream $reader, array $filters = array() ) {
25 $this->reader = $reader;
26 $this->filters = $filters;
27 }
28
29 public function get_upstream_reader(): ByteReadStream {
30 return $this->reader;
31 }
32
33 protected function internal_pull( $max_bytes ): string {
34 $bytes_pulled = $this->reader->pull( $max_bytes );
35 if ( 0 === $bytes_pulled ) {
36 if ( $this->reader->reached_end_of_data() && ! $this->filters_flushed ) {
37 return $this->flush_filters();
38 }
39
40 return '';
41 }
42
43 $chunk = $this->reader->consume( $bytes_pulled );
44 foreach ( $this->filters as $filter ) {
45 $chunk = $filter->filter_bytes( $chunk );
46 if ( false === $chunk ) {
47 return '';
48 }
49 }
50
51 return $chunk;
52 }
53
54 private function flush_filters(): string {
55 $this->filters_flushed = true;
56
57 $flush = '';
58 foreach ( $this->filters as $filter ) {
59 $flush = $filter->filter_bytes( $flush );
60 $flush .= $filter->flush();
61 }
62
63 return $flush;
64 }
65
66 /**
67 *
68 * @param string $offset The offset to get.
69 * @throws ByteStreamException If the filter is not found.
70 */
71 #[ReturnTypeWillChange]
72 public function offsetGet( $offset ) {
73 if ( ! isset( $this->filters[ $offset ] ) ) {
74 throw new ByteStreamException( esc_html( sprintf( 'Filter %s not found', $offset ) ) );
75 }
76
77 return $this->filters[ $offset ];
78 }
79
80 /**
81 *
82 * @param string $offset The offset to check.
83 * @return bool Whether the filter exists.
84 */
85 #[ReturnTypeWillChange]
86 public function offsetExists( $offset ) {
87 return isset( $this->filters[ $offset ] );
88 }
89
90 /**
91 * @param string $offset The offset to set.
92 * @param ByteTransformer $value The filter to set.
93 * @throws ByteStreamException If the filters are immutable.
94 */
95 #[ReturnTypeWillChange]
96 public function offsetSet( $offset, $value ) {
97 throw new ByteStreamException( 'Filters are immutable' );
98 }
99
100 /**
101 * @param string $offset The offset to unset.
102 * @throws ByteStreamException If the filters are immutable.
103 */
104 #[ReturnTypeWillChange]
105 public function offsetUnset( $offset ) {
106 throw new ByteStreamException( 'Filters are immutable' );
107 }
108
109 public function length(): ?int {
110 return null;
111 }
112
113 protected function internal_reached_end_of_data(): bool {
114 return $this->filters_flushed;
115 }
116
117 protected function seek_outside_of_buffer( int $target_offset ): void {
118 throw new ByteStreamException( 'Seek is not supported on TransformedProducer' );
119 }
120
121 protected function internal_close_reading(): void {
122 $this->filters_flushed = true;
123 }
124 }
125