HEX
Server: nginx
System: Linux pool195-106-36.bur.atomicsites.net 6.12.57+deb12-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.57-1~bpo12+1 (2025-11-17) x86_64
User: (0)
PHP: 8.3.32
Disabled: pcntl_fork
Upload Files
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.',
		];
	}
}