Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.2.x will end 22 April 2024 (12 months).
  • Bug fixes for security issues in 4.2.x will end 7 October 2024 (18 months).
  • PHP version: minimum PHP 8.0.0 Note: minimum PHP version has increased since Moodle 4.1. PHP 8.1.x is supported too.
   1  <?php
   2  
   3  declare(strict_types=1);
   4  
   5  namespace GuzzleHttp\Psr7;
   6  
   7  use Psr\Http\Message\UriInterface;
   8  
   9  /**
  10   * Provides methods to determine if a modified URL should be considered cross-origin.
  11   *
  12   * @author Graham Campbell
  13   */
  14  final class UriComparator
  15  {
  16      /**
  17       * Determines if a modified URL should be considered cross-origin with
  18       * respect to an original URL.
  19       */
  20      public static function isCrossOrigin(UriInterface $original, UriInterface $modified): bool
  21      {
  22          if (\strcasecmp($original->getHost(), $modified->getHost()) !== 0) {
  23              return true;
  24          }
  25  
  26          if ($original->getScheme() !== $modified->getScheme()) {
  27              return true;
  28          }
  29  
  30          if (self::computePort($original) !== self::computePort($modified)) {
  31              return true;
  32          }
  33  
  34          return false;
  35      }
  36  
  37      private static function computePort(UriInterface $uri): int
  38      {
  39          $port = $uri->getPort();
  40  
  41          if (null !== $port) {
  42              return $port;
  43          }
  44  
  45          return 'https' === $uri->getScheme() ? 443 : 80;
  46      }
  47  
  48      private function __construct()
  49      {
  50          // cannot be instantiated
  51      }
  52  }