From 203826dd199710527eaa878af1c8e74c16b4680a Mon Sep 17 00:00:00 2001 From: Bart Jaskulski <bjaskulski@protonmail.com> Date: Mon, 30 Sep 2024 21:45:25 +0200 Subject: [PATCH] feat: improve tracker integration Signed-off-by: Bart Jaskulski <bjaskulski@protonmail.com> --- .../CommonBinding/WPDeskTrackerBridge.php | 24 +++++++++++++++++-- src/Extension/ConditionalExtension.php | 4 +++- src/Extension/ConfigExtension.php | 2 +- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/src/Extension/CommonBinding/WPDeskTrackerBridge.php b/src/Extension/CommonBinding/WPDeskTrackerBridge.php index 131a9e9..554e6cb 100644 --- a/src/Extension/CommonBinding/WPDeskTrackerBridge.php +++ b/src/Extension/CommonBinding/WPDeskTrackerBridge.php @@ -1,20 +1,40 @@ <?php +declare(strict_types=1); namespace WPDesk\Init\Extension\CommonBinding; +use Psr\Log\LoggerInterface; use WPDesk\Init\Binding\Hookable; +use WPDesk\Init\Configuration\Configuration; use WPDesk\Init\Plugin\Plugin; class WPDeskTrackerBridge implements Hookable { private Plugin $plugin; - public function __construct( Plugin $plugin ) { + private LoggerInterface $logger; + + private Configuration $config; + + public function __construct( Plugin $plugin, Configuration $config, LoggerInterface $logger ) { $this->plugin = $plugin; + $this->config = $config; + $this->logger = $logger; } public function hooks(): void { $tracker_factory = new \WPDesk_Tracker_Factory_Prefixed(); - $tracker_factory->create_tracker( $this->plugin->get_basename() ); + $tracker_factory->create_tracker( $this->plugin->get_basename(), $this->logger ); + + $shops = $this->config->get( 'shops', [] ); + $shop_url = $shops[ get_user_locale() ] ?? ( $shops['default'] ?? 'https://wpdesk.net' ); + $tracker_ui = new OptInOptOut( + $this->plugin->get_file(), + $this->plugin->get_slug(), + $shop_url, + $this->plugin->get_name() + ); + $tracker_ui->create_objects(); + $tracker_ui->hooks(); } } diff --git a/src/Extension/ConditionalExtension.php b/src/Extension/ConditionalExtension.php index 19d28d2..c0039ba 100644 --- a/src/Extension/ConditionalExtension.php +++ b/src/Extension/ConditionalExtension.php @@ -9,6 +9,7 @@ use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; use WPDesk\Init\Binding\Loader\ArrayDefinitions; use WPDesk\Init\Binding\Loader\BindingDefinitions; +use WPDesk\Init\Configuration\Configuration; use WPDesk\Init\Configuration\ReadableConfig; use WPDesk\Init\DependencyInjection\ContainerBuilder; use WPDesk\Init\Extension\CommonBinding\RequirementsCheck; @@ -20,6 +21,7 @@ use WPDesk\Logger\SimpleLoggerFactory; class ConditionalExtension implements Extension { public function bindings( ContainerInterface $c ): BindingDefinitions { + $config = $c->get( Configuration::class ); $bindings = []; if ( class_exists( \WPDesk_Basic_Requirement_Checker::class ) ) { @@ -34,7 +36,7 @@ class ConditionalExtension implements Extension { } if ( class_exists( \WPDesk_Tracker::class ) ) { - $bindings[] = WPDeskTrackerBridge::class; + $bindings['plugins_loaded'] = WPDeskTrackerBridge::class; } return new ArrayDefinitions( $bindings ); diff --git a/src/Extension/ConfigExtension.php b/src/Extension/ConfigExtension.php index 0924093..9e7053f 100644 --- a/src/Extension/ConfigExtension.php +++ b/src/Extension/ConfigExtension.php @@ -29,7 +29,7 @@ class ConfigExtension implements Extension { public function build( ContainerBuilder $builder, Plugin $plugin, ReadableConfig $config ): void { $services = array_map( - fn( $service ): string => (string) ( new Path( $service ) )->absolute( $plugin->get_path() ), + fn ( string $service ) => (string) ( new Path( $service ) )->absolute( $plugin->get_path() ), (array) $config->get( 'services', [] ) ); -- GitLab