2023-01-23 11:03:31 +01:00

103 lines
3.6 KiB
PHP

<?php
/**
* Class AMP_WP_Utils
*
* @package AMP
*/
/**
* Class with static WordPress utility methods.
*
* @since 0.5
*
* @deprecated 0.7 As WordPress 4.7 is our minimum supported version.
*/
class AMP_WP_Utils {
/**
* The core function wp_parse_url in < WordPress 4.7 does not respect the component arg. This helper lets us use it.
*
* Don't use.
*
* @deprecated 0.7 wp_parse_url() is now used instead.
*
* @param string $url The raw URL. Can be false if the URL failed to parse.
* @param int $component The specific component to retrieve. Use one of the PHP
* predefined constants to specify which one.
* Defaults to -1 (= return all parts as an array).
* @return mixed False on parse failure; Array of URL components on success;
* When a specific component has been requested: null if the component
* doesn't exist in the given URL; a string or - in the case of
* PHP_URL_PORT - integer when it does. See parse_url()'s return values.
*/
public static function parse_url( $url, $component = -1 ) {
_deprecated_function( __METHOD__, '0.7', 'wp_parse_url' );
$parsed = wp_parse_url( $url, $component );
// Because < 4.7 always returned a full array regardless of component.
if ( -1 !== $component && is_array( $parsed ) ) {
return self::_get_component_from_parsed_url_array( $parsed, $component );
}
return $parsed;
}
/**
* Included for 4.6 back-compat
*
* Copied from https://developer.wordpress.org/reference/functions/_get_component_from_parsed_url_array/
*
* @deprecated 0.7
*
* @param array|false $url_parts The parsed URL. Can be false if the URL failed to parse.
* @param int $component The specific component to retrieve. Use one of the PHP
* predefined constants to specify which one.
* Defaults to -1 (= return all parts as an array).
* @return mixed False on parse failure; Array of URL components on success;
* When a specific component has been requested: null if the component
* doesn't exist in the given URL; a string or - in the case of
* PHP_URL_PORT - integer when it does. See parse_url()'s return values.
*/
protected static function _get_component_from_parsed_url_array( $url_parts, $component = -1 ) { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore
if ( -1 === $component ) {
return $url_parts;
}
$key = self::_wp_translate_php_url_constant_to_key( $component );
if ( false !== $key && is_array( $url_parts ) && isset( $url_parts[ $key ] ) ) {
return $url_parts[ $key ];
}
return null;
}
/**
* Included for 4.6 back-compat
*
* Copied from https://developer.wordpress.org/reference/functions/_wp_translate_php_url_constant_to_key/
*
* @param int $constant The specific component to retrieve. Use one of the PHP
* predefined constants to specify which one.
* @return mixed False if component not found. string or integer if found.
*
* @deprecated 0.7
*/
protected static function _wp_translate_php_url_constant_to_key( $constant ) { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore
$translation = array(
PHP_URL_SCHEME => 'scheme',
PHP_URL_HOST => 'host',
PHP_URL_PORT => 'port',
PHP_URL_USER => 'user',
PHP_URL_PASS => 'pass',
PHP_URL_PATH => 'path',
PHP_URL_QUERY => 'query',
PHP_URL_FRAGMENT => 'fragment',
);
if ( isset( $translation[ $constant ] ) ) {
return $translation[ $constant ];
}
return false;
}
}