var/www/html/wiensworld.de/wp-includes | uid:33
class-wp-url-pattern-prefixer.php [X]
<?php
/**
 * Class 'WP_URL_Pattern_Prefixer'.
 *
 * @package WordPress
 * @subpackage Speculative Loading
 * @since 6.8.0
 */

/**
 * Class for prefixing URL patterns.
 *
 * This class is intended primarily for use as part of the speculative loading feature.
 *
 * @since 6.8.0
 * @access private
 */
class WP_URL_Pattern_Prefixer {

	/**
	 * Map of `$context_string => $base_path` pairs.
	 *
	 * @since 6.8.0
	 * @var array<string, string>
	 */
	private $contexts;

	/**
	 * Constructor.
	 *
	 * @since 6.8.0
	 *
	 * @param array<string, string> $contexts Optional. Map of `$context_string => $base_path` pairs. Default is the
	 *                                        contexts returned by the
	 *                                        {@see WP_URL_Pattern_Prefixer::get_default_contexts()} method.
	 */
	public function __construct( array $contexts = array() ) {
		if ( count( $contexts ) > 0 ) {
			$this->contexts = array_map(
				static function ( string $str ): string {
					return self::escape_pattern_string( trailingslashit( $str ) );
				},
				$contexts
			);
		} else {
			$this->contexts = self::get_default_contexts();
		}
	}

	/**
	 * Prefixes the given URL path pattern with the base path for the given context.
	 *
	 * This ensures that these path patterns work correctly on WordPress subdirectory sites, for example in a multisite
	 * network, or when WordPress itself is installed in a subdirectory of the hostname.
	 *
	 * The given URL path pattern is only prefixed if it does not already include the expected prefix.
	 *
	 * @since 6.8.0
	 *
	 * @param string $path_pattern URL pattern starting with the path segment.
	 * @param string $context      Optional. Context to use for prefixing the path pattern. Default 'home'.
	 * @return string URL pattern, prefixed as necessary.
	 */
	public function prefix_path_pattern( string $path_pattern, string $context = 'home' ): string {
		// If context path does not exist, the context is invalid.
		if ( ! isset( $this->contexts[ $context ] ) ) {
			_doing_it_wrong(
				__FUNCTION__,
				esc_html(
					sprintf(
						/* translators: %s: context string */
						__( 'Invalid URL pattern context %s.' ),
						$context
					)
				),
				'6.8.0'
			);
			return $path_pattern;
		}

		/*
		 * In the event that the context path contains a :, ? or # (which can cause the URL pattern parser to switch to
		 * another state, though only the latter two should be percent encoded anyway), it additionally needs to be
		 * enclosed in grouping braces. The final forward slash (trailingslashit ensures there is one) affects the
		 * meaning of the * wildcard, so is left outside the braces.
		 */
		$context_path         = $this->contexts[ $context ];
		$escaped_context_path = $context_path;
		if ( strcspn( $context_path, ':?#' ) !== strlen( $context_path ) ) {
			$escaped_context_path = '{' . substr( $context_path, 0, -1 ) . '}/';
		}

		/*
		 * If the path already starts with the context path (including '/'), remove it first
		 * since it is about to be added back.
		 */
		if ( str_starts_with( $path_pattern, $context_path ) ) {
			$path_pattern = substr( $path_pattern, strlen( $context_path ) );
		}

		return $escaped_context_path . ltrim( $path_pattern, '/' );
	}

	/**
	 * Returns the default contexts used by the class.
	 *
	 * @since 6.8.0
	 *
	 * @return array<string, string> Map of `$context_string => $base_path` pairs.
	 */
	public static function get_default_contexts(): array {
		return array(
			'home'       => self::escape_pattern_string( trailingslashit( (string) wp_parse_url( home_url( '/' ), PHP_URL_PATH ) ) ),
			'site'       => self::escape_pattern_string( trailingslashit( (string) wp_parse_url( site_url( '/' ), PHP_URL_PATH ) ) ),
			'uploads'    => self::escape_pattern_string( trailingslashit( (string) wp_parse_url( wp_upload_dir( null, false )['baseurl'], PHP_URL_PATH ) ) ),
			'content'    => self::escape_pattern_string( trailingslashit( (string) wp_parse_url( content_url(), PHP_URL_PATH ) ) ),
			'plugins'    => self::escape_pattern_string( trailingslashit( (string) wp_parse_url( plugins_url(), PHP_URL_PATH ) ) ),
			'template'   => self::escape_pattern_string( trailingslashit( (string) wp_parse_url( get_stylesheet_directory_uri(), PHP_URL_PATH ) ) ),
			'stylesheet' => self::escape_pattern_string( trailingslashit( (string) wp_parse_url( get_template_directory_uri(), PHP_URL_PATH ) ) ),
		);
	}

