Verzeichnisstruktur phpBB-3.2.0


Veröffentlicht
06.01.2017

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

UriFactory.php

Zuletzt modifiziert: 09.10.2024, 12:59 - Dateigröße: 4.20 KiB


 001  <?php
 002   
 003  namespace OAuth\Common\Http\Uri;
 004   
 005  use RuntimeException;
 006   
 007  /**
 008   * Factory class for uniform resource indicators
 009   */
 010  class UriFactory implements UriFactoryInterface
 011  {
 012      /**
 013       * Factory method to build a URI from a super-global $_SERVER array.
 014       *
 015       * @param array $_server
 016       *
 017       * @return UriInterface
 018       */
 019      public function createFromSuperGlobalArray(array $_server)
 020      {
 021          if ($uri = $this->attemptProxyStyleParse($_server)) {
 022              return $uri;
 023          }
 024   
 025          $scheme = $this->detectScheme($_server);
 026          $host = $this->detectHost($_server);
 027          $port = $this->detectPort($_server);
 028          $path = $this->detectPath($_server);
 029          $query = $this->detectQuery($_server);
 030   
 031          return $this->createFromParts($scheme, '', $host, $port, $path, $query);
 032      }
 033   
 034      /**
 035       * @param string $absoluteUri
 036       *
 037       * @return UriInterface
 038       */
 039      public function createFromAbsolute($absoluteUri)
 040      {
 041          return new Uri($absoluteUri);
 042      }
 043   
 044      /**
 045       * Factory method to build a URI from parts
 046       *
 047       * @param string $scheme
 048       * @param string $userInfo
 049       * @param string $host
 050       * @param string $port
 051       * @param string $path
 052       * @param string $query
 053       * @param string $fragment
 054       *
 055       * @return UriInterface
 056       */
 057      public function createFromParts($scheme, $userInfo, $host, $port, $path = '', $query = '', $fragment = '')
 058      {
 059          $uri = new Uri();
 060          $uri->setScheme($scheme);
 061          $uri->setUserInfo($userInfo);
 062          $uri->setHost($host);
 063          $uri->setPort($port);
 064          $uri->setPath($path);
 065          $uri->setQuery($query);
 066          $uri->setFragment($fragment);
 067   
 068          return $uri;
 069      }
 070   
 071      /**
 072       * @param array $_server
 073       *
 074       * @return UriInterface|null
 075       */
 076      private function attemptProxyStyleParse($_server)
 077      {
 078          // If the raw HTTP request message arrives with a proxy-style absolute URI in the
 079          // initial request line, the absolute URI is stored in $_SERVER['REQUEST_URI'] and
 080          // we only need to parse that.
 081          if (isset($_server['REQUEST_URI']) && parse_url($_server['REQUEST_URI'], PHP_URL_SCHEME)) {
 082              return new Uri($_server['REQUEST_URI']);
 083          }
 084   
 085          return null;
 086      }
 087   
 088      /**
 089       * @param array $_server
 090       *
 091       * @return string
 092       *
 093       * @throws RuntimeException
 094       */
 095      private function detectPath($_server)
 096      {
 097          if (isset($_server['REQUEST_URI'])) {
 098              $uri = $_server['REQUEST_URI'];
 099          } elseif (isset($_server['REDIRECT_URL'])) {
 100              $uri = $_server['REDIRECT_URL'];
 101          } else {
 102              throw new RuntimeException('Could not detect URI path from superglobal');
 103          }
 104   
 105          $queryStr = strpos($uri, '?');
 106          if ($queryStr !== false) {
 107              $uri = substr($uri, 0, $queryStr);
 108          }
 109   
 110          return $uri;
 111      }
 112   
 113      /**
 114       * @param array $_server
 115       *
 116       * @return string
 117       */
 118      private function detectHost(array $_server)
 119      {
 120          $host = isset($_server['HTTP_HOST']) ? $_server['HTTP_HOST'] : '';
 121   
 122          if (strstr($host, ':')) {
 123              $host = parse_url($host, PHP_URL_HOST);
 124          }
 125   
 126          return $host;
 127      }
 128   
 129      /**
 130       * @param array $_server
 131       *
 132       * @return string
 133       */
 134      private function detectPort(array $_server)
 135      {
 136          return isset($_server['SERVER_PORT']) ? $_server['SERVER_PORT'] : 80;
 137      }
 138   
 139      /**
 140       * @param array $_server
 141       *
 142       * @return string
 143       */
 144      private function detectQuery(array $_server)
 145      {
 146          return isset($_server['QUERY_STRING']) ? $_server['QUERY_STRING'] : '';
 147      }
 148   
 149      /**
 150       * Determine URI scheme component from superglobal array
 151       *
 152       * When using ISAPI with IIS, the value will be "off" if the request was
 153       * not made through the HTTPS protocol. As a result, we filter the
 154       * value to a bool.
 155       *
 156       * @param array $_server A super-global $_SERVER array
 157       *
 158       * @return string Returns http or https depending on the URI scheme
 159       */
 160      private function detectScheme(array $_server)
 161      {
 162          if (isset($_server['HTTPS']) && filter_var($_server['HTTPS'], FILTER_VALIDATE_BOOLEAN)) {
 163              return 'https';
 164          } else {
 165              return 'http';
 166          }
 167      }
 168  }
 169