From f204711eb44f192fd2c9c1d285b64bd8505a0a0b Mon Sep 17 00:00:00 2001 From: Bart Jaskulski <bjaskulski@protonmail.com> Date: Mon, 30 Sep 2024 20:43:12 +0200 Subject: [PATCH] feat: adjust tracker bridge to wp-wpdesk-tracker v4 Signed-off-by: Bart Jaskulski <bjaskulski@protonmail.com> --- composer.json | 4 +- .../CommonBinding/WPDeskLicenseBridge.php | 58 ++++++++++++------- src/Extension/ConditionalExtension.php | 8 ++- 3 files changed, 44 insertions(+), 26 deletions(-) diff --git a/composer.json b/composer.json index 00244f6..bb5d322 100644 --- a/composer.json +++ b/composer.json @@ -44,6 +44,7 @@ "symfony/filesystem": "^5.4 || ^6.2", "wpdesk/phpstan-rules": "^1.1", "wpdesk/wp-basic-requirements": "^3", + "wpdesk/wp-wpdesk-license": "^4", "wpdesk/wp-builder": "^2.0", "wpdesk/wp-code-sniffer": "^1.3" }, @@ -51,7 +52,8 @@ "wpdesk/wp-basic-requirements": "Enables your plugin to check an environment requirement before instantiation, e.g. PHP version or active plugins" }, "conflict": { - "wpdesk/wp-basic-requirements": "<3 >=4" + "wpdesk/wp-basic-requirements": "<3 >=4", + "wpdesk/wp-wpdesk-license": "<4 >=5" }, "scripts": { "test": "vendor/bin/phpunit --bootstrap tests/bootstrap.php ./tests" diff --git a/src/Extension/CommonBinding/WPDeskLicenseBridge.php b/src/Extension/CommonBinding/WPDeskLicenseBridge.php index 55db2c7..51d4534 100644 --- a/src/Extension/CommonBinding/WPDeskLicenseBridge.php +++ b/src/Extension/CommonBinding/WPDeskLicenseBridge.php @@ -1,42 +1,56 @@ <?php +declare(strict_types=1); namespace WPDesk\Init\Extension\CommonBinding; +use Psr\Log\LoggerInterface; use WPDesk\Init\Binding\Hookable; use WPDesk\Init\Plugin\Plugin; -use WPDesk\License\PluginRegistrator; +use WPDesk\License\LicenseServer\PluginRegistrator; +use WPDesk\License\LicenseServer\PluginVersionInfo; class WPDeskLicenseBridge implements Hookable { - /** @var \WPDesk_Plugin_Info */ - private $plugin_info; + private Plugin $plugin; - private $registrator; + private string $product_id; - public function __construct( \WPDesk_Plugin_Info $plugin_info ) { - $this->plugin_info = $plugin_info; + /** @var string[] */ + private array $shops; + + private LoggerInterface $logger; + + public function __construct( + Plugin $plugin, + string $product_id, + array $shops, + LoggerInterface $logger + ) { + $this->plugin = $plugin; + $this->product_id = $product_id; + $this->shops = $shops; + $this->logger = $logger; } public function hooks(): void { - $this->registrator = $this->register_plugin(); - // add_action('plugins_loaded', $this); + add_action( 'plugins_loaded', $this, -50 ); } - public function __invoke(): void { - $is_plugin_subscription_active = $this->registrator instanceof PluginRegistrator && $this->registrator->is_active(); - if ( $this->plugin instanceof ActivationAware && $is_plugin_subscription_active ) { - $this->plugin->set_active(); + public function __invoke() { + // Backward compatibility with wp-builder hook. + if ( apply_filters( 'wpdesk_can_register_plugin', true, $this->plugin ) === false ) { + return; } + $plugin_info = new PluginVersionInfo( + $this->plugin->get_name(), + $this->plugin->get_version(), + $this->product_id, + $this->plugin->get_slug(), + $this->plugin->get_basename(), + $this->shops + ); + $registrator = new PluginRegistrator( $plugin_info ); + $registrator->initialize_license_manager(); } - - private function register_plugin() { - if ( apply_filters( 'wpdesk_can_register_plugin', true, $this->plugin_info ) ) { - $registrator = new PluginRegistrator( $this->plugin_info ); - $registrator->initialize_license_manager(); - - return $registrator; - } - } - } diff --git a/src/Extension/ConditionalExtension.php b/src/Extension/ConditionalExtension.php index 6ecf12f..4d2a64e 100644 --- a/src/Extension/ConditionalExtension.php +++ b/src/Extension/ConditionalExtension.php @@ -30,7 +30,7 @@ class ConditionalExtension implements Extension { $bindings[] = RequirementsCheck::class; } - if ( class_exists( \WPDesk\License\PluginRegistrator::class ) ) { + if ( class_exists( \WPDesk\License\LicenseServer\PluginRegistrator::class ) ) { $bindings[] = WPDeskLicenseBridge::class; } @@ -48,8 +48,10 @@ class ConditionalExtension implements Extension { $definitions[ RequirementsCheck::class ] = new AutowireDefinitionHelper(); } - if ( class_exists( \WPDesk\License\PluginRegistrator::class ) ) { - $definitions[ WPDeskLicenseBridge::class ] = new AutowireDefinitionHelper(); + if ( class_exists( \WPDesk\License\LicenseServer\PluginRegistrator::class ) ) { + $definitions[ WPDeskLicenseBridge::class ] = ( new AutowireDefinitionHelper() ) + ->constructorParameter( 'proudct_id', $config->get( 'product_id' ) ) + ->constructorParameter( 'shops', (array) $config->get( 'shops', [] ) ); } if ( class_exists( \WPDesk_Tracker::class ) ) { -- GitLab