PluginProbe ʕ •ᴥ•ʔ
MailPoet – Newsletters, Email Marketing, and Automation / 5.34.2
MailPoet – Newsletters, Email Marketing, and Automation v5.34.2
5.34.2 5.34.1 5.34.0 5.33.1 5.33.0 5.32.0 5.31.0 5.30.0 5.29.0 5.28.1 5.28.0 5.27.0 5.26.0 5.26.1 5.25.0 5.24.0 4.43.0 4.43.1 4.44.0 4.44.1 4.45.0 4.46.0 4.47.0 4.48.0 4.48.1 4.48.2 4.49.0 4.49.1 4.5.0 4.5.1 4.5.2 4.50.0 4.50.1 4.51.0 4.51.1 4.51.2 4.52.0 4.53.0 4.54.0 4.55.0 4.56.0 4.57.0 4.58.0 4.58.1 4.58.2 4.6.0 4.6.1 4.6.2 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 5.0.0 5.0.1 5.0.2 5.1.0 5.1.1 5.10.0 5.10.1 5.11.0 5.12.0 5.12.1 5.12.10 5.12.11 5.12.12 5.12.13 5.12.2 5.12.3 5.12.4 5.12.5 5.12.6 5.12.7 5.12.8 5.12.9 5.13.0 5.13.1 5.13.2 5.14.0 5.14.1 5.14.2 5.14.3 5.15.0 5.15.1 5.16.0 5.16.1 5.16.2 5.16.3 5.16.4 5.17.0 5.17.1 5.17.2 5.17.3 5.17.4 5.17.5 5.17.6 5.18.0 5.19.0 5.2.0 5.2.1 5.2.2 5.2.3 5.20.0 5.21.0 5.21.1 5.21.2 5.21.3 5.22.0 5.22.1 5.22.2 5.22.3 5.22.4 5.23.0 5.23.1 5.23.2 5.3.0 5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.4.0 5.4.1 5.4.2 5.5.0 5.5.1 5.5.2 5.6.0 5.6.1 5.6.2 5.6.3 5.6.4 5.7.0 5.7.1 5.8.0 5.8.1 5.9.0 3.0.0-beta.15 3.7.1 3.0.0-beta.16 3.7.2 3.0.0-beta.17 3.7.3 3.0.0-beta.18 3.7.4 3.0.0-beta.19 3.7.5 3.0.0-beta.2 3.7.6 3.0.0-beta.20 3.7.8 3.0.0-beta.21 3.70.0 3.0.0-beta.22 3.71.0 3.0.0-beta.23 3.71.1 3.0.0-beta.23.1 3.71.2 3.0.0-beta.23.2 3.71.3 3.0.0-beta.24 3.72.0 3.0.0-beta.25 3.73.0 3.0.0-beta.26 3.73.1 3.0.0-beta.27 3.73.2 3.0.0-beta.28 3.74.0 3.0.0-beta.29 3.74.1 3.0.0-beta.3 3.74.2 3.0.0-beta.30 3.74.3 3.0.0-beta.31 3.75.0 3.0.0-beta.32 3.75.1 3.0.0-beta.33 3.76.0 3.0.0-beta.33.1 3.77.0 3.0.0-beta.34.0.0 3.77.1 3.0.0-beta.36.0.0 3.78.0 3.0.0-beta.36.0.1 3.79.0 3.0.0-beta.36.2.0 3.8 3.0.0-beta.36.3.0 3.8.1 3.0.0-beta.36.3.1 3.8.2 3.0.0-beta.37.0.0 3.8.3 3.0.0-beta.4 3.8.4 3.0.0-beta.5 3.8.5 3.0.0-beta.6 3.8.6 3.0.0-beta.7 3.80.0 3.0.0-beta.7.1 3.81.0 3.0.0-beta.8 3.82.0 3.0.0-beta.9 3.83.0 3.0.0-rc.1.0.0 3.84.0 3.0.0-rc.1.0.1 3.84.1 3.0.0-rc.1.0.2 3.85.0 3.0.0-rc.1.0.3 3.85.1 3.0.0-rc.1.0.4 3.86.0 3.0.0-rc.2.0.0 3.87.0 3.0.0-rc.2.0.1 3.87.1 3.0.0-rc.2.0.2 3.87.2 3.0.0-rc.2.0.3 3.88.0 3.0.1 3.88.1 3.0.2 3.88.2 3.0.3 3.89.0 3.0.4 3.89.1 3.0.5 3.89.2 3.0.6 3.89.3 3.0.7 3.89.4 3.0.8 3.9.0 3.0.9 3.9.1 3.1.0 3.90.0 3.10 3.90.1 3.10.1 3.90.2 3.100.0 3.91.0 3.100.1 3.91.1 3.100.2 3.92.0 3.101.0 3.92.1 3.101.1 3.93.0 3.102.0 3.93.1 3.102.1 3.94.0 3.103.0 3.95.0 3.103.1 3.95.1 3.11.0 3.96.0 3.11.1 3.96.1 3.11.2 3.97.0 3.11.3 3.98.0 3.11.4 3.98.1 3.11.5 3.99.0 3.12.0 3.99.1 3.12.1 4.0.0 3.13.0 4.0.1 3.14.0 4.1.0 3.14.1 4.1.1 3.15.0 4.10.0 3.16.0 4.11.0 3.16.1 4.11.1 3.16.2 4.12.0 3.16.3 4.12.1 3.17.0 4.12.2 3.17.1 4.13.0 3.17.2 4.14.0 3.18.0 4.15.0 3.18.1 4.16.0 3.18.2 4.17.0 3.19.0 4.17.1 3.19.1 4.18.0 3.19.2 4.18.1 3.19.3 4.19.0 3.2.0 4.2.0 3.2.1 4.20.0 3.2.2 4.20.1 3.2.3 4.20.2 3.2.4 4.21.0 3.2.5 4.22.0 3.20.0 4.22.1 3.21.0 4.22.2 3.21.1 4.23.0 3.22.0 4.24.0 3.23.0 4.25.0 3.23.1 4.26.0 3.23.2 4.26.1 3.24.0 4.27.0 3.25.0 4.28.0 3.25.1 4.29.0 3.26.0 4.3.0 3.26.1 4.3.1 3.27.0 4.30.0 3.28.0 4.31.0 3.29.0 4.31.1 3.3.0 4.32.0 3.3.1 4.33.0 3.3.2 4.34.0 3.3.3 4.35.0 3.3.4 4.35.1 3.3.5 4.36.0 3.3.6 4.37.0 3.30.0 4.38.0 3.31.0 4.39.0 3.31.1 4.4.0 3.32.0 4.40.0 3.32.1 4.41.0 3.32.2 4.41.1 3.33.0 4.41.2 3.34.0 4.41.3 3.34.1 4.42.0 3.34.2 4.42.1 3.34.3 3.34.4 3.35.0 3.35.1 3.35.3 3.35.4 3.36.0 3.37.0 3.37.1 3.37.2 3.37.3 3.38.0 3.38.1 3.39.0 3.39.1 3.39.2 3.4.0 3.4.1 3.4.2 3.4.3 3.4.4 3.40.0 3.40.1 3.41.0 3.41.1 3.41.2 3.42.0 3.42.1 3.42.2 3.42.3 3.43.0 3.43.1 3.44.0 3.45.0 3.45.1 3.46.0 3.46.1 3.46.10 3.46.11 3.46.12 3.46.13 3.46.14 3.46.2 3.46.3 3.46.4 3.46.5 3.46.6 3.46.7 3.46.8 3.46.9 3.47.0 3.47.1 3.47.10 3.47.11 3.47.2 3.47.3 3.47.5 3.47.6 3.47.7 3.47.9 3.48.0 3.48.1 3.49.0 3.49.1 3.5.0 3.5.1 3.50.0 3.51.0 3.51.1 3.51.2 3.52.0 3.53.0 3.54.0 3.54.1 3.54.2 3.54.3 3.55.0 3.55.1 3.56.0 3.56.1 3.56.2 3.57.0 3.57.1 3.58.0 3.59.0 3.59.1 3.59.2 3.6.0 3.6.1 3.6.2 3.6.3 3.6.4 3.6.5 3.6.6 3.6.7 3.60.0 3.60.1 3.60.10 3.60.11 3.60.12 3.60.2 3.60.3 3.60.4 3.60.6 3.60.7 3.60.8 3.60.9 3.61.0 3.62.0 3.62.1 3.63.0 3.64.0 3.64.1 3.64.2 3.64.3 3.65.0 trunk 3.65.1 3.0.0 3.66.0 3.0.0-beta.1 3.67.0 3.0.0-beta.10 3.67.1 3.0.0-beta.11 3.68.0 3.0.0-beta.12 3.69.0 3.0.0-beta.13 3.69.1 3.0.0-beta.14 3.7.0
mailpoet / lib / Config / HooksWooCommerce.php
mailpoet / lib / Config Last commit date
PopulatorData 2 months ago AccessControl.php 2 years ago Activator.php 2 months ago AssetsLoader.php 2 weeks ago Capabilities.php 2 months ago Changelog.php 2 months ago DeactivationPoll.php 3 years ago DeferredAdminNotices.php 2 months ago Env.php 6 months ago Hooks.php 4 weeks ago HooksWooCommerce.php 1 month ago Initializer.php 4 weeks ago Installer.php 10 months ago Localizer.php 3 years ago Menu.php 1 month ago PersonalDataErasers.php 1 month ago PersonalDataExporters.php 1 month ago PluginActivatedHook.php 3 years ago Populator.php 2 weeks ago PrivacyPolicy.php 1 month ago Renderer.php 1 year ago RendererFactory.php 3 years ago RequirementsChecker.php 2 months ago Router.php 2 months ago ServicesChecker.php 3 years ago Shortcodes.php 1 month ago SilentUpgraderSkin.php 3 years ago SubscriberChangesNotifier.php 2 months ago TranslationUpdater.php 3 months ago TwigEnvironment.php 1 year ago TwigFileSystemCache.php 3 years ago Updater.php 4 days ago index.php 3 years ago
HooksWooCommerce.php
254 lines
1 <?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing
2
3 namespace MailPoet\Config;
4
5 if (!defined('ABSPATH')) exit;
6
7
8 use Automattic\WooCommerce\Admin\Features\OnboardingTasks\Task;
9 use Automattic\WooCommerce\Admin\Features\OnboardingTasks\TaskLists;
10 use MailPoet\Logging\LoggerFactory;
11 use MailPoet\Segments\WooCommerce as WooCommerceSegment;
12 use MailPoet\Statistics\Track\WooCommercePurchases;
13 use MailPoet\Subscription\Registration;
14 use MailPoet\WooCommerce\MailPoetTask;
15 use MailPoet\WooCommerce\MultichannelMarketing\MPMarketingChannelController;
16 use MailPoet\WooCommerce\OrderAttributionWriter;
17 use MailPoet\WooCommerce\Settings as WooCommerceSettings;
18 use MailPoet\WooCommerce\SubscriberEngagement;
19 use MailPoet\WooCommerce\Subscription as WooCommerceSubscription;
20 use MailPoet\WooCommerce\Tracker;
21
22 class HooksWooCommerce {
23 /** @var WooCommerceSubscription */
24 private $woocommerceSubscription;
25
26 /** @var WooCommerceSegment */
27 private $woocommerceSegment;
28
29 /** @var WooCommerceSettings */
30 private $woocommerceSettings;
31
32 /** @var WooCommercePurchases */
33 private $woocommercePurchases;
34
35 /** @var Registration */
36 private $subscriberRegistration;
37
38 /** @var LoggerFactory */
39 private $loggerFactory;
40
41 /** @var SubscriberEngagement */
42 private $subscriberEngagement;
43
44 /** @var Tracker */
45 private $tracker;
46
47 /** @var MPMarketingChannelController */
48 private $marketingChannelController;
49
50 /** @var OrderAttributionWriter */
51 private $orderAttributionWriter;
52
53 public function __construct(
54 WooCommerceSubscription $woocommerceSubscription,
55 WooCommerceSegment $woocommerceSegment,
56 WooCommerceSettings $woocommerceSettings,
57 WooCommercePurchases $woocommercePurchases,
58 Registration $subscriberRegistration,
59 LoggerFactory $loggerFactory,
60 Tracker $tracker,
61 SubscriberEngagement $subscriberEngagement,
62 MPMarketingChannelController $marketingChannelController,
63 OrderAttributionWriter $orderAttributionWriter
64 ) {
65 $this->woocommerceSubscription = $woocommerceSubscription;
66 $this->woocommerceSegment = $woocommerceSegment;
67 $this->woocommerceSettings = $woocommerceSettings;
68 $this->woocommercePurchases = $woocommercePurchases;
69 $this->loggerFactory = $loggerFactory;
70 $this->subscriberRegistration = $subscriberRegistration;
71 $this->tracker = $tracker;
72 $this->subscriberEngagement = $subscriberEngagement;
73 $this->marketingChannelController = $marketingChannelController;
74 $this->orderAttributionWriter = $orderAttributionWriter;
75 }
76
77 public function extendWooCommerceCheckoutForm() {
78 try {
79 $this->woocommerceSubscription->extendWooCommerceCheckoutForm();
80 } catch (\Throwable $e) {
81 $this->logError($e, 'WooCommerce Subscription');
82 }
83 }
84
85 public function hideAutomateWooOptinCheckbox() {
86 try {
87 $this->woocommerceSubscription->hideAutomateWooOptinCheckbox();
88 } catch (\Throwable $e) {
89 $this->logError($e, 'WooCommerce Subscription');
90 }
91 }
92
93 public function subscribeOnCheckout($orderId, $data) {
94 try {
95 $this->woocommerceSubscription->subscribeOnCheckout($orderId, $data);
96 } catch (\Throwable $e) {
97 $this->logError($e, 'WooCommerce Subscription');
98 }
99 }
100
101 public function subscribeOnOrderPay($orderId) {
102 try {
103 $this->woocommerceSubscription->subscribeOnOrderPay($orderId);
104 } catch (\Throwable $e) {
105 $this->logError($e, 'WooCommerce Subscription');
106 }
107 }
108
109 public function disableWooCommerceSettings() {
110 try {
111 $this->woocommerceSettings->disableWooCommerceSettings();
112 } catch (\Throwable $e) {
113 $this->logError($e, 'WooCommerce Settings');
114 }
115 }
116
117 public function synchronizeRegisteredCustomer($wpUserId, $currentFilter = null) {
118 try {
119 $this->woocommerceSegment->synchronizeRegisteredCustomer($wpUserId, $currentFilter);
120 } catch (\Throwable $e) {
121 $this->logError($e, 'WooCommerce Sync');
122 }
123 }
124
125 public function synchronizeGuestCustomer($orderId) {
126 try {
127 $this->woocommerceSegment->synchronizeGuestCustomer($orderId);
128 } catch (\Throwable $e) {
129 $this->logError($e, 'WooCommerce Sync');
130 }
131 }
132
133 public function trackPurchase($id, $useCookies = true) {
134 try {
135 $this->woocommercePurchases->trackPurchase($id, $useCookies);
136 } catch (\Throwable $e) {
137 $this->logError($e, 'WooCommerce Purchases');
138 }
139 }
140
141 public function markAttributionWritesStarted() {
142 try {
143 $this->orderAttributionWriter->markWritesStartedIfActive();
144 } catch (\Throwable $e) {
145 $this->logError($e, 'WooCommerce Order Attribution');
146 }
147 }
148
149 public function writeOrderAttribution($order) {
150 try {
151 $this->orderAttributionWriter->writeForOrder($order);
152 } catch (\Throwable $e) {
153 $this->logError($e, 'WooCommerce Order Attribution');
154 }
155 }
156
157 public function writeOrderAttributionForNewOrder($order) {
158 try {
159 $this->orderAttributionWriter->writeForNewOrder($order);
160 } catch (\Throwable $e) {
161 $this->logError($e, 'WooCommerce Order Attribution');
162 }
163 }
164
165 public function trackRefund($id) {
166 try {
167 $this->woocommercePurchases->trackRefund($id);
168 } catch (\Throwable $e) {
169 $this->logError($e, 'WooCommerce Purchases Refund');
170 }
171 }
172
173 public function extendForm() {
174 try {
175 $this->subscriberRegistration->extendForm();
176 } catch (\Throwable $e) {
177 $this->logError($e, 'WooCommerce Extend Form');
178 }
179 }
180
181 public function onRegister($errors, string $userLogin, ?string $userEmail = null) {
182 try {
183 if (empty($errors->errors)) {
184 $this->subscriberRegistration->onRegister($errors, $userLogin, $userEmail);
185 }
186 } catch (\Throwable $e) {
187 $this->logError($e, 'WooCommerce on Register');
188 }
189 return $errors;
190 }
191
192 public function updateSubscriberEngagement($orderId) {
193 try {
194 $this->subscriberEngagement->updateSubscriberEngagement($orderId);
195 } catch (\Throwable $e) {
196 $this->logError($e, 'WooCommerce Update Subscriber Engagement');
197 }
198 }
199
200 public function updateSubscriberLastPurchase($orderId) {
201 try {
202 $this->subscriberEngagement->updateSubscriberLastPurchase($orderId);
203 } catch (\Throwable $e) {
204 $this->logError($e, 'WooCommerce Update Subscriber Last Purchase');
205 }
206 }
207
208 public function declareWooCompatibility() {
209
210 if (!class_exists('\Automattic\WooCommerce\Utilities\FeaturesUtil')) {
211 return;
212 }
213 try {
214 \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility('custom_order_tables', Env::$pluginPath);
215 \Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility('cart_checkout_blocks', Env::$pluginPath);
216 } catch (\Throwable $e) {
217 $this->logError($e, 'WooCommerce Compatibility');
218 }
219 }
220
221 public function addTrackingData($data) {
222 if (!is_array($data)) {
223 return $data;
224 }
225 return $this->tracker->addTrackingData($data);
226 }
227
228 public function addMailPoetTaskToWooHomePage() {
229 try {
230 if (class_exists(TaskLists::class) && class_exists(Task::class)) {
231 TaskLists::add_task('extended', new MailPoetTask());
232 }
233 } catch (\Throwable $e) {
234 $this->logError($e, 'Unable to add MailPoet task to WooCommerce homepage');
235 }
236 }
237
238 public function addMailPoetMarketingMultiChannel($registeredMarketingChannels) {
239 if (!is_array($registeredMarketingChannels)) {
240 return $registeredMarketingChannels;
241 }
242
243 return $this->marketingChannelController->registerMarketingChannel($registeredMarketingChannels);
244 }
245
246 private function logError(\Throwable $e, $name) {
247 $logger = $this->loggerFactory->getLogger($name);
248 $logger->error($e->getMessage(), [
249 'file' => $e->getFile(),
250 'line' => $e->getLine(),
251 ]);
252 }
253 }
254