HEX
Server: Apache/2.4.68 (Debian)
System: Linux as-cs-widget-demo-us-central1 6.1.0-44-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.164-1 (2026-03-09) x86_64
User: root (0)
PHP: 8.2.32
Disabled: NONE
Upload Files
File: /var/www/kevin-demo/wp-content/plugins/woocommerce-subscriptions/src/Internal/Telemetry/Events.php
<?php

namespace Automattic\WooCommerce_Subscriptions\Internal\Telemetry;

use WC_Tracks;

/**
 * Monitors and locally records information about various subscription-related store events. The information is not
 * however 'sent home' unless tracking is enabled (enforced by WC_Tracks).
 *
 * @internal This class may be modified, moved or removed in future releases.
 */
class Events {
	private $event_recorder;

	/**
	 * Prepares the event monitoring/recording system.
	 *
	 * @param callable|null $event_recorder Optional. The function to use to record events. Defaults to WC_Tracks::record_event().
	 */
	public function __construct( ?callable $event_recorder = null ) {
		$this->event_recorder = $event_recorder ?? function ( string $event_name, array $event_properties = array() ) {
			// The WC_Site_Tracking class is not always available, depending on the WC version and request type (e.g. AJAX).
			// This check prevents a fatal error if the class is not loaded.
			if ( ! class_exists( 'WC_Site_Tracking' ) ) {
				return;
			}
			// Note that the following method ensures nothing is sent home unless tracking is enabled.
			WC_Tracks::record_event( $event_name, $event_properties );
		};
	}

	/**
	 * Adds listeners for events where we want to send a corresponding Tracks event.
	 *
	 * @return void
	 */
	public function setup(): void {
		add_action( 'woocommerce_new_subscription', array( $this, 'track_new_subscriptions' ) );
	}

	/**
	 * Record the creation of a new subscription.
	 *
	 * @return void
	 */
	public function track_new_subscriptions(): void {
		call_user_func( $this->event_recorder, 'wcs_new_subscription_created' );
	}
}