Make WordPress Core

Ticket #65448: 65448.2.diff

File 65448.2.diff, 1.6 KB (added by zodiac1978, 7 weeks ago)

Fix relative paths to be more backwards compatible

  • src/wp-includes/http.php

     
    750750                $url        = 'placeholder://placeholder' . $url;
    751751        }
    752752
    753         $parts = parse_url( $url );
     753        /*
     754         * PHP 8.5+: Prefer the WHATWG URL parser.
     755         */
     756        if ( class_exists( 'Uri\\WhatWg\\Url' ) ) {
     757                $parsed = \Uri\WhatWg\Url::parse( $url );
    754758
    755         if ( false === $parts ) {
    756                 // Parsing failure.
    757                 return $parts;
     759                if ( null === $parsed ) {
     760                        return false;
     761                }
     762
     763                $parts = array();
     764
     765                $scheme = $parsed->getScheme();
     766                if ( null !== $scheme ) {
     767                        $parts['scheme'] = $scheme;
     768                }
     769
     770                $host = $parsed->getAsciiHost();
     771                if ( null !== $host ) {
     772                        $parts['host'] = $host;
     773                }
     774
     775                $port = $parsed->getPort();
     776                if ( null !== $port ) {
     777                        $parts['port'] = $port;
     778                }
     779
     780                $user = $parsed->getUsername();
     781                if ( null !== $user ) {
     782                        $parts['user'] = $user;
     783                }
     784
     785                $pass = $parsed->getPassword();
     786                if ( null !== $pass ) {
     787                        $parts['pass'] = $pass;
     788                }
     789
     790                $path = $parsed->getPath();
     791                if ( '' !== $path ) {
     792                        $parts['path'] = $path;
     793                }
     794
     795                $query = $parsed->getQuery();
     796                if ( null !== $query ) {
     797                        $parts['query'] = $query;
     798                }
     799
     800                $fragment = $parsed->getFragment();
     801                if ( null !== $fragment ) {
     802                        $parts['fragment'] = $fragment;
     803                }
     804        } else {
     805                $parts = parse_url( $url );
     806
     807                if ( false === $parts ) {
     808                        return false;
     809                }
    758810        }
    759811
    760         // Remove the placeholder values.
    761812        foreach ( $to_unset as $key ) {
    762813                unset( $parts[ $key ] );
    763814        }