Automattic\WooCommerce\Internal\LegacyAssets

LegacySelect2UsageTracker::get_usage_event │ public │ WC 1.0

Get a legacy Select2 usage event for the current script registry.

Method of the class: LegacySelect2UsageTracker{}

No Hooks.

Returns

array<string, string>.

Usage

$LegacySelect2UsageTracker = new LegacySelect2UsageTracker();
$LegacySelect2UsageTracker->get_usage_event( $context ): array;
$context(string) (required)
The request context.

LegacySelect2UsageTracker::get_usage_event() code WC 11.2.1

public function get_usage_event( string $context ): array {
	$wp_scripts = wp_scripts();
	if ( ! $wp_scripts instanceof WP_Scripts ) {
		return array();
	}

	// `done` includes dependencies that WordPress printed while resolving the queue.
	// Keep only queued handles so dependents identify scripts explicitly enqueued for the page.
	$printed_queued_scripts = array_intersect( $wp_scripts->queue, $wp_scripts->done );

	$handles            = array();
	$dependents         = array();
	$dependents_sources = array();
	$plugins_path       = wp_parse_url( plugins_url( '/' ), PHP_URL_PATH );

	foreach ( $printed_queued_scripts as $handle ) {
		$legacy_handles = $this->get_legacy_handles( $wp_scripts, $handle );

		if ( empty( $legacy_handles ) ) {
			continue;
		}

		$handles              += array_fill_keys( $legacy_handles, true );
		$dependents[ $handle ] = true;
		$source                = isset( $wp_scripts->registered[ $handle ] ) ? $wp_scripts->registered[ $handle ]->src : '';
		$source                = self::get_plugin_relative_source( $source, $plugins_path );

		if ( '' !== $source ) {
			$dependents_sources[] = $source;
		}
	}

	if ( empty( $handles ) ) {
		return array();
	}

	$handles            = array_keys( $handles );
	$dependents         = array_keys( $dependents );
	$dependents_sources = array_unique( $dependents_sources );
	$handles_sources    = array();

	foreach ( $handles as $handle ) {
		$source = self::get_legacy_handle_source( $wp_scripts, $handle );
		$source = self::get_plugin_relative_source( $source, $plugins_path );

		if ( '' !== $source ) {
			$handles_sources[] = $source;
		}
	}

	$handles_sources = array_unique( $handles_sources );

	sort( $handles );
	sort( $dependents );
	sort( $dependents_sources );
	sort( $handles_sources );

	return array(
		'context'            => $context,
		'page_type'          => $this->get_current_page_type( $context ),
		'handles'            => implode( ',', $handles ),
		'dependents'         => implode( ',', $dependents ),
		'dependents_sources' => implode( ',', $dependents_sources ),
		'handles_sources'    => implode( ',', $handles_sources ),
	);
}