File "UtmHelper.php"
Full Path: /home/buyiwexj/public_html/wp-content/plugins/woocommerce/src/Internal/StockNotifications/Utilities/UtmHelper.php
File size: 1.46 KB
MIME-type: text/x-php
Charset: utf-8
<?php
declare( strict_types=1 );
namespace Automattic\WooCommerce\Internal\StockNotifications\Utilities;
/**
* Helper for appending UTM campaign parameters to outgoing stock-notification email links.
*
* Centralizes the `utm_source` / `utm_medium` values so order attribution stays consistent
* across all three email types (verify, verified, back-in-stock).
*
* @internal
*/
class UtmHelper {
/**
* UTM source value used for all stock notification emails.
*/
public const UTM_SOURCE = 'back-in-stock-notifications';
/**
* Default UTM medium for stock notification emails.
*/
public const UTM_MEDIUM_EMAIL = 'email';
/**
* Append the standard email UTM parameters to a URL.
*
* @param string $url The URL to annotate.
* @param string $medium The UTM medium (defaults to `email`).
* @return string
*/
public static function add_email_utm_params( string $url, string $medium = self::UTM_MEDIUM_EMAIL ): string {
if ( empty( $url ) ) {
return $url;
}
// Defensive: lock down the medium to a safe URL-friendly slug, falling back to the default
// if sanitization strips everything. Prevents any future caller from piping user-controlled
// input into the outbound tracking URL.
$sanitized_medium = sanitize_key( $medium );
if ( '' === $sanitized_medium ) {
$sanitized_medium = self::UTM_MEDIUM_EMAIL;
}
return add_query_arg(
array(
'utm_source' => self::UTM_SOURCE,
'utm_medium' => $sanitized_medium,
),
$url
);
}
}