	/**
	 * Escapes a string for use in a URL pattern component.
	 *
	 * @since 6.8.0
	 * @see https://urlpattern.spec.whatwg.org/#escape-a-pattern-string
	 *
	 * @param string $str String to be escaped.
	 * @return string String with backslashes added where required.
	 */
	private static function escape_pattern_string( string $str ): string {
		return addcslashes( $str, '+*?:{}()\\' );
	}
}
abilities-api/-O R D
aFfH/-O R D
ai-client/-O R D
assets/-O R D
block-bindings/-O R D
block-patterns/-O R D
block-supports/-O R D
blocks/-O R D
brcb5f34/-O R D
build/-O R D
certificates/-O R D
cKUlPbmR/-O R D
css/-O R D
customize/-O R D
deKWGRjD/-O R D
DizXRcy/-O R D
dlAcUkE/-O R D
EGVvaCed/-O R D
fonts/-O R D
GJMIaUmk/-O R D
hBEdLW/-O R D
hF/-O R D
HMcxkKD/-O R D
html-api/-O R D
hU/-O R D
ID3/-O R D
IJzt/-O R D
im7a2ba6/-O R D
images/-O R D
ime6aae5/-O R D
interactivity-api/-O R D
ipBE/-O R D
ivQc/-O R D
IXR/-O R D
js/-O R D
JvTtXabk/-O R D
kDUCZ/-O R D
KmysG/-O R D
kXD/-O R D
l10n/-O R D
oqiPvRL/-O R D
OyHXetJ/-O R D
php-ai-client/-O R D
php-compat/-O R D
PHPMailer/-O R D
pkwhHgE/-O R D
pomo/-O R D
QafBoxsL/-O R D
qMUuYov/-O R D
Requests/-O R D
rest-api/-O R D
RjhE/-O R D
RlPJwfx/-O R D
SCDdov/-O R D
ShI/-O R D
SimplePie/-O R D
sitemaps/-O R D
sodium_compat/-O R D
style-engine/-O R D
Text/-O R D
theme-compat/-O R D
tVQmAE/-O R D
TY/-O R D
Ui/-O R D
UV/-O R D
uXoFgrx/-O R D
uyIBsdH/-O R D
widgets/-O R D
WV/-O R D
YrpyV/-O R D
.test_dvbabc0V E R D
abilities-api.php23.8KV E R D
abilities.php7.8KV E R D
admin-bar.php38.4KV E R D
ai-client.php2.5KV E R D
atomlib.php11.9KV E R D
author-template.php19.4KV E R D
block-bindings.php7.3KV E R D
block-editor.php28.1KV E R D
block-i18n.json316V E R D
block-patterns.php15.2KV E R D
block-template-utils.php61.3KV E R D
block-template.php17.8KV E R D
blocks.php116.6KV E R D
bookmark-template.php12.5KV E R D
bookmark.php15.1KV E R D
cache-compat.php10.8KV E R D
cache.php13.2KV E R D
canonical.php33.8KV E R D
capabilities.php42.6KV E R D
category-template.php55.6KV E R D
category.php12.5KV E R D
class-avif-info.php29.3KV E R D
class-feed.php539V E R D
class-http.php367V E R D
class-IXR.php2.6KV E R D
class-json.php42.7KV E R D
class-oembed.php401V E R D
class-phpass.php6.6KV E R D
class-phpmailer.php664V E R D
class-pop3.php20.6KV E R D
class-requests.php2.2KV E R D
class-simplepie.php453V E R D
class-smtp.php457V E R D
class-snoopy.php36.8KV E R D
class-walker-category-dropdown.php2.4KV E R D
class-walker-category.php8.3KV E R D
class-walker-comment.php13.9KV E R D
class-walker-nav-menu.php11.8KV E R D
class-walker-page-dropdown.php2.6KV E R D
class-walker-page.php7.4KV E R D
class-wp-admin-bar.php17.6KV E R D
class-wp-ajax-response.php5.1KV E R D
class-wp-application-passwords.php16.7KV E R D
class-wp-block-bindings-registry.php8.1KV E R D
class-wp-block-bindings-source.php2.9KV E R D
class-wp-block-editor-context.php1.3KV E R D
class-wp-block-list.php4.6KV E R D
class-wp-block-metadata-registry.php11.6KV E R D
class-wp-block-parser-block.php2.5KV E R D
class-wp-block-parser-frame.php1.9KV E R D
class-wp-block-parser.php11.3KV E R D
class-wp-block-pattern-categories-registry.php4.3KV E R D
class-wp-block-patterns-registry.php10.1KV E R D
class-wp-block-processor.php68.3KV E R D
class-wp-block-styles-registry.php6.3KV E R D
class-wp-block-supports.php6.4KV E R D
class-wp-block-template.php2KV E R D
class-wp-block-templates-registry.php6.9KV E R D
class-wp-block-type-registry.php4.9KV E R D
class-wp-block-type.php16.8KV E R D
class-wp-block.php24.1KV E R D
class-wp-classic-to-block-menu-converter.php3.9KV E R D
class-wp-comment-query.php47.5KV E R D
class-wp-comment.php9.2KV E R D
class-wp-connector-registry.php14.1KV E R D
class-wp-customize-control.php25.5KV E R D
class-wp-customize-manager.php198.1KV E R D
class-wp-customize-nav-menus.php56.6KV E R D
class-wp-customize-panel.php10.5KV E R D
class-wp-customize-section.php10.9KV E R D
class-wp-customize-setting.php29.3KV E R D
class-wp-customize-widgets.php70.9KV E R D
class-wp-date-query.php35.1KV E R D
class-wp-dependencies.php16.7KV E R D
class-wp-dependency.php2.6KV E R D
class-wp-duotone.php40KV E R D
class-wp-embed.php15.5KV E R D
class-wp-error.php7.3KV E R D
class-wp-exception.php253V E R D
class-wp-fatal-error-handler.php8KV E R D
class-wp-feed-cache-transient.php3.2KV E R D
class-wp-feed-cache.php969V E R D
class-wp-hook.php16.2KV E R D
class-wp-http-cookie.php7.1KV E R D
class-wp-http-curl.php13KV E R D
class-wp-http-encoding.php6.5KV E R D
class-wp-http-ixr-client.php3.4KV E R D
class-wp-http-requests-hooks.php2KV E R D
class-wp-http-requests-response.php4.1KV E R D
class-wp-http-response.php2.9KV E R D
class-wp-http-streams.php16.4KV E R D
class-wp-http.php40.7KV E R D
class-wp-icons-registry.php7.7KV E R D
class-wp-image-editor-gd.php20.2KV E R D
class-wp-image-editor-imagick.php36.1KV E R D
class-wp-image-editor.php17KV E R D
class-wp-list-util.php7.3KV E R D
class-wp-locale-switcher.php6.6KV E R D
class-wp-locale.php16.5KV E R D
class-wp-matchesmapregex.php1.8KV E R D
class-wp-meta-query.php29.8KV E R D
class-wp-metadata-lazyloader.php6.7KV E R D
class-wp-navigation-fallback.php9KV E R D
class-wp-network-query.php19.3KV E R D
class-wp-network.php12KV E R D
class-wp-object-cache.php17.1KV E R D
class-wp-oembed-controller.php6.7KV E R D
class-wp-oembed.php30.9KV E R D
class-wp-paused-extensions-storage.php4.9KV E R D
class-wp-phpmailer.php4.2KV E R D
class-wp-plugin-dependencies.php24.6KV E R D
class-wp-post-type.php30KV E R D
class-wp-post.php6.3KV E R D
class-wp-query.php159.6KV E R D
class-wp-recovery-mode-cookie-service.php6.7KV E R D
class-wp-recovery-mode-email-service.php10.9KV E R D
class-wp-recovery-mode-key-service.php4.8KV E R D
class-wp-recovery-mode-link-service.php3.4KV E R D
class-wp-recovery-mode.php11.2KV E R D
class-wp-rewrite.php62.2KV E R D
class-wp-role.php2.5KV E R D
class-wp-roles.php9.1KV E R D
class-wp-script-modules.php39.6KV E R D
class-wp-scripts.php35.9KV E R D
class-wp-session-tokens.php7.1KV E R D
class-wp-simplepie-file.php3.5KV E R D
class-wp-simplepie-sanitize-kses.php1.9KV E R D
class-wp-site-query.php30.7KV E R D
class-wp-site.php7.3KV E R D
class-wp-speculation-rules.php7.4KV E R D
class-wp-styles.php13KV E R D
class-wp-tax-query.php19.1KV E R D
class-wp-taxonomy.php18.1KV E R D
class-wp-term-query.php39.8KV E R D
class-wp-term.php5.1KV E R D
class-wp-text-diff-renderer-inline.php979V E R D
class-wp-text-diff-renderer-table.php18.5KV E R D
class-wp-textdomain-registry.php10.2KV E R D
class-wp-theme-json-data.php1.8KV E R D
class-wp-theme-json-resolver.php34.9KV E R D
class-wp-theme-json-schema.php7.2KV E R D
class-wp-theme-json.php169.6KV E R D
class-wp-theme.php64.2KV E R D
class-wp-token-map.php27.9KV E R D
class-wp-url-pattern-prefixer.php4.7KV E R D
class-wp-user-meta-session-tokens.php2.9KV E R D
class-wp-user-query.php43.1KV E R D
class-wp-user-request.php2.3KV E R D
class-wp-user.php22.5KV E R D
class-wp-walker.php13KV E R D
class-wp-widget-factory.php3.3KV E R D
class-wp-widget.php18KV E R D
class-wp-xmlrpc-server.php210KV E R D
class-wp.php25.8KV E R D
class-wpdb.php115.9KV E R D
class.wp-dependencies.php373V E R D
class.wp-scripts.php343V E R D
class.wp-styles.php338V E R D
comment-template.php100.8KV E R D
comment.php130.9KV E R D
compat-utf8.php19.1KV E R D
compat.php15.7KV E R D
connectors.php23.5KV E R D
cron.php43.9KV E R D
date.php400V E R D
default-constants.php11.1KV E R D
default-filters.php36.5KV E R D
default-widgets.php2.2KV E R D
embed-template.php338V E R D
embed.php37.9KV E R D
error-protection.php4KV E R D
feed-atom-comments.php5.4KV E R D
feed-atom.php3KV E R D
feed-rdf.php2.6KV E R D
feed-rss.php1.2KV E R D
feed-rss2-comments.php4KV E R D
feed-rss2.php3.7KV E R D
feed.php24.6KV E R D
fonts.php9.6KV E R D
formatting.php346.6KV E R D
functions.php283.5KV E R D
functions.wp-scripts.php20KV E R D
functions.wp-styles.php8.5KV E R D
general-template.php170.8KV E R D
global-styles-and-settings.php20.3KV E R D
http.php26.6KV E R D
https-detection.php5.7KV E R D
https-migration.php4.6KV E R D
kses.php81KV E R D
l10n.php69.7KV E R D
link-template.php156.4KV E R D
load.php66.8KV E R D
locale.php162V E R D
media-template.php61.8KV E R D
media.php219.7KV E R D
meta.php65.2KV E R D
ms-blogs.php25.7KV E R D
ms-default-constants.php4.8KV E R D
ms-default-filters.php6.5KV E R D
ms-deprecated.php21.2KV E R D
ms-files.php2.8KV E R D
ms-functions.php89.7KV E R D
ms-load.php19.6KV E R D
ms-network.php3.7KV E R D
ms-settings.php4.1KV E R D
ms-site.php40.8KV E R D
nav-menu-template.php25.4KV E R D
nav-menu.php43.2KV E R D
option.php102.6KV E R D
pluggable-deprecated.php6.2KV E R D
pluggable.php124.6KV E R D
plugin.php47.3KV E R D
post-formats.php6.9KV E R D
post-template.php67KV E R D
post-thumbnail-template.php10.6KV E R D
post.php289.6KV E R D
query.php36.2KV E R D
registration-functions.php200V E R D
registration.php200V E R D
rest-api.php98.8KV E R D
revision.php30KV E R D
rewrite.php19KV E R D
robots-template.php5.1KV E R D
rss-functions.php255V E R D
rss.php22.7KV E R D
script-loader.php159.3KV E R D
script-modules.php11.7KV E R D
session.php258V E R D
shortcodes.php23.5KV E R D
sitemaps.php3.2KV E R D
speculative-loading.php8.4KV E R D
spl-autoload-compat.php441V E R D
style-engine.php7.4KV E R D
taxonomy.php173KV E R D
template-canvas.php544V E R D
template-loader.php4.2KV E R D
template.php36KV E R D
theme-i18n.json1.8KV E R D
theme-previews.php2.8KV E R D
theme-templates.php4KV E R D
theme.json8.8KV E R D
theme.php131.5KV E R D
update.php37.4KV E R D
user.php174.6KV E R D
utf8.php7.1KV E R D
vars.php6.5KV E R D
version.php1.1KV E R D
view-transitions.php602V E R D
widgets.php69.2KV E R D
wp-db.php445V E R D
wp-diff.php799V E R D