File: /wordpress/plugins/wp-cloud-client/beta/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 platform's default GA4 tracking toggle.
*
* When enabled=true, GoogleAnalytics4::injectScript() outputs the
* platform's default GA4 tracking script on the next page load; when
* false, no script is injected at all.
*
* @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->setGaEnabled( $enabled );
return [
'ga_enabled' => $enabled,
'message' => $enabled
? 'GA4 tracking enabled — platform default tracking active.'
: 'GA4 tracking disabled — platform default tracking suppressed.',
];
}
}