diff --git a/mailpoet/lib/Automation/Integrations/MailPoet/SubjectTransformers/OrderSubjectToSubscriberSubjectTransformer.php b/mailpoet/lib/Automation/Integrations/MailPoet/SubjectTransformers/OrderSubjectToSubscriberSubjectTransformer.php index af0dd040e1..9c37a08433 100644 --- a/mailpoet/lib/Automation/Integrations/MailPoet/SubjectTransformers/OrderSubjectToSubscriberSubjectTransformer.php +++ b/mailpoet/lib/Automation/Integrations/MailPoet/SubjectTransformers/OrderSubjectToSubscriberSubjectTransformer.php @@ -6,10 +6,10 @@ use MailPoet\Automation\Engine\Data\Subject; use MailPoet\Automation\Engine\Integration\SubjectTransformer; use MailPoet\Automation\Integrations\MailPoet\Subjects\SubscriberSubject; use MailPoet\Automation\Integrations\WooCommerce\Subjects\OrderSubject; +use MailPoet\Automation\Integrations\WooCommerce\WooCommerce; use MailPoet\Entities\SubscriberEntity; use MailPoet\Segments; use MailPoet\Subscribers\SubscribersRepository; -use MailPoet\WooCommerce\Helper as WooCommerceHelper; class OrderSubjectToSubscriberSubjectTransformer implements SubjectTransformer { @@ -19,13 +19,13 @@ class OrderSubjectToSubscriberSubjectTransformer implements SubjectTransformer { /** @var Segments\WooCommerce */ private $woocommerce; - /** @var WooCommerceHelper */ + /** @var WooCommerce */ private $woocommerceHelper; public function __construct( SubscribersRepository $subscribersRepository, Segments\WooCommerce $woocommerce, - WooCommerceHelper $woocommerceHelper + WooCommerce $woocommerceHelper ) { $this->subscribersRepository = $subscribersRepository; $this->woocommerce = $woocommerce; @@ -74,6 +74,9 @@ class OrderSubjectToSubscriberSubjectTransformer implements SubjectTransformer { return null; } $wcOrder = $this->woocommerceHelper->wcGetOrder($orderId); + if (!$wcOrder instanceof \WC_Order) { + return null; + } $billingEmail = $wcOrder->get_billing_email(); return $billingEmail ? $this->subscribersRepository->findOneBy(['email' => $billingEmail]) : diff --git a/mailpoet/lib/Automation/Integrations/WooCommerce/ContextFactory.php b/mailpoet/lib/Automation/Integrations/WooCommerce/ContextFactory.php index c13d9de599..0a318d26bc 100644 --- a/mailpoet/lib/Automation/Integrations/WooCommerce/ContextFactory.php +++ b/mailpoet/lib/Automation/Integrations/WooCommerce/ContextFactory.php @@ -2,28 +2,26 @@ namespace MailPoet\Automation\Integrations\WooCommerce; -use MailPoet\WooCommerce\Helper as WooCommerceHelper; - class ContextFactory { - /** @var WooCommerceHelper */ - private $woocommerceHelper; + /** @var WooCommerce */ + private $woocommerce; public function __construct( - WooCommerceHelper $woocommerceHelper + WooCommerce $woocommerce ) { - $this->woocommerceHelper = $woocommerceHelper; + $this->woocommerce = $woocommerce; } /** @return mixed[] */ public function getContextData(): array { - if (!$this->woocommerceHelper->isWooCommerceActive()) { + if (!$this->woocommerce->isWooCommerceActive()) { return []; } $context = [ - 'order_statuses' => $this->woocommerceHelper->getOrderStatuses(), + 'order_statuses' => $this->woocommerce->wcGetOrderStatuses(), ]; return $context; } diff --git a/mailpoet/lib/Automation/Integrations/WooCommerce/Subjects/AbandonedCartSubject.php b/mailpoet/lib/Automation/Integrations/WooCommerce/Subjects/AbandonedCartSubject.php index a8e7a19492..a4766af282 100644 --- a/mailpoet/lib/Automation/Integrations/WooCommerce/Subjects/AbandonedCartSubject.php +++ b/mailpoet/lib/Automation/Integrations/WooCommerce/Subjects/AbandonedCartSubject.php @@ -7,9 +7,9 @@ use MailPoet\Automation\Engine\Exceptions\InvalidStateException; use MailPoet\Automation\Engine\Integration\Payload; use MailPoet\Automation\Engine\Integration\Subject; use MailPoet\Automation\Integrations\WooCommerce\Payloads\AbandonedCartPayload; +use MailPoet\Automation\Integrations\WooCommerce\WooCommerce; use MailPoet\Validator\Builder; use MailPoet\Validator\Schema\ObjectSchema; -use MailPoet\WooCommerce\Helper as WooCommerceHelper; /** * @implements Subject @@ -17,11 +17,11 @@ use MailPoet\WooCommerce\Helper as WooCommerceHelper; class AbandonedCartSubject implements Subject { const KEY = 'woocommerce:abandoned_cart'; - /** @var WooCommerceHelper */ + /** @var WooCommerce */ private $woocommerceHelper; public function __construct( - WooCommerceHelper $woocommerceHelper + WooCommerce $woocommerceHelper ) { $this->woocommerceHelper = $woocommerceHelper; } diff --git a/mailpoet/lib/Automation/Integrations/WooCommerce/Subjects/OrderSubject.php b/mailpoet/lib/Automation/Integrations/WooCommerce/Subjects/OrderSubject.php index acece67374..d61a2d1494 100644 --- a/mailpoet/lib/Automation/Integrations/WooCommerce/Subjects/OrderSubject.php +++ b/mailpoet/lib/Automation/Integrations/WooCommerce/Subjects/OrderSubject.php @@ -7,10 +7,10 @@ use MailPoet\Automation\Engine\Integration\Payload; use MailPoet\Automation\Engine\Integration\Subject; use MailPoet\Automation\Integrations\WooCommerce\Fields\OrderFieldsFactory; use MailPoet\Automation\Integrations\WooCommerce\Payloads\OrderPayload; +use MailPoet\Automation\Integrations\WooCommerce\WooCommerce; use MailPoet\NotFoundException; use MailPoet\Validator\Builder; use MailPoet\Validator\Schema\ObjectSchema; -use MailPoet\WooCommerce\Helper; /** * @implements Subject @@ -19,14 +19,15 @@ class OrderSubject implements Subject { const KEY = 'woocommerce:order'; + /** @var WooCommerce */ private $woocommerce; /** @var OrderFieldsFactory */ private $orderFieldsFactory; public function __construct( - Helper $woocommerce, - OrderFieldsFactory $orderFieldsFactory + OrderFieldsFactory $orderFieldsFactory, + WooCommerce $woocommerce ) { $this->woocommerce = $woocommerce; $this->orderFieldsFactory = $orderFieldsFactory; diff --git a/mailpoet/lib/Automation/Integrations/WooCommerce/Triggers/OrderStatusChangedTrigger.php b/mailpoet/lib/Automation/Integrations/WooCommerce/Triggers/OrderStatusChangedTrigger.php index 0b8d38e69c..0ad00417a9 100644 --- a/mailpoet/lib/Automation/Integrations/WooCommerce/Triggers/OrderStatusChangedTrigger.php +++ b/mailpoet/lib/Automation/Integrations/WooCommerce/Triggers/OrderStatusChangedTrigger.php @@ -11,9 +11,9 @@ use MailPoet\Automation\Integrations\WooCommerce\Payloads\OrderStatusChangePaylo use MailPoet\Automation\Integrations\WooCommerce\Subjects\CustomerSubject; use MailPoet\Automation\Integrations\WooCommerce\Subjects\OrderStatusChangeSubject; use MailPoet\Automation\Integrations\WooCommerce\Subjects\OrderSubject; +use MailPoet\Automation\Integrations\WooCommerce\WooCommerce; use MailPoet\Validator\Builder; use MailPoet\Validator\Schema\ObjectSchema; -use MailPoet\WooCommerce; use MailPoet\WP\Functions; class OrderStatusChangedTrigger implements Trigger { @@ -21,15 +21,15 @@ class OrderStatusChangedTrigger implements Trigger { /** @var Functions */ private $wp; - /** @var WooCommerce\Helper */ - private $woocommerceHelper; + /** @var WooCommerce */ + private $woocommerce; public function __construct( Functions $wp, - WooCommerce\Helper $woocommerceHelper + WooCommerce $woocommerceHelper ) { $this->wp = $wp; - $this->woocommerceHelper = $woocommerceHelper; + $this->woocommerce = $woocommerceHelper; } public function getKey(): string { @@ -71,7 +71,7 @@ class OrderStatusChangedTrigger implements Trigger { } public function handle(int $orderId, string $oldStatus, string $newStatus): void { - $order = $this->woocommerceHelper->wcGetOrder($orderId); + $order = $this->woocommerce->wcGetOrder($orderId); if (!$order instanceof \WC_Order) { return; } diff --git a/mailpoet/lib/Automation/Integrations/WooCommerce/WooCommerce.php b/mailpoet/lib/Automation/Integrations/WooCommerce/WooCommerce.php index 474c96b1b5..0e10090a9c 100644 --- a/mailpoet/lib/Automation/Integrations/WooCommerce/WooCommerce.php +++ b/mailpoet/lib/Automation/Integrations/WooCommerce/WooCommerce.php @@ -15,6 +15,13 @@ class WooCommerce { return wc_get_is_paid_statuses(); } + /** + * @return array + */ + public function wcGetOrderStatuses(): array { + return wc_get_order_statuses(); + } + public function isWooCommerceCustomOrdersTableEnabled(): bool { return $this->isWooCommerceActive() && method_exists(OrderUtil::class, 'custom_orders_table_usage_is_enabled') @@ -26,7 +33,11 @@ class WooCommerce { return wc_get_orders($args); } - public function wcGetOrderStatuses(): array { - return wc_get_order_statuses(); + /** + * @param int|bool $order + * @return bool|\WC_Order|\WC_Order_Refund + */ + public function wcGetOrder($order = false) { + return wc_get_order($order); } }