Verzeichnisstruktur phpBB-3.3.15


Veröffentlicht
28.08.2024

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

InflateStream.php

Zuletzt modifiziert: 02.04.2025, 15:03 - Dateigröße: 1.80 KiB


01  <?php
02   
03  namespace GuzzleHttp\Psr7;
04   
05  use Psr\Http\Message\StreamInterface;
06   
07  /**
08   * Uses PHP's zlib.inflate filter to inflate deflate or gzipped content.
09   *
10   * This stream decorator skips the first 10 bytes of the given stream to remove
11   * the gzip header, converts the provided stream to a PHP stream resource,
12   * then appends the zlib.inflate filter. The stream is then converted back
13   * to a Guzzle stream resource to be used as a Guzzle stream.
14   *
15   * @link http://tools.ietf.org/html/rfc1952
16   * @link http://php.net/manual/en/filters.compression.php
17   *
18   * @final
19   */
20  class InflateStream implements StreamInterface
21  {
22      use StreamDecoratorTrait;
23   
24      public function __construct(StreamInterface $stream)
25      {
26          // read the first 10 bytes, ie. gzip header
27          $header = $stream->read(10);
28          $filenameHeaderLength = $this->getLengthOfPossibleFilenameHeader($stream, $header);
29          // Skip the header, that is 10 + length of filename + 1 (nil) bytes
30          $stream = new LimitStream($stream, -1, 10 + $filenameHeaderLength);
31          $resource = StreamWrapper::getResource($stream);
32          stream_filter_append($resource, 'zlib.inflate', STREAM_FILTER_READ);
33          $this->stream = $stream->isSeekable() ? new Stream($resource) : new NoSeekStream(new Stream($resource));
34      }
35   
36      /**
37       * @param StreamInterface $stream
38       * @param $header
39       *
40       * @return int
41       */
42      private function getLengthOfPossibleFilenameHeader(StreamInterface $stream, $header)
43      {
44          $filename_header_length = 0;
45   
46          if (substr(bin2hex($header), 6, 2) === '08') {
47              // we have a filename, read until nil
48              $filename_header_length = 1;
49              while ($stream->read(1) !== chr(0)) {
50                  $filename_header_length++;
51              }
52          }
53   
54          return $filename_header_length;
55      }
56  }
57