File: /wordpress/plugins/wp-cloud-client/1.2.6/src/Handler/SyncGaSettingsHandler.php
<?php
declare(strict_types=1);
namespace VPlugins\WPCloudClient\Handler;
use VPlugins\WPCloudClient\Settings\SettingsRepository;
final class SyncGaSettingsHandler extends AbstractHandler {
/**
* Class constructor.
*
* @param SettingsRepository $settings Settings repository.
*/
public function __construct(
private readonly SettingsRepository $settings,
) {}
/**
* Return the action name.
*
* @return string Action name.
*/
public function action(): string {
return 'sync_ga_settings';
}
/**
* Store the partner GA integration toggle.
*
* When enabled=true the partner has turned on their own GA integration;
* GoogleAnalytics4::injectScript() will suppress the platform's default
* tracking on the next page load.
*
* @param array<string, mixed> $params Must contain 'enabled' (bool).
* @return array<string, mixed> Applied GA state.
*
* @throws \InvalidArgumentException If 'enabled' is missing or not a boolean.
*/
public function execute( array $params ): array {
$this->requireParams( $params, 'enabled' );
$enabled = filter_var( $params['enabled'], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE );
if ( null === $enabled ) {
throw new \InvalidArgumentException( "'enabled' must be a boolean value." );
}
$this->settings->setPartnerGaEnabled( $enabled );
return [
'partner_ga_enabled' => $enabled,
'message' => $enabled
? 'Partner GA enabled — platform default tracking suppressed.'
: 'Partner GA disabled — platform default tracking active.',
];
}
}