diff --git a/src/Extension/CommonBinding/WPDeskTrackerBridge.php b/src/Extension/CommonBinding/WPDeskTrackerBridge.php index 131a9e9c222cee4961d4445f578d8e128d59ab59..554e6cbbefad10ba3ac3019c0f7ebbedb86f8265 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 19d28d2a6d868350c135e86a108f58c239fcb366..c0039ba46290d1ecaf60195ebd477dcf8d60f1ca 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 0924093b4374092d92f9ac9daca74946b99c02e5..9e7053fbb297474ea66ae2b1ef0aae4359fb2aba 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', [] ) );