diff --git a/CHANGELOG.md b/CHANGELOG.md index b7ce6fd6e7624bdb1b229f51d63edcde873be2a6..c9386089ea1182eab0193062dc7dcfa2bc00ee28 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## [Unreleased] +### Changed +- Usage tracker is initialized by the library after all plugin's hookables are registered. + ## [1.1.0] - 2022-11-23 ### Added - Compatibility with WooCommerce High-Performance Order Storage (HPOS) diff --git a/src/Initialization/Simple/SimpleFreeStrategy.php b/src/Initialization/Simple/SimpleFreeStrategy.php index 11c376f258519e26eab0520657e0e4fe5bb13a56..5be4d3d20b315373734558d8ebbd6cf02e6c2ea6 100644 --- a/src/Initialization/Simple/SimpleFreeStrategy.php +++ b/src/Initialization/Simple/SimpleFreeStrategy.php @@ -52,6 +52,10 @@ class SimpleFreeStrategy implements InitializationStrategy { $this->store_plugin( $this->plugin ); $this->init_plugin( $this->plugin ); + // Flush usage tracker late, to remain backward compatible with plugins which could instantiate + // the tracker on their own through `wpdesk_tracker_instance` filter. + $this->get_tracker_instance(); + $this->register_tracker_ui_extensions(); return $this->plugin; } diff --git a/src/Initialization/Simple/SimplePaidStrategy.php b/src/Initialization/Simple/SimplePaidStrategy.php index e4fe8693428b12e6980ca69a3a1c7513763a8860..8600c4b63bfe73b1e20f0d160e3bde6bf17ac32e 100644 --- a/src/Initialization/Simple/SimplePaidStrategy.php +++ b/src/Initialization/Simple/SimplePaidStrategy.php @@ -65,6 +65,10 @@ class SimplePaidStrategy implements InitializationStrategy { } $this->store_plugin( $this->plugin ); $this->init_plugin( $this->plugin ); + // Flush usage tracker late, to remain backward compatible with plugins which could instantiate + // the tracker on their own through `wpdesk_tracker_instance` filter. + $this->get_tracker_instance(); + $this->register_tracker_ui_extensions(); }, $priority_before_flow_2_5_after_2_6 = -45); return $this->plugin; diff --git a/src/Initialization/TrackerInstanceAsFilterTrait.php b/src/Initialization/TrackerInstanceAsFilterTrait.php index 6b5d8f5fbf6f2965d3507435eb1fdb125156e50c..d9b51911378e2c4803b890c242a78efc71da50fa 100644 --- a/src/Initialization/TrackerInstanceAsFilterTrait.php +++ b/src/Initialization/TrackerInstanceAsFilterTrait.php @@ -3,6 +3,8 @@ namespace WPDesk\Plugin\Flow\Initialization\Simple; +use WPDesk\Tracker\OptInOptOut; + /** * Trait helps with tracker initialization * @@ -62,4 +64,17 @@ trait TrackerInstanceAsFilterTrait { } }, 10 - $this->get_tracker_version() ); } + + private function register_tracker_ui_extensions() { + $shops = $this->plugin_info->get_plugin_shops(); + $shop_url = $shops[ get_locale() ] ?? ( $shops['default'] ?? 'https://wpdesk.net' ); + $tracker_ui = new OptInOptOut( + $this->plugin_info->get_plugin_file_name(), + $this->plugin_info->get_plugin_slug(), + $shop_url, + $this->plugin_info->get_plugin_name() + ); + $tracker_ui->create_objects(); + $tracker_ui->hooks(); + } } \ No newline at end of file